在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景。

缘起

关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360 刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的问答效果的几个方面:

  • 在知识整理阶段,用知识图谱将文档内容进行语义化组织;
  • 在意图识别阶段,用知识图谱进行实体别称补全和上下位推理【受控 改写】
  • 在Prompt组装阶段,从知识图谱中查询背景知识放入上下文【精准召 回】;
  • 在结果封装阶段,用知识图谱进行知识修正和知识溯源。【自我修正】

这个分享中,只是粗略的介绍了用知识图谱去语义化组织文档,缺乏深度,于是查阅相关资料,翻到WhyHow.AI 的联合创始人(Co-Founder)Chia Jeng Yang的一篇文Injecting Knowledge Graphs in different RAG stages,这篇文章较为详细的介绍了KG在RAG各个阶段的可能得应用方式,在这里分享给大家。

RAG 阶段

我们将RAG分为下面几个阶段:

  • 阶段1:预处理 ,通常是提取chunk分块之前的预处理。
  • 阶段2/D:chunk提取
  • 阶段3-5:后处理,用检索到的信息生成答案

查询增强(Query Augmentation)**

预处理 阶段 ,这里主要 在执行检索之前,向查询添加上下文。

为什么:有的查询里可能包含一些缩写术语等,需要增加必要的上下文,去修正这些不好的queries

典型的就是,不同的行业有自己专有术语,这个LLM可能并不能准确的理解,从而导致理解错误。比如在英语里,‘beachfront’ homes and ‘near the beach’ homes 代表不同类型的房产(海滨”房屋和“靠近海滩”的房屋),不能互换使用。在预处理阶段注入这一上下文,有助于获得更精确的回答。

KG的一个常见应用场景,也是帮助企业构建缩略词词典,以便搜索引擎可以有效识别问题或文档中的缩略词。

另外,可以使用KG来帮助做多跳推理,也就是做一些query扩展,简单的做法就是在KG中存储实体的查询规则,通过信息化系统,可以让非技术用户也就是运营同学来构建和修改规则及关系,灵活的控制RAG规则。例如,某个规则可以看起来像这样:“当回答有关休假政策的问题时,首先参考办公室人力资源政策文件,然后在文件中查看有关假期的部分“。

再扩散一点,对于特定类型的概念,比如搜索企业家,那么用户可能了解他的个人资料 最新消息 职业生涯等信息,这个可以在kg中建立这种rule。

之前分析过秘塔搜索,应该是基于LLM对query做了一些改写和扩展,比如下图:

LLM 有成本和不可控的因素,用KG rule的方式来做的话,或者两者结合,会更可控,方便运营维护。

chunk 分块提取

其实这里就是最早提到的,如何用知识图谱将文档内容进行语义化组织。这里刘的分享里提到:

文档中包括图表、标题、目录、表格、段落等层级信息,利用知识图谱结构存储文档布局信息,从文档中提取出逻辑层级结构、文本内容、表格内容、Key-Value键值字段、样式信息等。基于对文档的内容信息、版面信息和逻辑信息的分析理解,以结构化数据的形态输出抽取结果。

ppt的图里给了一个示意:

这里的问题是,这样组织了,如何有效的使用,分享里未有效提及。在Yang的文章中,也有提及建立层次化的文档结构。

相关原因:这用于快速识别文档层次结构中相关的chunks,并允许你使用自然语言来创建规则,规定在生成响应之前,查询必须参考哪些文档/块。

  • KG 可以是文档描述的层次结构,引用存储在向量数据库中的chunk
  • KG 也可以是文档层次结构的规则。例如,在一个风险投资基金的 RAG 系统中,可以编写一条自然语言规则,“要回答有关投资者义务的问题,首先检查投资者在投资者投资组合列表中投资了什么,然后检查所述投资组合的法律文件”

另外,还有一种 metadata kg(元数据知识图谱)的方案,也就是建立contextual dictionary,这对于理解重要主题包含在哪些文档块中很有用。这类似于书后的索引:

上面的图片中,给出了重要的概念所在的page,对于RAG系统,其实就是哪些重要的chunk id。比如,可以对于一个实体,定义需要检索的chunk,扩大一点可以是doc。

