前言
RAG 通过检索相关外部知识信息来增强 LLM 的生成效果。
知识图谱(Knowledge Graph,,KG)和 LLM 是天然的互补技术。LLM 常被视为黑盒模型,难以处理事实性知识,而 KG 则专注于存储和解释这些知识。通过将两者结合,能够弥补 LLM 的不足,提升其准确性和可解释性。
Graph RAG 则将 KG 作为检索信息的来源,通过图谱中的结构化知识来补充 LLM 生成的上下文,从而提高生成回答的准确性和相关性。
Graph RAG 因其强大的性能,在多个行业领域有着广泛的应用:
- 客户服务:通过快速检索历史案例,提高客户支持效率。
- 药物发现:为药物研发提供精准的背景知识。
- 合规报告生成:特别适用于生命科学领域。
- 人才招聘:帮助 HR 系统自动化筛选并匹配候选人。
- 法律研究与写作:为法律专业提供支持。
本文将通过医学领域的例子展示了如何构建一个简单的 Graph RAG 应用:
- 准备数据:将 PubMed 医学期刊数据进行向量化,并转化为 RDF 图。
- 将数据转成 KG:将非结构化数据转化为结构化的 KG,同时保持数据格式的兼容性。
- 使用 Streamlit 构建 APP
- 搜索文章:通过向量数据库进行初步检索,找到与查询最相关的文章。
- 精选术语:使用 MeSH(医学主题词)进行术语过滤,以确保检索到的内容具有高度相关性。
- 过滤与总结:通过将 MeSH 术语应用于过滤,减少信息的冗余和“上下文污染”,最终将筛选后的文章交给 LLM 进行摘要生成。
第一步:准备数据
使用了来自 PubMed 数据库的 5 万篇研究文章数据集。数据集包含文章的标题、摘要,以及由医学主题词表(MeSH)标记的元数据标签。需要注意的是,数据仅包括文章的元信息和摘要,不包含全文。由于数据已经是表格格式并且被MeSH术语标记,因此可以直接处理。
主要工作内容:
- 向量化数据
- 将表格数据向量化,以便用于后续检索和生成。
- 在向量化之前,确保每篇文章都有一个唯一资源标识符(URI)。URI 是导航RDF数据的关键,便于在向量空间和图谱实体之间进行切换。
- MeSH 术语向量集合:创建一个单独的向量数据库集合,用于存储 MeSH 术语。这使用户无需对 MeSH 术语有先验知识即可搜索相关术语。
- RDF 图的处理:可以在向量化之前将数据转化为 RDF 图,但在本应用中并未执行此操作,因为这对结果的提升可能并不显著。
这一步的关键是为数据建立独特的标识符(URI),同时通过向量化技术和 MeSH 术语集合的创建,确保后续能够在知识图谱和向量检索中无缝切换。这种准备方法既高效又能保证数据的语义一致性。
第二步:将数据转成 KG
在这一步,将数据中的每一行转化为 KG 中的一个 **Article(文章)**实体,并为每篇
Article 添加以下属性:
- Title(标题)
- Abstract(摘要)
- MeSH Terms(MeSH 术语)
同时,每个 MeSH 术语也会被转化为 KG 中的独立实体。还需要还为每篇 Article 随机生成两个额外属性:
- Date Published(发布日期) :一个随机日期
- Access(访问次数):1到10之间的随机数
下图展示了数据如何被转化为 KG,显示了 Article 与 MeSH 术语之间的关系。
完成这一步后,数据同时具备了以下两种形式:
- 向量化版本:用于检索和计算。
- 图谱版本(RDF):用于结构化的知识管理。
每个向量都关联了一个 URI,该 URI 对应 KG 中的一个实体。这种设计确保可以在向量数据和 KG 数据之间自由切换,实现高效的双向操作。
这一部分的核心在于将非结构化数据转化为结构化的 KG,同时保持数据格式的兼容性。这种方法不仅增强了数据的语义化管理能力,还为后续的检索和生成操作提供了灵活的工具链支持。
第三步:构建 APP
这款 Graph RAG 应用的用户界面基于 Streamlit 框架。并设计了以下三步交互流程:
1. Search Articles (搜索文章)
- 用户通过输入一个或多个关键词搜索文章。
- 搜索过程完全依赖于向量数据库:
- 用户的搜索关键词会被发送到向量数据库。
- 数据库返回向量空间中最接近该关键词的 10 篇文章。
页面效果:
2. Refine Terms (精选术语)
- 用户可以选择用于筛选结果的 MeSH 术语:
- 由于 MeSH 术语也被向量化,用户可以通过自然语言提示获取最相关的 MeSH 术语。
- 应用程序支持展开术语,显示其替代名称和更具体的概念。
- 用户可以选择多个术语,作为过滤条件。
页面效果:
3. Filter & Summarize (筛选与总结)
- 用户将所选的 MeSH 术语应用为过滤条件,进一步筛选初始返回的 10 篇文章。
- 这种筛选基于 PubMed 文章已经被标记的 MeSH 术语。
- 用户可以输入额外的提示词,将筛选后的文章和提示词一起发送给 LLM。
- 这是应用程序的生成步骤,LLM 会根据用户需求生成结果。
页面效果:
通过三步流程实现了:
- 高效的检索:利用向量数据库快速找到相关的文献。
- 精准的筛选:通过 MeSH 术语过滤,确保上下文相关性。
- 智能生成:结合用户提示和筛选结果,由 LLM 生成定制化的输出。
总结
本教程展示了如何结合向量数据库和知识图谱来显著增强 RAG 应用的效果。通过利用向量相似性进行初步检索,并利用结构化的知识图谱元数据进行过滤和组织,可以构建一个精准、可解释且面向特定领域的系统。
- 专业术语的力量:教程特别强调了 MeSH(医学主题词表)这样的专业控制词汇的价值。这些领域专家精心维护的元数据确保了检索步骤与应用需求的深度契合,同时保持了与其他系统的互操作性。
- 技术的互补性:向量数据库擅长相似性检索,而知识图谱则在提供上下文、结构和语义方面表现突出。两者的结合能最大化各自的优势,提升系统性能。
此外,要让 RAG 应用具备可扩展性,需要引入元数据层来打破数据孤岛,并执行数据治理策略。通过合理的设计,基于领域特定的元数据和强有力的治理框架,可以构建既精准又具备扩展性的 RAG 系统。该方法不仅适用于医学领域,也适用于任何结构化数据与文本信息共存的领域。