赞
踩
检索增强生成(RAG)作为一种强大的技术,已成为解决大型语言模型(LLM)关键局限性的有效手段。通过利用从各种来源检索到的相关数据来增强 LLM 提示,RAG 确保 LLM 的响应是事实依据的、准确的,并且没有错觉。然而,RAG 系统的准确性在很大程度上依赖于它们获取相关、可验证信息的能力。使用基于向量存储的语义搜索构建的简单 RAG 系统,往往无法做到这一点,尤其是在需要推理的复杂查询中。此外,这些系统在发生错误时是模糊的,难以排除故障。
在本文中,我们探讨了 GraphRAG,这是一种构建 RAG 系统的优越方法。GraphRAG 是可解释的,利用图关系来发现和验证信息,并已成为现代人工智能应用中的前沿技术。
什么是 GraphRAG?
GraphRAG 是一种 RAG 系统,结合了知识图谱和大型语言模型(LLM)的优势。在 GraphRAG 中,知识图谱作为事实信息的结构化资源库,而 LLM 充当推理引擎,解释用户查询,从图中检索相关知识,并生成连贯的响应。
新兴研究表明,GraphRAG 显著优于基于向量存储的 RAG 系统。研究还表明,GraphRAG 系统不仅提供更好的答案,而且成本更低、可扩展性更强。
要理解原因,让我们看看知识在向量存储和知识图谱中表示的基本机制。
理解 RAG:GraphRAG 的基础
RAG 是一个首先在 2020 年的论文中提出的术语,现在已成为构建 LLM 驱动应用程序的常见架构模式。RAG 系统使用检索模块从知识源(例如数据库或知识库)中查找相关信息,然后使用生成模块(由 LLM 驱动)基于检索到的信息生成响应。
RAG如何工作:检索与生成
在RAG的检索过程中,您根据用户的查询从知识来源中找到最相关的信息。这通常是通过使用诸如关键词匹配或语义相似性等技术来实现的。然后,您使用这些信息提示生成模块,以利用LLMs生成响应。
在语义相似性中,例如,数据被表示为由AI嵌入模型生成的数值向量,这些向量试图捕捉其含义。前提是,相似的向量在向量空间中相互靠近。这使您能够使用用户查询的向量表示,通过近似最近邻(ANN)搜索获取相似的信息。
关键词匹配则更为简单,您使用准确的关键词匹配来查找信息,通常使用诸如BM25等算法。
RAG的局限性以及GraphRAG如何解决这些问题
基于关键词或相似性搜索构建的简单RAG系统在需要推理的复杂查询中表现不佳。原因如下:
假设用户提出了一个查询:谁导演了那部科幻电影,该电影的主角也出演了《荒野猎人》?
一个标准的RAG系统可能:
检索关于《荒野猎人》的文件
查找关于《荒野猎人》演职人员的信息
但未能确认主演莱昂纳多·迪卡普里奥出演过其他电影,并随后确定其导演
类似上述的问题要求RAG系统对结构化信息进行推理,而不是单纯依赖关键词或语义搜索。
理想的过程应该是:
识别主角
遍历演员的电影
检索导演
要有效地创建能够回答此类查询的系统,您需要一个能够推理信息的检索器。
进入GraphRAG
GraphRAG的好处:它有什么独特之处
知识图谱通过互联的节点和实体捕捉知识,以结构化的形式表示关系和信息。研究表明,它与人类大脑结构化信息的方式相似。
在以上示例中,知识图谱系统将使用以下图表来得出正确的答案:
GraphRAG的回应将是:莱昂纳多·迪卡普里奥在《荒野猎人》中担任主角,也出演了克里斯托弗·诺兰导演的《盗梦空间》
复杂查询是人际互动的自然表现。它们可以在各种领域中出现,从客户聊天机器人到搜索引擎,或在构建人工智能代理时。因此,随着我们构建越来越多面向用户的人工智能系统,GraphRAG逐渐受到关注
与传统的RAG相比,GraphRAG系统提供了许多优势
增强知识表示:GraphRAG能够捕捉实体和概念之间复杂的关系
可解释和可验证:GraphRAG允许你可视化和理解系统是如何得出其响应的,这有助于在得到错误结果时进行调试
复杂推理:LLM的集成使GraphRAG能够更好地理解用户的查询,并提供更相关和连贯的响应
知识来源的灵活性:GraphRAG可以适应各种知识来源,包括结构化数据库、半结构化数据和非结构化文本
可扩展性和效率:使用快速知识图谱存储如图数据库构建的GraphRAG系统能够处理大量数据并提供快速响应。研究人员发现,基于GraphRAG的系统在生成LLM响应时需要比传统方法少26%到97%的token,因为它提供了更相关的数据
常见的RAG使用案例和挑战
GraphRAG是否解决了典型RAG系统必须处理的使用案例?传统的RAG系统在各个领域都有应用,包括:
问题回答:通过检索相关信息并生成全面的答案来解决用户查询
摘要:将冗长的文档浓缩为简明的摘要
文本生成:根据给定信息创建不同的文本格式(例如产品描述、社交媒体帖子)
推荐系统:根据用户偏好和项目属性提供个性化推荐
然而,这些系统通常会遇到以下挑战:
不准确的检索:基于向量的相似性搜索可能会检索到无关或部分相关的文档
有限的上下文理解:难以捕捉查询或文档的完整上下文
事实性和幻觉:可能生成不正确或误导的信息
效率:由于大量的向量数据,特别是在大规模应用中,资源消耗较高
事实上,研究人员已确定传统RAG系统存在的许多失败点
GraphRAG如何解决RAG的局限性
GraphRAG解决了上述许多局限性,因为它能够对数据进行推理。GraphRAG系统可以:
改善信息检索。通过理解实体之间的基本联系,GraphRAG 可以更准确地识别相关信息 。
增强上下文理解。知识图谱为查询理解和响应生成提供了更丰富的上下文。
减少幻觉。通过将响应建立在事实知识上,GraphRAG 可以减轻生成错误信息的风险。
优化性能。向量存储可能很昂贵,尤其对于大规模数据集,知识图谱通常可以更加高效。
GraphRAG架构深入探讨
现在我们知道GraphRAG如何改进简单的RAG,让我们来看看它的基本架构。
GraphRAG架构的关键组件
知识图谱:信息的结构化表示,捕获实体及其关系
图数据库:一种将查询图与知识图谱进行比较的机制
LLM:一种大型语言模型,能够根据提供的信息生成文本
要创建一个GraphRAG,您通常需要构建一个执行以下步骤的系统:
2. 查询处理
查询理解:分析用户的查询以提取关键实体和关系。
查询图生成:基于提取的信息构建查询图,表示用户的意图。
3. 图匹配和检索
图相似性:将查询图与知识图谱进行比较,以找到相关的节点和边。
文档检索:基于图匹配结果,检索相关文档以进行后续处理。
4. 响应生成
上下文理解:处理检索到的文档以提取相关信息。
响应生成:大型语言模型基于从检索到的文档和知识图谱中结合的知识生成响应。
实施GraphRAG:策略和最佳实践
成功的GraphRAG系统的基石是精心构建的知识图谱。图谱对基础数据的深刻和准确的表示越深入,系统推理和生成高质量回应的能力就越强。
以下是一些关键因素,您应该牢记。
知识图谱构建
数据质量:确保数据干净、准确且一致,以构建可靠的知识图谱。
图数据库选择:选择合适的图数据库,要求高效且可扩展。
模式设计:定义知识图谱的模式。考虑实体类型、关系类型和属性。
图谱填充:高效地用从基础数据中提取的实体和关系填充图谱。
查询处理和图匹配
查询理解:使用适当的LLM从用户查询中提取关键实体和关系。
检索与推理:确保图数据库能够根据您的Cypher查询找到知识图谱中的相关节点和边。
LLM集成
LLM选择:选择能够理解和生成Cypher查询的LLM。OpenAI的GPT4o、Google的Gemini或更大的Llama 3.1或Mistral模型都能很好地工作。
提示工程:制定有效提示,引导LLM从知识图谱回应中生成所需输出。
微调:考虑对LLM进行特定任务或领域的微调,以提高性能。
评估和迭代
指标:定义相关指标以衡量GraphRAG系统的性能(例如准确性、精确度、召回率、F1分数)。使用像Ragas这样的系统来评估您的GraphRAG性能。
可视化和改进:监控系统性能,可视化您的图谱,并对知识图谱、查询处理和LLM组件进行迭代。
GraphRAG工具和框架
一系列开源工具正在出现,这些工具简化了创建知识图谱和GraphRAG应用的过程。例如,GraphRAG-SDK利用图数据库和OpenAI实现了知识图谱的高级构建和查询。它允许:
模式管理:您可以定义和管理知识图谱模式,既可以手动定义,也可以从非结构化数据中自动生成。
知识图谱:构建和查询知识图谱。
OpenAI集成:与OpenAI无缝集成以实现高级查询。
使用GraphRAG-SDK,创建知识图谱的过程简单如下:
# Auto generate graph schema from unstructured data
sources = [Source("./data/the_matrix.txt")]
s = Schema.auto_detect(sources)
# Create a knowledge graph based on schema
g = KnowledgeGraph("IMDB", schema=s)
g.process_sources(sources)
然后,你可以查询图谱:
question = “Name a few actors who’ve acted in ‘The Revenant’”
answer, messages = g.ask(question)
print(f"Answer: {answer}")
就这么简单。要在您的应用程序中安装和使用它,请访问GraphRAG-SDK存储库。许多流行的框架,如LangChain和LlamaIndex,已经开始整合知识图谱,以帮助您构建GraphRAG应用程序。现代LLM也在不断发展,以更好地构建知识图谱和处理Cypher查询。
探索GraphRAG变种
在过去几个月中,出现了几种GraphRAG架构的变种,每种都有其自身的优缺点。让我们来看看其中一些。
静态GraphRAG:采用预构建的固定知识图谱,在查询处理期间保持不变。这种方法适用于信息相对稳定的领域。
动态GraphRAG:根据传入的数据或查询上下文动态构建或更新知识图谱。这对于信息快速发展的领域具有优势。
混合GraphRAG:结合静态和动态知识图谱的元素。它利用核心静态图,并辅以动态更新。这种方法平衡了静态图的稳定性与动态数据的相关性。
向量RAG-GraphRAG混合:结合传统RAG与GraphRAG,提高性能。这种方法可以利用两种技术的优势,如使用向量搜索进行初步检索,然后通过基于图的推理精炼结果。
多GraphRAG:利用多个知识图谱来处理查询的不同方面。这对于具有多个知识来源的复杂领域是有益的。
最佳的GraphRAG架构将取决于您的具体用例。例如,具有大量知识基础的动态领域可能会受益于混合GraphRAG方法。相反,当利用语义相似性至关重要时,您应该考虑RAG-GraphRAG混合。
何时使用GraphRAG
GraphRAG特别适合以下场景:
复杂查询。用户需要涉及多重推理或实体之间复杂关系的答案
事实准确性。高精度和高召回率至关重要,因为GraphRAG可以通过将响应基于事实知识来减少幻觉
丰富的上下文理解。有效的响应生成需要对基础数据及其联系有深入理解
大规模知识库。高效处理大量信息和复杂关系至关重要
动态信息。基础数据不断演变,需要灵活的知识表示
具体使用案例包括:
财务分析与报告:理解复杂的财务关系并生成见解
法律文件审查与合同分析:提取关键信息并识别潜在风险或机会
生命科学与医疗保健:分析复杂的生物和医学数据以支持研究和药物发现
客户服务:为复杂的客户咨询提供准确和有参考价值的答案
从本质上讲 GraphRAG 是一个用于需要深刻理解基础数据和能够推理复杂关系的领域的强大工具。
GraphRAG 采用时需考虑的因素
成功的 GraphRAG 实施取决于数据质量 计算资源 专业知识和成本效益分析
数据可用性:足够且高质量的数据对于构建稳健的知识图谱至关重要
数据结构:充满结构化信息的领域,如金融、医疗保健或供应链,是GraphRAG的主要候选者
知识图谱构建:有效地从数据中提取实体和关系的能力,使用大语言模型或其他工具至关重要
用例对齐:GraphRAG在需要复杂推理和深层语义理解的场景中表现出色
未来方向和研究趋势
关于GraphRAG的研究可以朝几个有前景的方向发展
增强知识图谱自动化构建:开发更高效、准确的知识图谱构建方法,包括处理噪声和非结构化数据的技术
多模态GraphRAG:扩展GraphRAG以纳入多模态数据,如图像、视频和音频,丰富知识图谱并提高响应质量
可解释的GraphRAG:开发技术使GraphRAG的推理过程对用户更加透明和易于理解,例如图形可视化
大规模GraphRAG:扩展GraphRAG以处理巨大的知识图谱和现实世界应用
特定领域的GraphRAG:根据特定领域定制GraphRAG,如编程、医疗、金融或法律,以实现最佳性能
结论
GraphRAG在构建LLM驱动的应用程序方面代表了一个重要的进步。通过整合知识图谱,GraphRAG克服了传统RAG系统的许多局限性,使结果更加准确、信息丰富且可解释。随着研究的进展,我们可以预见GraphRAG在各个领域中将会有更复杂和更具影响力的应用。信息检索和问答的未来在于知识图谱与语言模型的融合。
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
保证100%免费
】Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。