举个例子,你可以加入自然语言规则,“任何与幸福概念有关的问题,你都必须对定义的contextual dictionary相关块进行详尽搜索,在执行检索时,LLM会转换成一个Cypher 查询语句,从KG里查询关联的chunk,然后从这些chunk里去检索,可以提高速度和准确率。

后处理 递归知识图谱查询

这里提到了一个递归知识图谱查询的概念,大概的意思就是将查询的信息,存储到KG中,如果上下文不足,再次检索,将提取的答案保存在同一KG中,并重复此过程,类似COT一样,用KG来存储检索到的结果,这个感觉demo的意味居多。

实际案例

作者给了一个医疗领域的例子。

比如query:“阿尔茨海默病治疗的最新研究是什么?”利用上述策略来做RAG.

  1. 查询增强: 对于问题——“阿尔茨海默病治疗的最新研究是什么?”通过访问知识图谱,LLM代理可以持续检索有关最新阿尔茨海默病治疗的结构化数据,比如“胆碱酯酶抑制剂”和“美兰汀”。 然后RAG系统随后就可以将问题增强为更具体的问题:“关于胆碱酯酶抑制剂和美兰汀在阿尔茨海默病治疗中的最新研究是什么?”

  2. 文档层次结构和向量数据库检索

    • 使用文档层次结构,确定哪些文档和chunk块与“胆碱酯酶抑制剂”和“美兰汀”最相关,并返回相关答案。
    • 关于“胆碱酯酶抑制剂”的相关信息块提取规则有助于指导查询引擎提取最有用的chunks。
    • 文档层次结构帮助查询引擎快速识别与副作用相关的文档,并开始提取文档内的chunk。
    • contextual dictionary字典帮助查询引擎快速识别与“胆碱酯酶抑制剂”相关的chunk,并开始提取与该主题相关的chunk。
    • 关于“胆碱酯酶抑制剂”的已建立规则指出,关于胆碱酯酶抑制剂副作用的查询还应检查与酶X相关的chunk,这是因为酶X是一个不容忽视的已知副作用,相关的块相应地被包括在内。
  3. 递归知识图谱查询: 使用递归知识图谱查询,初始查询返回了“美兰汀”的一个副作用,称为“XYZ效应”。 “XYZ效应”被存储在一个单独的知识图谱中,用于递归上下文。 LLM被要求检查带有XYZ效应附加上下文的新增强查询。根据以往格式化的答案,它确定需要更多有关 XYZ 作用的信息才能得到满意的答案。然后,它在知识图谱中XYZ效应节点内进行更深入的搜索,从而执行多跳查询。 在XYZ效应节点内,它发现了可以包含在答案中的临床试验A和临床试验B的信息。

  4. 块控制访问 尽管临床试验A和B都包含有用的上下文,但与临床试验B节点相关的元数据标签指出,该节点的访问受用户限制。因此,一个常设的控制访问规则防止将临床试验B节点包含在对用户的响应中。 只有关于临床试验A的信息被返回给LLM,以帮助制定其返回的答案。

  5. 增强响应: 作为后处理步骤,您还可以选择使用特定于医疗行业的知识图谱增强后处理输出。例如,您可以包含针对美兰汀治疗的默认健康警告,或包含与临床试验A相关的任何额外信息。

  6. 块个性化: 存储了用户是研发部门的初级员工的额外上下文,并且用户被限制访问临床试验B的信息,答案是增强了一张提示信息,说明他们被禁止访问临床试验B的信息,并被告知向高级经理寻求更多信息。

总结

知识图谱KG如何更好的利用在RAG里,是一个值得深入探讨的好话题,本文探讨了知识图谱在RAG不同阶段能产生的作用,不妨去试一试,后续我们会基于一些案例来实际探讨。

