内容提要
GraphRAG通过知识图谱和社区检测,弥补了标准RAG在全局查询上的不足。它构建实体关系图,生成分层社区报告,支持局部和全局搜索。尽管索引成本高,但提升了答案的全面性和多样性。LazyGraphRAG降低了成本,Agentic RAG则按需选择策略。
延伸解读
全局查询的挑战
标准RAG依赖向量相似度,适合答案与问题措辞相似的局部查询。但对于需要跨文档综合的全局查询,如“哪些故障原因最常出现”,向量检索往往只返回词汇匹配的片段,而非真正的模式。即使扩大上下文窗口,微软测试显示64,000个token仍无法弥补这一差距。
知识图谱的构建成本
GraphRAG通过构建实体关系图来捕捉文档间的联系,但索引成本高昂。提取实体和关系需要两次大语言模型处理,合并描述也消耗大量计算,约占索引总成本的75%。对于频繁更新的语料库,维护成本持续存在,需权衡收益与开销。
查询模式的选择
GraphRAG提供局部搜索和全局搜索两种模式。局部搜索从实体出发扩展,适合具体问题;全局搜索则通过社区报告进行map-reduce,适合整体性问题。选择哪个层级的社区报告影响答案质量和成本,低层级更详细但更耗时。
成本优化与替代方案
LazyGraphRAG通过将大语言模型工作推迟到查询时,将索引成本降至完整GraphRAG的0.1%,同时保持全局查询质量。但微软指出,预构建的社区报告本身有独立价值,因此并非所有场景都适合LazyGraphRAG。
Q&A
GraphRAG是什么?它主要解决什么问题?
GraphRAG是一种基于知识图谱的检索增强生成技术,旨在解决标准RAG在全局查询上的不足。全局查询需要跨大量文档进行推理,而标准RAG的相似性搜索只能找到词汇上相近的片段,无法捕捉跨文档的模式。GraphRAG通过构建实体关系图并生成社区报告,使得全局查询能够基于预生成的摘要进行回答。
标准RAG的局限性是什么?为什么它无法回答全局性问题?
标准RAG依赖于文本相似性,假设答案与问题在词汇上相似。对于局部查询(如“哪个服务拥有重试逻辑”),这很有效。但对于全局查询(如“哪些故障原因在事后分析中最常出现”),答案分布在整个语料库中,而不是单个文档,相似性搜索只能返回包含“重复”等词汇的文档,无法揭示潜在模式。即使扩大上下文窗口,微软测试显示在全局问题上仍存在差距。
GraphRAG的索引流程包括哪些步骤?
GraphRAG的索引流程包括六个阶段:1) 将文档切片为文本单元;2) 使用语言模型提取实体和关系;3) 合并相同实体和关系,压缩描述;4) 可选地提取声明;5) 对实体图进行层次化Leiden聚类;6) 为每个社区生成报告,并将文本单元、实体描述和报告嵌入向量存储。
GraphRAG的局部搜索和全局搜索有什么区别?
局部搜索从匹配的实体开始,沿五个方向扩展(文本单元、社区报告、相邻实体、关系、声明),然后排序和过滤,最终填充到上下文窗口。全局搜索则使用社区报告,通过map-reduce方式:将报告分批,每批生成带重要性评分的中间答案,然后汇总生成最终答案。局部搜索适合实体明确的查询,全局搜索适合跨语料库的聚合查询。
GraphRAG的索引成本为什么高?如何降低?
GraphRAG的索引成本高主要是因为两次语言模型遍历(提取和合并)以及为每个社区生成报告。图提取约占索引成本的75%。降低成本的方案包括使用FastGraphRAG(用传统NLP替代语言模型)和LazyGraphRAG(将语言模型工作推迟到查询时,索引成本降至完整GraphRAG的0.1%)。
GraphRAG相比标准RAG在哪些方面有优势?在哪些方面没有?
GraphRAG在全局查询上表现更好,提供更全面、多样化的答案,并引用更多支持材料。但在局部查询上,标准RAG仍然更强。在忠实度(即每个事实的准确性)上,GraphRAG与标准RAG相当,并未显著减少幻觉。
什么是Agentic RAG?它如何解决检索策略选择问题?
Agentic RAG是一种智能检索方法,它使用语言模型对查询进行分类,然后选择最合适的检索策略(如向量搜索、全局搜索、SQL查询或网络搜索),并执行和合成结果。LlamaIndex实现了两层路由:复合检索器选择索引,自动路由模式选择具体方法。这增加了灵活性和准确性,但引入了额外延迟和路由错误的风险。