一文彻底搞懂GraphRAG
发布时间:2024-11-15 00:37:06点击:
自ChatGPT引领人工智能的新潮流以来,我们见证了大型语言模型(LLM)与私有数据结合的巨大潜力。这种结合不仅催生了功能强大的AI应用,也标志着AI专业能力的提升。
然而,随着深入探究,我们发现传统的文本嵌入检索技术(Text2Vec RAG)在处理知识库问答时仍存在局限。本文阐述如何通过图形RAG技术,有效填补这一空白,实现对知识库的深入挖掘和全面理解。
1 局部和全局问题
文本嵌入检索技术让LLM应用能够稳定地根据知识库内容回答问题。Text2Vec的优势在于能够从知识库中提取关键事实,直接回答用户的问题。但这种方法也有局限,它依赖于查询的具体性,且难以处理跨文档的抽象问题。
想象一下,有一个详尽的诺贝尔和平奖得主知识库。问系统“2023年的诺贝尔和平奖得主是谁?”这种问题,系统能迅速给出答案,因为这些信息在知识库中清晰可查。但若问“过去十年最杰出的诺贝尔和平奖得主有哪些?”系统就可能束手无策,尤其是当问题需要跨文档整合信息时。例如,用户可能好奇“最近几届诺贝尔和平奖得主主要关注哪些议题?”如果这些议题在知识库中没有直接提及,传统的文本嵌入检索就难以给出满意的答案。
因此,引入图形RAG,这不仅能够解决具体的局部问题,还能应对需要全局视角的复杂问题。
知识图谱通过半结构化的层次方法组织信息,允许我们在数据集的全局层面上进行推理,识别节点间的复杂关系。图形RAG利用这种结构,通过识别紧密相连的节点群体——即社区,来构建对用户查询的深入理解。
图形RAG的流程简化为:
这一流程优化了信息检索,对用户复杂查询的响应更加精准和全面。
2 构建知识图谱:图形提取
构建对非结构化知识库的抽象理解,首先需要提取构建知识图谱的关键节点和边,这一过程可以通过大型语言模型(LLM)自动化实现。挑战在于甄别哪些概念和关系是有价值的。
例如,从一篇关于沃伦·巴菲特的文章中提取信息,他的持股和出生地等信息显然是关键实体和边,而他上次董事会会议上领带的颜色则可能无关紧要。关键在于根据应用场景和领域定制提取提示,这将直接影响从数据中提取的信息类型。
设定提取提示可以通过两种方式:一是多轮提示,即提供一系列输入输出样例让LLM学习;二是LLM微调,即在特定数据集上训练模型以提高性能。虽然微调可能更有效,但也更耗费时间。
3 图谱数据的存储与管理
已经成功设置LLM的提取流程。面对存储问题,虽然Neo4j和Arango DB是图形数据库的首选,但学习新的查询语言可能耗时。
为了简化,可以使用graph2nosql,这是一个Python接口,支持在NoSQL数据库中存储图形数据,并支持基本的图形操作,如节点管理、图形可视化和社区检测。这样,可以避免复杂的数据库技术栈,同时保持数据的灵活性和易用性。
graph2nosql 数据模型
4 社区检测
完成图形数据的提取与存储后,紧接着的任务便是识别图中的社区结构。社区由紧密相连的节点群组成,其内部联系远比与图外节点更为频繁。这一识别过程可以通过多种社区检测算法实现。
Louvain算法是其中一种广泛应用的方法,它通过不断迭代合并节点,形成社区,直至达到优化的模块度标准——模块度是评价社区划分优劣的一个重要指标。
除此之外,还有几种知名的社区检测算法,包括:
这些算法各有优势,适用于不同的场景和需求。
5 社区报告生成
社区报告基于已识别的社区,提炼出节点和边的关键信息,帮助我们把握知识库的核心主题。每个社区都代表一个主题,为解答相关问题提供具体上下文。社区报告是跨文档信息整合的起点,有助于构建对知识库的整体理解。
例如,诺贝尔和平奖得主的社区报告可能会突出显示与获奖者相关的主要议题。而"发现"功能则进一步深化了这些报告,提供了更细致的洞察。
为了确保社区报告的相关性和准确性,应根据具体应用场景进行细致的提示设计或模型微调。
6 上下文构建:Map Reduce的应用
在处理查询时,采用map-reduce模式来构建从中间到最终的响应。
Map阶段 :这里,我们将每个社区与用户查询配对,利用社区报告来生成对查询的初步答案。同时,还会让LLM评估社区报告对用户查询的相关性。
Reduce阶段 :随后,根据生成的中间响应的相关性得分进行排序,筛选出最相关的前k个社区。这些社区的报告,连同节点和边的信息,将作为最终LLM提示的上下文,确保答案的准确性和深度。
7 结语
Text2vec RAG在知识库问答方面存在局限,而图形RAG则能巧妙地补上这一短板。它通过社区报告为知识库提供了更深层次的理解,帮助团队快速定位关键信息,提升效率。然而,这种方法在调用LLM时成本较高,可能带来延迟。
未来,RAG系统可能会采用混合策略,根据查询类型选择最合适的工具,如利用社区报告作为上下文候选。这一领域的探索仍在进行中。
本文转载自,作者: