GraphRAG知识图谱检索增强
当问题需要串联多个文档才能答,纯向量检索就力不从心:GraphRAG先把语料抽成知识图谱、建立社区层级并生成摘要,再基于这些结构做检索增强,擅长回答整批资料整体在讲什么这类需要全局视角的问题
工具界面
交互式工具即将上线
功能特点
- ✓ 图谱优先:从原始文本里抽出实体与关系构成知识图谱,而不是只切成一堆互不相识的文本块
- ✓ 社区层级与摘要:对图谱做网络分析形成社区层级并为社区生成摘要,让检索能站在更高视角
- ✓ 多种查询模式:全局搜索回答整批语料的宏观问题,局部搜索回答某个实体附近的细节,另有DRIFT等模式
- ✓ 面向复杂推理:官方称其在需要推理复杂信息的问题上明显优于朴素语义检索
- ✓ 开源可自建:代码与文档公开,可本地运行并接入不同语言模型,代价是索引成本较高,官方提醒从小规模开始
使用步骤
- 先判断问题类型:如果大量问题是在问这批文件整体在讲什么,值得试图谱路线;若只是找相似片段,朴素向量检索可能更省
- 先小规模跑索引:官方明确提示索引开销大,先拿一小撮文档跑通全流程,检查抽出的实体与关系是否合理
- 按问题选查询模式:宏观问题用全局搜索,具体实体附近的细节用局部搜索,别用错工具
- 评估与调优:用问题生成功能造测试集,对比图谱路线与向量基线的作答质量,再决定是否值得承担索引成本
常见问题
GraphRAG是什么?
一种比朴素语义检索更结构化的检索增强生成方法。官方描述是:GraphRAG先从原始文本中抽取知识图谱,建立起社区层级并为这些社区生成摘要,再在做RAG任务时使用这些结构。它回答的是把这堆资料作为一个整体来理解的问题,而不是只找相似的文字片段。见 https://microsoft.github.io/graphrag/
它和普通向量检索差在哪?
差在结构。普通做法是把文档切片、做向量相似度检索,擅长找一段和问题相像的文字,但对需要跨文档汇总与推理的问题常常答不好。GraphRAG把语料抽成实体与关系构成的图谱并生成社区摘要,官方称这种结构化方式在推理复杂信息的问题上有明显提升。见 https://microsoft.github.io/graphrag/ 与 https://www.microsoft.com/en-us/research/project/graphrag
有哪些查询模式?
文档里主要列出全局搜索、局部搜索与DRIFT搜索,并配有对应示例。全局搜索面向整批语料的宏观问题,局部搜索聚焦某个实体周边的具体信息,DRIFT则是在局部检索的基础上补充更多上下文与追问思路。模式选错,往往得到似是而非的答案。见 https://microsoft.github.io/graphrag/
用起来最大的坑是什么?
索引成本。官方在仓库首页挂了醒目提示:GraphRAG索引可能是一笔昂贵的操作,动手前请读完文档理解流程与成本,并且从小规模开始。因为要调用语言模型从上到下抽取实体、关系并生成摘要,语料越大花费越高,建议先用小语料验证抽取质量再扩容。见 https://github.com/microsoft/graphrag
这个项目还在活跃开发吗?
需要提醒的是,官方仓库已声明该项目基本处于维护模式,不再接受新PR或实现新功能,只做Bug修复与依赖更新,尤其是应对CVE的安全更新。这意味着它依然可用、也依然有人修,但不要指望持续加入新特性;同期另有一个社区组织在维护相关的GraphRAG资源与衍生实现。见 https://github.com/microsoft/graphrag 与 https://github.com/graphrag
什么时候不该用GraphRAG?
当你的问题主要是找一段和问题相似的原文、语料很大但查询很局部、或者预算紧张经不起反复重跑索引时,普通向量检索往往更划算。GraphRAG的收益出现在需要跨文档汇总、关系推理与全局视角的场景,用错场景就是花大钱却买不到对应的提升。参考官方对比说明 https://microsoft.github.io/graphrag/