知识图谱在RAG中的应用探讨的更多相关文章

  1. Dev 日志 | 文章《快速体验知识图谱 OwnThink》中的技术问题

    社区小伙伴反馈在实践文章<使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink>时,遇到了一些问题,Nebula Graph 将在本文对该文章中出现的问题进行 ...

  2. 知识图谱顶刊综述 - (2021年4月) A Survey on Knowledge Graphs: Representation, Acquisition, and Applications

    知识图谱综述(2021.4) 论文地址:A Survey on Knowledge Graphs: Representation, Acquisition, and Applications 目录 知 ...

  3. Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview

    Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview   知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...

  4. 1. 通俗易懂解释知识图谱(Knowledge Graph)

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...

  5. 知识图谱如何运用于RecomSys

    将知识图谱作为辅助信息引入到推荐系统中可以有效地解决传统推荐系统存在的稀疏性和冷启动问题,近几年有很多研究人员在做相关的工作.目前,将知识图谱特征学习应用到推荐系统中主要通过三种方式——依次学习.联合 ...

  6. 知识图谱实体对齐1:基于平移(translation)的方法

    1 导引 在知识图谱领域,最重要的任务之一就是实体对齐 [1](entity alignment, EA).实体对齐旨在从不同的知识图谱中识别出表示同一个现实对象的实体.如下图所示,知识图谱\(\ma ...

  7. 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用

    4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...

  8. NLP知识图谱项目合集(信息抽取、文本分类、图神经网络、性能优化等)

    NLP知识图谱项目合集(信息抽取.文本分类.图神经网络.性能优化等) 这段时间完成了很多大大小小的小项目,现在做一个整体归纳方便学习和收藏,有利于持续学习. 1. 信息抽取项目合集 1.PaddleN ...

  9. Atitit learn by need 需要的时候学与预先学习知识图谱路线图

    Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...

  10. Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx

    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...

随机推荐

  1. 【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions

    问题描述 如何用Microsoft Graph API给应用添加Microsoft Graph Application Permission 解决方法 一:首先获取Microsoft Graph Ap ...

  2. 【Azure Fabric Service】Service Fabric 遇见错误信息记录 - The process/container terminated with exit code:2148734499

    问题描述 Service Fabric 在升级 Application 过程中,发布了新的代码后,启动应用中遇见了如下错误: Error message: System.Hosting' report ...

  3. .Net之多语言配置

    介绍 支持多语言使网站可以覆盖更广泛的受众. ASP.NET Core 提供的服务和中间件可将网站本地化为不同的语言. 本次示例环境:vs2019.net5 配置 无需引用Nuget包即可实现以下功能 ...

  4. 从零开始学Spring Boot系列-集成MySQL

    在Spring Boot中集成MySQL是为了让开发者能够轻松地与MySQL数据库进行交互.本篇文章将指导你如何在Spring Boot 3.2.3项目中使用Gradle来集成MySQL.在此之前,我 ...

  5. Jmeter参数化-用户自定义变量

    一  首先我们先来了解下jmeter 做参数化的目的: 1通过参数化来集中管理配置和测试数据 2通过参数化实现数据驱动测试 二 线程组添加配置元件中的用户自定义变量 添加变量名称,变量值 三 使用变量 ...

  6. vue配置scss全局样式

    安装插件 npm install sass --save-dev 在src文件夹下创建styles文件夹,并创建以下文件 index.scss: scss的入口文件 // 引入清除默认样式 @impo ...

  7. Android自定义View使用系统自有属性

    原文链接: Android自定义View使用系统自有属性 - Stars-One的杂货小窝 本篇默认各位有自定义View的相关知识,本篇只作为一个小知识点补充 有这样一种情况,比如说我们的一个自定义V ...

  8. day11-实现Spring底层机制-01

    实现Spring底层机制-01 主要实现:初始化IOC容器+依赖注入+BeanPostProcessor机制+AOP 前面我们实际上已经使用代码简单实现了: Spring XML 注入 bean (S ...

  9. day07-IO流应用02

    Java坦克大战07 8.IO流应用02 8.3记录退出游戏时敌人坦克坐标/方向,存盘退出 8.3.1思路分析 在Recorder类中,增加一个Vector集合,用来接收从MyPanel类中传入的en ...

  10. IDEA设置Maven华为镜像仓库

    国内开发者由于网络原因,直接从中央仓下载第三包速度较慢或不稳定,使用国内镜像站可以很好解决该问题. 下面就介绍下如何将华为开源镜像站配置为maven的默认第三方库下载源. 1.打开系统用户目录&quo ...