你是否有这样的经历:”知识库文档越来越多,知识库问答却越来越不靠谱,RAG检索到的都是一堆不相关的内容。“

在这个信息爆炸的时代,我们不缺资料,缺的是找到"对的资料"的能力。

元数据标签看似普通,却能很大提升RAG能力。

这篇文章聊一聊它们如何辅助RAG系统真正理解用户意图,精准找到需要的信息。

元数据(Metadata)简单理解为"描述数据的数据"。

想象一下,你手里拿着一本书。书名、作者、出版日期、页数——这些都是元数据。它们虽然不是书的主要内容,却能帮你快速了解这本书的基本信息,决定是否值得一读。

根据《Understanding Metadata: What is Metadata, and What is it For?》(2017年)中的内容,元数据可以细分为以下几类:

元数据类型 定义 通俗解释 示例 主要用途
描述型元数据 描述资源内容,帮助查找或理解资源的信息 告诉你"这是什么"的标签 标题、作者、主题、体裁、出版日期 资源发现
管理型元数据 管理资源所需的信息或与资源创建相关的信息 告诉你"如何管理它"的说明书 包含以下三种子类型  
- 技术型 解码和呈现数字文件所需的技术信息 告诉电脑"如何打开和显示"的指令 文件类型、文件大小、创建日期/时间、压缩方案 资源管理
- 维护型 支持数字文件长期管理和未来迁移的信息 文件的"健康记录"和"维护手册" 校验和(checksum)、完整性验证、保存事件记录 资源维护
- 权限型 附加到内容的知识产权信息 资源的"版权说明"和"使用协议" 版权状态、许可条款、权利持有者 权限控制
结构型元数据 描述资源各部分之间关系的信息 内容的"目录"和"组装说明书" 文档的目录、表格的结构、视频的字幕文件 内容关联
标记语言型元数据 集成元数据并标记内容中的结构或语义特征 文本中的"智能标记"和"格式指令" 段落标记、标题标记、列表标记、名称标记、日期标记 内容解析

看完这个表格,是不是想说,原来元数据可以这么多类型...

与元数据相比,标签(Tag)的概念我们可能相对熟悉很多。

每当我们刷抖音、看B站、浏览知乎时,那些带#号的关键词就是标签

百度百科是这样定义标签的:

标签(Tag)是一种互联网内容组织方式,是相关性很强的关键字,它帮助人们轻松地描述和分类内容,以便于检索和分享。标签将内容的组织权利从网站管理者下放到用户手中,充分体现了web2.0自下而上,用户参与的特点。

简单来说,标签就是用户自己贴上的"便利贴",帮助内容被更好地找到和分类。

标签本质上是“描述型元数据”的一种。但与其他元数据不同,标签更加自由、开放:

  • 元数据通常有严格的结构和规范,而标签不需要遵循预定义的结构
  • 元数据多由系统或专业人员添加,标签则可以由普通用户自由创建
  • 元数据倾向于客观描述,标签则可以包含主观判断和个人理解

这就像是官方档案与个人笔记,两者都有价值,只是应用场景不同。

Dify作为面向开发者的大模型应用开发平台,大概两个月前,加入元数据的支持。

在Dify中,元数据分为两类:

内置元数据(自动提取,不可删改):

  • 文件名、文件类型、上传人、上传时间、更新时间、文件来源、文件大小、字数等

自定义元数据(用户添加,可删改):

  • 内容摘要、文件类别(合同、报表、手册等)、适用行业、适用区域、适用期限、适用实体等

Dify允许在知识库层面统一配置元数据类型,然后在该知识库下的所有文档中设置对应的元数据值。这种设计使得元数据可以在知识库内部统一管理。

比如,开发者可以在”知识检索“节点上,手动设置权限控制、文件类别等元数据过滤,确保用户的问题被约束在指定的知识范围内,从而提升检索的安全性和相关性。

另外,Dify也支持让大模型自动识别用户问题中可能包含的元数据信息,只需要将手动模型改为自动模式,然后选择一个大模型即可(不过自动模式好像看不到实际提取的元数据的日志,所以不能方便的知道是否生效)。

关于dify的元数据,再补充3点:

  1. 如果知识检索节点上添加了多个知识库,元数据选择功能将不可用
  2. Dify的元数据没有开放给应用侧的实际用户使用(如在问答页面)
  3. Dify还支持通过标记语言型元数据(如分段标识符)来优化文档分段,让RAG的粒度控制更精准。

再来看ima,ima是一个以知识库为核心的智能工作台,更注重终端用户体验,将标签的能力直接交到用户手中。

  • 在笔记/首页:可以通过@选择多个知识库,但不能选择标签
  • 在知识库内:可以通过@选择多个标签,但不能选择其他知识库

