这道题其实在问,当[[RAG]]从简单的文本块检索进化到需要理解全局关系和进行多跳推理时,图结构是怎么帮上忙的。我先说传统RAG的边界在哪,再解释[[GraphRAG]]怎么突破,最后聊聊落地的真实取舍。
传统RAG的局限很直接:它把文档切成一块块文本,用向量相似度去捞。这适合什么呢?比如客服场景里,用户问“我的订单怎么退款”,你从退款政策里找一段话就行。但一旦问题变成“整个促销季的满减规则是怎么演变的”,或者“总结这份合规文档的核心风险点”,传统RAG就抓瞎了。因为它每块文本是孤立的,没有连接,也没法跨块做推理。说白了,传统RAG擅长单点查,不擅长全局总结和多跳推理。
GraphRAG就是冲着这个来的。它的方案分两段:离线索引和在线查询。索引阶段,先用LLM从文档里抽实体和关系,比如“张三”和“订单123”之间有个“提交”关系,构建出[[知识图谱]]。然后对图做社区发现,比如用Leiden算法,把紧密相关的实体聚成一个社区,再让LLM给每个社区生成摘要,形成一棵层次化的社区摘要树。查询阶段就分两种:全局查询,比如“整个文档讲了什么主题”,就从上到下遍历社区摘要树,把宏观信息聚合起来;局部查询,比如“张三的订单为什么异常”,就定位到“张三”这个实体,沿着图边往外扩,找到关联的订单、支付记录、库存状态,做多跳检索。
图结构带来的提升很实在。一个是连接性,传统RAG里“订单”和“库存”是两块文本,但图里它们有显式关系,支持多跳推理。另一个是全局性,社区摘要直接覆盖了文档的整体主题,不会漏掉宏观信息。还有可解释性,传统RAG是黑盒算相似度,而GraphRAG的检索路径可以追溯,比如“张三→订单123→支付失败→库存不足”,每一步都看得见。
但落地时坑也不少。成本是第一个问题,索引阶段要多次调LLM抽实体和关系,如果知识库每天更新,LLM调用费会很高,所以它更适合静态知识库,比如企业的SOP文档或合规手册,改得不频繁。延迟也需要注意,图遍历比向量检索慢,特别是社区摘要树层次多的时候。我上线时一般会加缓存,把常用社区摘要预计算好,或者限制遍历深度。图谱质量更是敏感,实体抽取错了,比如把“张三”和“张四”合并了,那整个下游检索都会偏。所以我会设计校验机制,比如用[[NER]]做一遍预标注再让LLM修正,或者人工抽检关键实体。
还有一个点值得注意:GraphRAG的社区摘要生成依赖LLM的总结能力,如果LLM自己[[Hallucination]]了,摘要里掺了假信息,那检索出来的结果就会误导用户。所以我会在生成摘要后加一层[[Faithfulness]]校验,确保摘要内容在原始文档里有依据。
所以我的判断是,GraphRAG和传统RAG不是替代关系。我会把GraphRAG看作全局骨架,负责宏观理解和多跳推理,传统RAG做细粒度补充,负责精确片段检索。真正落地时,常常混合使用:先用GraphRAG定位到相关社区和实体,再用传统RAG去捞那个实体下的具体文本块。这样才能在成本和效果之间找到平衡。