在上一篇文章中,我们详细解读了 GraphRAG 原理中知识图谱的构建过程。今天这篇文章,我们将重点聚焦于图谱检索部分——即在知识图谱构建完成后,如何将用户提出的问题精准映射到图上,并高效获取答案。

GraphRAG 主要提供两种检索策略:局部搜索(local search)和全局搜索(global search)。这两种方式各有特点,适用的场景也截然不同。接下来,我们逐一进行深入剖析。
局部搜索(Local Search)
局部搜索是一种从微观视角出发的检索方法,通俗而言,它更适合回答那些聚焦于具体实体的问题,例如“急性肠胃炎应该如何治疗”。这类问题需要紧密围绕某个实体及其关联关系进行信息提取,而非着眼于全局。其核心流程大致如下:
首先,当用户提交查询后,系统会将查询转换为适合在知识图谱或向量数据库中搜索的形式,例如关键词或向量表示。接着,通过向量搜索或关键词匹配,在知识图谱中初步定位与查询语义相近的一组初始节点或文档集合。这一步骤相当于划定了一个“嫌疑范围”。
随后,基于这些初步结果,系统在图数据库中进行图遍历,将与初始节点相关联的其他节点信息一并提取出来——这一过程充分利用了知识图谱中的关联性,从而使上下文更加丰富。之后,采用基于图的排序算法(如 PageRank)对这些节点进行排序,确保最相关的内容优先呈现。最后,将排序后的节点或文档作为上下文信息输入生成式 AI 模型,从而生成最终回答。
局部搜索的特点
高效性:由于仅在局部范围内搜索,计算量相对较小,响应速度较快。尤其是在处理大规模图数据时,能够在较短时间内给出质量不错的局部结果。
局部最优性:但该方法找到的是局部最优解,而非全局最优。因为它只关注局部区域,并未对整张图进行全面扫描。
对初始解敏感:搜索结果高度依赖初始节点的选择。不同的起点可能导致截然不同的结果,因此带有一定的随机性。
全局搜索(Global Search)
如果说局部搜索好比“显微镜”,那么全局搜索则如同“卫星地图”。这是 GraphRAG 的核心优势所在,专门用于解决传统 RAG 技术在处理需要跨数据集汇总信息时的痛点。例如,“这篇文章主要讲了什么”——这类摘要总结类问题,传统 RAG 通常将文档分块后再检索,容易遗漏重要信息,难以给出全面回答。全局搜索侧重于全文理解,能够从宏观视角将分散的信息串联起来。
其核心流程分为两个阶段:Map 阶段和Reduce 阶段。
Map 阶段:系统根据用户输入的问题和历史对话,在指定的层次(community_level)上,将所有的社区报告总结提取出来,分成多个批次,让大模型并发地为每个批次生成带有评分的中间响应。该评分用于衡量观点的重要性——需要注意的是,这里并未使用向量嵌入进行匹配,而是完全依赖大模型自身的理解能力进行打分。
Reduce 阶段:对上一阶段产生的中间响应结果进行排序,挑选出得分最高的观点(按分数排序),汇总后作为参考上下文,最终交给大模型生成完整回答。
全局搜索的特点
全局最优性:能够找出全局最优解,回答质量有保障。对于精确度要求较高的问题,全局搜索是一个可靠的选择。
计算量大:代价也十分明显——需要遍历整个图结构,计算量通常很大,搜索时间也较长。当面对超大规模图时,可能变得相当缓慢。
鲁棒性强:它不受初始解的影响,因为对整个图进行了全面探索,找到最优解的概率更高。
综上所述,局部搜索和全局搜索各有其独特优势。局部搜索速度快、对起点敏感,适合在大型图谱上快速获取局部答案,适用于对精度要求不高的场景。而全局搜索追求最优解,但需要更多算力,更适合小规模图或高精度要求的任务。在实际项目中,选择哪一种策略需要根据业务场景的具体特征来决定——包括数据量大小、查询类型偏实体还是偏总结、对响应速度的敏感程度等。只有将这些因素考虑周全,才能真正发挥 GraphRAG 的潜力。