这种设计看似限制,实则是深思熟虑的用户体验考量:

  1. 不同场景下用户意图明显不同(笔记中关注"从哪些库获取",知识库中关注"找哪类信息")
  2. 避免跨知识库标签不一致导致的检索失效,因为较少有一个文档同时打上不同知识库里的标签,所以可能经常检索不到文档
  3. 减轻用户同时思考两个维度(知识库和标签)的认知负担

此外,ima还支持了结构型元数据(文件夹),让用户可以通过直观的层级结构组织文件,提供了另一种检索维度。

Dify允许应用开发者和管理员通过描述型和管理型元数据限定RAG检索范围,允许用户通过标记语言型元数据,对文件段落进行标记,从而得到更好的分段;

ima允许应用的终端用户通过描述型元数据(标签)限定RAG检索范围、通过结构型元数据(目录)组织知识库中的文件。

结构型元数据,Dify没用到,ima用来组织知识库里的文件,但不清楚是否在RAG层面用到。

既如此,如果在RAG上使用结构型元数据会如何?比如,目录。

目录的层次化特点与标签的扁平化形成鲜明对比。

试想,用户提问的时候,并不总是会主动设定标签,那么如何在无标签情况下提升检索精准度?

一个思路是:将当前知识库目录结构与用户问题一起给大模型,让大模型选择最相关的目录分支,然后仅在这些分支下的文件中RAG。

就像你不会直接在整本书中逐页寻找信息,而是先看目录,找到可能包含所需信息的章节,然后重点查看那些章节。

目录的层级关系比离散的标签能提供更丰富的语义信息,也比让AI从零开始提取标签更加可靠。

以上,元数据可以通过以下四种方式显著提升RAG效果:

1. 利用描述型元数据约束RAG检索范围

让用户手动选择标签、文件类型等元数据,将检索限定在特定范围内。

例如,用户想了解"A部门本周的工作情况",可以选择"A部门"、"周报"这两个标签,并将"提交日期"设为本周,然后提问"帮我总结一下本周A部门的工作情况"。

2. 利用结构型元数据增加RAG召回路径

通过目录结构引导AI识别最相关的内容分支,优化检索范围。

比如,用户问"新员工入职流程是什么?"时,AI可以首先识别出最相关的目录是"人力资源/招聘流程",然后仅在这个目录下的文档中检索,大幅提高准确性。

3. 利用管理型元数据实现RAG权限控制

为文件标注权限级别,确保用户只能检索到自己权限范围内的知识。

例如,公司内不同文档设置不同权限级别(全体员工、管理层、特定部门等),系统会根据用户身份自动过滤检索范围。

4. 利用标记语言型元数据优化文档分段

通过特殊标记提升文档分段效果,让RAG能够更准确地定位文本分段。

例如,系统可以让用户在在线预览中对分段效果不佳的内容进行标记,然后系统重新分段。

写在最后

在这个信息爆炸的时代,我们面临的不再是获取信息的难题,而是如何从海量信息中找到准确的,够用的内容。

对于知识,不仅仅是用知识库去管理,更是要用我们的认知去经营。

别继续幻想大模型+RAG就可以搞定知识库,我们需要带着元数据、标签、用户,一起参与进来。

当再遇到RAG的问题,先思考一下,元数据和标签,准备好了吗?

以上,既然看到这里了,如果觉得不错,随手点个赞、分享、推荐三连吧,我们,下次再见。

AI粉嫩特攻队 —— 内卷不灭,奋斗不止! 关注我,帮你把时间还给创造!

作者:秋水
互动交流,请联系邮箱:fennenqiushui@qq.com

