GraphRAG 是什么?知识图谱和向量检索怎么结合?
面试怎么回答
普通 RAG 检索文本片段,对跨文档关联、全局主题汇总和多跳推理的问题效果差。GraphRAG 先用大模型从文档中抽取实体和关系建成知识图谱,再做社区划分并生成摘要;局部问题从相关实体出发沿关系扩展并结合文本片段,全局问题基于社区摘要回答。代价是构建成本高、实体消歧难、增量更新复杂,大部分事实问答用混合检索加重排就够了。数据团队的优势是已经有血缘、指标派生关系、元数据这些高质量的结构化图,直接用来回答影响分析这类问题,比从文档里抽取准确得多。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
普通 RAG 检索的是一个个文本片段,遇到「我们公司有哪些项目和供应商 A 有关?」「这个指标的上下游依赖有哪些?」这类需要关联多个实体、跨文档汇总的问题时,往往答不好。GraphRAG 就是为了解决这类问题。面试官想看你是否理解它的原理和适用场景。
普通 RAG 的短板
- 跨片段关联:答案分散在很多文档的不同片段里,向量检索只能找回最相似的几个片段;
- 全局性问题:「这批文档主要讨论了哪些主题」,没有哪一个片段能直接回答;
- 多跳推理:A 和 B 有关,B 和 C 有关,问 A 和 C 的关系。
GraphRAG 的基本思路
- 抽取实体和关系:用大模型从文档中抽取实体(人、项目、系统、指标)和它们之间的关系,构建知识图谱;
- 社区划分和摘要:对图做社区发现,把关系紧密的实体聚成一组,为每个社区生成摘要;
- 检索:
- 局部问题:先找到问题相关的实体,再沿着关系扩展邻居,结合相关的文本片段回答;
- 全局问题:基于社区摘要做汇总回答。
微软开源的 GraphRAG 是这类方法的代表。
代价
- 构建成本高:抽取实体和关系要对全部文档调用大模型,文档量大时成本和时间都很可观;
- 抽取质量:实体识别不准、同一实体多种写法(「Doris」「Apache Doris」)需要消歧和合并;
- 更新麻烦:文档变化后,图和社区摘要要增量更新;
- 不一定都需要:大部分事实问答,普通 RAG 加上混合检索和重排就足够。
数据团队的优势
数据团队其实已经有现成的「图」:
- 数据血缘:表、字段、任务、报表之间的依赖关系;
- 指标体系:指标之间的派生关系;
- 元数据:表属于哪个业务域、负责人是谁。
这些结构化关系不需要用大模型抽取,直接拿来就是高质量的图。比如「这个字段改了会影响哪些报表」,用血缘图检索比在文档里做向量检索准确得多。