跳到主要内容 从传统 RAG 到 GraphRAG:大模型与知识图谱的融合 | 极客日志
Python AI 算法
从传统 RAG 到 GraphRAG:大模型与知识图谱的融合 本文探讨了从传统检索增强生成(RAG)向 GraphRAG 的演进。传统 RAG 依赖向量相似度检索,在处理复杂关联查询时存在局限。GraphRAG 引入知识图谱,利用结构化节点和关系增强上下文理解。通过 Neo4j 和 LangChain 的演示,展示了 GraphRAG 在回答涉及实体关系、对比分析等复杂问题时,比基础 RAG 提供更准确、更具深度的答案。尽管效果显著,GraphRAG 仍高度依赖底层知识图谱的质量。文章还分析了未来发展趋势及实施注意事项。
从传统 RAG 到 GraphRAG:大模型与知识图谱的融合
摘要 从传统检索增强生成(RAG)向 GraphRAG 的转变,通过整合知识图谱增强了大型语言模型(LLM),使其能够对复杂查询提供更加细致和准确的响应。GraphRAG 的有效性取决于底层知识图谱的质量和广度,以及 RAG 工程层面的处理。
引言 大型语言模型(LLMs)在固定的数据集上运行,其知识截止于最后一次训练更新时。例如,ChatGPT 的训练数据截至 2021 年 9 月。这种限制可能导致不准确或过时的回复,因为模型可能会'产生幻觉'信息。在不重新训练或微调的情况下更新它们以获得新信息或增强上下文理解可能是具有挑战性的,涉及资源和人力。
检索增强生成 (RAG) 检索增强(Retrieval-Augmented Generation,简称 RAG)被引入为一种技术,旨在通过合并来自外部可靠知识库的信息来改善大型语言模型(LLMs)。
RAG 背后的原则很简单:当要求 LLM 回答问题时,它并不仅依赖于已知的内容。相反,它首先查找来自特定知识源的相关信息。这种方法确保生成的输出引用了大量上下文丰富数据,通过当前和相关信息的增强。
RAG 主要通过两阶段过程来发挥作用:检索 和内容生成 。
检索阶段 在检索阶段,算法会定位并收集与用户提示或查询相关的信息片段。
举个例子,如果您正在寻找福建炒面的食谱,您的提示可能是'福建炒面的配料是什么?'。系统识别具有与查询语义相关内容的文档,并使用一种相似度度量(通常是余弦相似度)计算相关性,计算它们向量之间的相似度。
在汇总外部知识之后,系统将其附加到用户的提示内容中,并将其作为丰富的输入发送到语言模型。
内容生成阶段 在随后的生成阶段,LLM 将这个增强的提示与自己的训练数据表示结合起来,以生成针对用户查询定制的回复。这种回复提供了个性化和可验证信息的混合,适用于诸如聊天机器人之类的应用程序。
为什么 RAG 如此重要 在当今的技术风景中,LLM 驱动着许多自然语言应用,能够理解或生成类似人类的文本。尽管非常强大,但这些模型有时可能表现不佳。有时,它们在生成不正确的响应上可能过于自信,以至于人们可能很容易被它们极具说服力的论点所说服。
RAG 试图通过指导 LLM 从可信来源获取信息来减轻这些问题,从而保持模型输出的相关性和准确性。
RAG 的限制 生活中的一切事物一样,传统的 RAG 方法存在复杂性和挑战。虽然在增强 LLM 能力方面具有开创性,但 RAG 也存在一定的限制,可能会影响它们的有效性和适用性。
其中一个主要挑战涉及检索信息的准确性和数据源的多源异构性。对于 RAG 要发挥作用,它经常依赖于多个外部来源,这些来源的格式、标准和可靠性水平可能各不相同(如 PDF、Flat files、Markdown、CSV、Web 内容等)。
RAG 的实施也面临着模糊查询或需要深刻理解背景的问题。这些问题,作为技术设计固有的问题,主要源自检索过程,有时会忽略对精确响应至关重要的细微差别。上下文很重要,逗号的位置也很重要。
RAG 的提升 RAG 系统的检索准确性和效率的提升是自然语言处理和机器学习领域的一个持续研究方向。有几种策略可以采取来实现这些改进,但我想强调两个值得关注的改进,这两个改进可以利用当今的技术来实现:
实施更复杂的检索算法 :从而更好地理解查询的语义,可以提高获取文档的相关性。
高效地对知识库进行索引 :加快检索过程,同时不牺牲结果的质量。
这就引出了我们的下一个话题:Graph RAG: RAG x Knowledge Graphs(知识图谱)。
GraphRAG: 基于知识图谱的检索增强 GraphRAG 建立在 RAG 的概念基础之上,同时利用了知识图谱(KGs)。这种创新方法,由 NebulaGraph、Neo4j、微软等提出,通过整合图数据库改变了 LLMs 解释和响应查询的方式。
GraphRAG 通过将 KGs 中的结构化数据整合到 LLM 的处理中运行,为模型的响应提供了更加细致和充分的依据。KGs 是真实世界实体及其之间关系的结构化表示,由节点和边组成。节点代表诸如人、地点、物体或概念等实体,边代表这些实体之间的关系或连接。
这种结构极大地提高了 LLMs 生成明智回应的能力,使模型能够访问精确和上下文相关的数据。GraphRAG 的创新在于将图数据库与 LLMs 集成,丰富模型的上下文,然后生成响应。
一些热门的图数据库产品是 Ontotext、NebulaGraph 和 Neo4j。
什么使 GraphRAG 具有重要意义 随着 LLMs 在精密度和能力方面不断增长,Graph RAG 有潜力对人工智能领域产生重大影响。以下是我对这种整合发展的设想:
未来的 LLMs 预计将展示对复杂查询和推理能力的改进理解 。Graph RAG 可以利用这些进展提供更精确和有上下文的答案。从知识图谱中获取的结构化知识,结合更复杂的 LLMs,可能会导致人工智能在理解抽象概念、推理并产生细致的回应方面取得突破。
动态更新与无缝整合 。随着 LLMs 看似不可遏制的进展,它们与知识图谱的整合可能会变得更加动态和无缝。这可能涉及基于全球事件或发现的知识图谱的实时更新。LLMs 可以通过整合从用户互动或其他数据源收集到的新信息,在自动增强和更新知识图谱方面发挥作用。使用强化学习从人类反馈(RLHF)和强化学习从 AI 反馈(RLAIF)等技术可以进一步帮助将模型与人类偏好保持一致。
计算效率和可扩展性 。随着 NVIDIA 努力实现人工智能计算的民主化,未来 LLMs 和 Graph RAG 实现的进展将侧重于提高计算效率和可扩展性。这一转变将使 Graph RAG 能够在更广泛的应用程序中使用,包括那些需要实时响应或在资源有限的环境中运行的应用程序。
跨领域的知识传递 。未来预计 LLMs 在多个领域拥有更广泛和更深入的知识。Graph RAG 可以促进跨不同领域的知识传递,从而能够生成利用不同领域信息的见解或解决方案。例如,应用认知科学的发现可能会导致开发更自然的人机交互模型,或将网络安全与心理学相结合可能提高安全措施的有效性。
互操作性标准 。随着 Graph RAG 技术的发展,采用像资源描述框架(RDF)这样的标准用于知识图谱可以提高各种系统之间的互操作性。这可能意味着不同的实施方案相互作用和协作,从而推动更广泛的采用和创新的推动。
Graph RAG 演示 对于这次演示,我们将使用 Govtech 的开发者门户站点上的产品信息作为我们的知识库。
环境设置
使用 Neo4j Desktop 启动 Neo4j 本地实例。
使用 LangChain 在本地连接到 Neo4j 数据库。好消息是 LangChain 具有一个可供使用的模板,方便快速设置。
提取 使用提示工程(Prompt Engineering)和 LLM 来提取信息、节点及其连接。以下是一个提示的示例:
You are engineered for organising data into knowledge graphs.
- **Nodes**: Represent entities and ideas.
- The objective is to ensure the knowledge graph is straightforward and intelligible for broad use.
- **Uniformity**: Stick to simple labels for nodes. For instance, label any entity that is an organisation as "company" , rather than using terms like "Facebook" or "Amazon" .
- **Identifiers for Nodes**: Opt for textual or comprehensible identifiers over numerical ones.
- Integrate numerical information directly as attributes of nodes.
- **Integrated Dates/Numbers**: Refrain from creating distinct nodes for dates or numbers, attaching them instead as attributes.
- **Format for Properties**: Use a key-value pairing format .
- **Avoiding Quotation Marks**: Do not use escaped quotes within property values.
- **Key Naming**: Adopt camelCase for naming keys, such as `dateTime`.
- **Entity Uniformity**: Ensure consistent identification for entities across various mentions or references.
Strict adherence to these instructions is mandatory. Non-adherence will result in termination.
图谱构建 使用 CSVLoader 和文档分割来处理我们的文档。将提取的信息映射到图节点和关系,通过我们的提取管道处理文档并将信息存储在 Neo4j 中。
整个过程将近一个小时,导致最终提取的节点标签列表。不幸的是,并非所有节点标签都对我们的上下文有用或符合我们的需求。例如,可能会提取出 Feedbackstatus 或 Header 等无意义标签。
{
"identity" : 1040 ,
"labels" : [ "Feedbackstatus" ] ,
"properties" : {
"id" : "Feedback-Success" ,
"message" : "Sent. Thank you for the feedback!"
} ,
"elementId" : "4:81cd2613-0f18-49c1-8134-761643e88b7a:1040"
}
评估与改进 我们将指定 LLM 应提取哪些节点标签来完善我们的方法。
permissible_nodes_to_extract = [
"Aisubfield" ,
"Application" ,
"Cloudservice" ,
"Concept" ,
"Digitalsolution" ,
"Division" ,
"Entity" ,
"Feature" ,
"Fundinginitiative" ,
"Initiative" ,
"Link" ,
"Location" ,
"Organization" ,
"Person" ,
"Platform" ,
"Policy" ,
"Program" ,
"Resource" ,
"Role" ,
"Schema" ,
"Service" ,
"Standard" ,
"Technology" ,
"Technologyplatform" ,
"Technologystack" ,
"Webframework" ,
"Webresource" ,
"Website"
]
浏览我们新构建的知识图谱,使用 Neo4j 浏览器。经过所有的努力,魔法终于开始了!考虑以下查询:
问:'告诉我更多关于 AiSay 的信息,包括开发这个产品的人员,以及它的好处和应用。还请告诉我 AiSay 如何独特。'
基础 RAG 回答 :AiSay 是新加坡政府开发的 AI 驱动文档阅读器。它可以自动检测、扫描和理解各种类型的文档...(省略部分重复描述)。AiSay 的独特功能包括其提供多种文档类型的结构化响应能力...
GraphRAG 回答 :AiSay 是新加坡政府开发的 AI 驱动文档阅读器。它是一个文档解析器,可以提供结构化的响应,从各种文档中提取和集成信息到现有系统中。AiSay 可以自动检测、扫描和理解各种文档,包括手写笔记、印刷文章、多语言文本以及结构化/非结构化文档。与传统的光学字符识别(OCR)系统不同,AiSay 可以为图像(JPEG、PNG、TIFF)和 PDF 文件等文档提供结构化的响应。
减少手动错误,提高数据准确性,因为从文档上传中自动填充关键数据以进行表单提交。
改善数字服务体验,因为一旦文档上传,AiSay 就可以自动填充关键数据。
AiSay 在为各种文档类型提供结构化响应的能力方面独一无二,支持各种格式和语言。它还为其每个任务提供信心分数,以确定是否需要额外支持,从而在具有高置信度水平的任务中最大程度减少人工干预。此外,由于其在云端无服务器上托管,AiSay 具有可扩展性,能够处理大文件大小和异步提取过程。
相对于传统的 RAG 方法,Graph RAG 的优势在这种情况下是显而易见的。这种回应不仅显示了准确性,而且充满了上下文和关系,提供了标准 RAG 方法所不具备的深度水平。
Graph RAG 的秘密在于它分析用户的查询能力,定位图数据库中的相关数据,并将这种背景见解纳入指导 LLM 回应的过程中。这种方法利用了一个相互连接的信息网络(传统方法可能会忽略),从而导致对查询更加微妙的理解。
Q:'我需要从我的一些文档中删除敏感信息。Govtech 提供哪些具有这些功能的产品?'
基础 RAG :Govtech 提供 Cloak 和 FileSG 两款产品,这些产品具有帮助删除文档中敏感信息的功能。
Graph RAG :GovTech 提供一款名为 Cloak 的产品,它是一个符合政策的数据去标识的中心隐私工具包。这个产品帮助公务员应用数据去标识技术到数据集,并在符合指南的情况下审查重新识别风险。
基础 RAG :提供的文件没有直接将 DIAB(Data Infrastructure in a Box)与任何名为 SIaC 的东西进行对比,也没有提到 SIaC。因此,根据给定的上下文,不可能直接概述 DIAB 与 SIaC 之间的区别。
Graph RAG :DIAB(数据基础设施)和 SIaC(安全基础设施即代码)都是旨在为政府机构简化云基础设施部署的产品。但是,它们在特定重点和功能上存在差异。
DIAB 作为在政府在商业云(GCC)上部署和维护数据基础设施的加速器。它帮助机构设计、部署和保护数据基础设施,关注数据工程考虑,并提供基础设施即代码(IaC)模板。
另一方面,SIaC 提供了用于以安全、符合规范并以自动方式部署云基础设施的可定制模板。它关注云服务提供商管理服务和工具的安全配置,提供模块化且易于适应的模板。
总之,虽然 DIAB 和 SIaC 均旨在简化政府机构的云基础设施部署,但 DIAB 具体针对数据基础设施部署,并侧重于数据工程方面的考虑和 IaC 模板,而 SIaC 专注于安全和符合规范的云基础设施部署,提供可定制的模板和模块化设计。
结论 从传统的检索增强生成(RAG)转变为 GraphRAG 代表了我们与大型语言模型(LLMs)互动方式的重要一步。这种过渡解决了一个根本性挑战:如何提高 LLMs 提供上下文准确答案给复杂查询的能力。
比较这两种方法时,GraphRAG 在处理上下文复杂查询方面的优势变得明显,传统的 RAG 技术经常未能解决上下文复杂问题。相比之下,GraphRAG 利用了更复杂的知识网络,提供了捕捉查询微妙之处更深刻理解的响应。
然而,GraphRAG 的效果并非能解决一切问题的银弹。它仍然极大地依赖于底层知识图谱的质量、深度和广度。在知识图谱受限或偏向特定领域的情况下,GraphRAG 的表现可能不会超过传统的 RAG 方法。
也就是说,这种过渡有望带来更好地反映人类思维和发现的人工智能系统。为了最大化效果,建议在实际应用中注意以下几点:
图谱质量优先 :投入资源清洗和构建高质量的知识图谱,确保实体和关系的准确性。
混合检索策略 :结合向量检索和图遍历,根据查询类型动态选择最佳路径。
持续优化 :监控 LLM 的输出质量,定期更新图谱数据以适应新知识。
成本控制 :图查询可能比向量搜索消耗更多计算资源,需在设计时考虑延迟和成本平衡。
通过合理实施,GraphRAG 将成为构建下一代智能应用的关键技术之一。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online