RAG越来越不准?从Dify和ima知识库看元数据与标签如何让大模型更懂你的更多相关文章

  1. 谷歌 AI 负责人谈2020 年机器学习趋势:多任务和多模态会有大突破

    ​在上周加拿大温哥华举行的NeurIPS会议上,机器学习成为了中心议题. 来自世界范围内约1.3万名研究人员集中探讨了神经科学.如何解释神经网络输出以及人工智能如何帮助解决现实世界中的重大问题等焦点话 ...

  2. 大规模 Transformer 模型 8 比特矩阵乘简介 - 基于 Hugging Face Transformers、Accelerate 以及 bitsandbytes

    引言 语言模型一直在变大.截至撰写本文时,PaLM 有 5400 亿参数,OPT.GPT-3 和 BLOOM 有大约 1760 亿参数,而且我们仍在继续朝着更大的模型发展.下图总结了最近的一些语言模型 ...

  3. 解决setInterval计时器不准的问题

    在js中如果打算使用setInterval进行倒数,计时等功能,往往是不准确的,因为setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行.而下一次触发时间则是在s ...

  4. 【转载】C++知识库内容精选 尽览所有核心技术点

    原文:C++知识库内容精选 尽览所有核心技术点 C++知识库全新发布. 该知识库由C++领域专家.CSDN知名博客专家.资深程序员和项目经理安晓辉(@foruok)绘制C++知识图谱,@wangshu ...

  5. 变得“不正经”的CES,竟然越来越好玩了

    在所有科技界的展会中,国人最熟悉的当属CES.作为科技行业的风向指示标,CES一直在扮演着重要的潮流指引者角色.不过,现在的CES似乎变得越来越"不正经"了!原本CES是国际消费类 ...

  6. Improving Commonsense Question Answering by Graph-based Iterative Retrieval over Multiple Knowledge Sources —— 基于多知识库迭代检索的常识问答系统

    基于多知识库迭代检索的问答系统 论文地址 背景 常识问答任务需要引入外部知识来帮助模型更好地理解自然语言问题,现有的解决方案大都采用两阶段框架: 第一阶段 -- 从广泛的知识来源中找到与给定问题相关的 ...

  7. AI中台——智能聊天机器人平台的架构与应用(分享实录)

    内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...

  8. 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章

    不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整    理 | Leo 出   ...

  9. JavaScript的基准测试-不服跑个分?

    原文:Bulletproof JavaScript benchmarks 做JavaScript的基准测试并没有想的那么简单.即使不考虑浏览器差异所带来的影响,也有很多难点-或者说陷阱需要面对. 这是 ...

  10. 从Bayesian角度浅析Batch Normalization

    前置阅读:http://blog.csdn.net/happynear/article/details/44238541——Batch Norm阅读笔记与实现 前置阅读:http://www.zhih ...

随机推荐

  1. go 密码 hash 加密

    目录 bcrypt加密算法原理和应用 简单使用 一起实现一个demo 获取用户输入的密码 Hash & Salt 用户的密码 目前我们做了什么 验证密码 更新 Main 函数 全部代码 bcr ...

  2. 可视化|MapBoxGL

    注册Proton Mail 用户名 密码 人机验证 昵称 设置恢复方法-选择稍后再说-确定 注册MapBoxGL 填写后 Finish creating your account 一开始之前记得选择U ...

  3. 【EasyPR】Linux安装使用EasyPR开源车牌识别系统

    [EasyPR]Linux安装使用EasyPR开源车牌识别系统 零.安装OpenCV - 3.2.0 我使用的是Kali系统,基于Debian的一个Linux发行版本. 1.配置系统的软件源(配置正确 ...

  4. Kubernetes基础教程-通过部署Nginx快速学习基本使用命令

    1.验证节点信息 1.1.查看控制平面组件的状态 [root@linux-servertwo software]# kubectl get cs Warning: v1 ComponentStatus ...

  5. C# 窗口过程消息处理 WndProc

    C# 窗口过程消息处理 WndProc WinForm WndProc 在 WinForm 中一般采用重写 WndProc 的方法对窗口或控件接受到的指定消息进行处理 示例:禁止通过关闭按钮或其他发送 ...

  6. verilog利用线性插值实现正弦波生成器(dds)

    verilog实现线性插值实现正弦波生成器 ​ 最近在项目上遇到一个需要在低资源FPGA上实现FFT逻辑的项目,而且要求实现窗函数.对于窗函数来说,莫非是实现正弦波生成器,正弦波生成器可以利用DDS模 ...

  7. 用 .NET NativeAOT 构建完全 distroless 的静态链接应用

    前言 .NET NativeAOT 想必不少开发者都已经很熟悉了,它可以将 .NET 程序集直接编译到原生的机器代码,从而可以脱离 VM 直接运行.简单的一句 dotnet publish -c Re ...

  8. CM311-1A魔百和刷armbian或openwrt系统包

    系统包下载链接:Openwrt:阿里云盘链接:https://www.aliyundrive.com/s/tEemRbs1TYB已失效下载后请解压!!!!!!!!! Armbian:链接:https: ...

  9. Python科学计算系列11—几何绘图

    1.显函数图像绘制 例:绘制y=sinx的图像 代码如下: from sympy import * x = symbols('x') plot(sin(x), (x, -2 * pi, 2 * pi) ...

  10. 测试用例Xmind转XML格式教程

    运行环境: Python版本:3.7(Python2.x和Python2.x均可) 第三方库:xmind2testlink/xmind2testcase 1.安装Python(以Python3.x为例 ...