超越基础图检索:六种面向生产的架构,用于结合语义搜索、知识图谱和LLM推理。

检索增强生成(RAG(检索增强生成))是各组织中应用最广泛的LLM用例。通过在查询时对文档进行向量化并检索语义相似的片段,RAG可以缓解幻觉、为回答提供依据,并绕过模型预训练带来的静态知识截止限制。然而,在现实场景中,标准的基于向量的RAG在复杂查询上会遇到限制,例如那些需要全局上下文、多跳推理、跨文档数值聚合等的查询。
标准RAG非常擅长回答明确的、局部化的查询。但如果我们问:“供应商B延迟发货零件A会如何影响产品C的最终装配?”,它会基于语义重叠检索出彼此不连贯的片段,却完全遗漏了连接这些实体的明确、确定性的关系。类似地,对于诸如“截至2025年的5年间某一产品类别的收入趋势”这样的查询,它不太可能执行跨文档推理,从2021年至2025年的相关文档中获取正确片段并正确回答问题。这是因为标准向量RAG看到的只是一个由文档片段或块构成的扁平世界。
GraphRAG通过从检索扁平文档转向检索结构化知识来解决这个问题。它将知识图谱(KGs)集成到RAG流程中,其中数据以节点(实体)、边(关系)和属性的形式存储。通过这种方式,它将现代LLM的语义化、模糊匹配能力与KG的结构化、确定性推理结合起来。
本文不解释GraphRAG的基础知识,而是介绍GraphRAG的六种不同架构模式,以及它们的优缺点和用例。我们将探讨它们如何工作、数据流、可视化这些架构,以及在生产环境中究竟何时使用它们。
在深入这些架构之前,让我们先看看任何GraphRAG系统的基线组件。无论我们采用多么先进的路由或检索逻辑,系统都需要这些基础支柱:
“GraphRAG”这个术语经常被宽泛地使用,但在实践中,它是若干根本不同架构模式的统称,其中一些模式里KG并不是唯一的知识存储。选择正确的模式取决于用户查询模式、系统成本、延迟和能力。
GraphRAG 最直接且确定性的方法是 Text-to-Cypher 模式。在这种架构中,LLM(大语言模型) 严格充当查询翻译器,而非语义搜索引擎。
用户输入自然语言查询。系统通过系统提示词向 LLM 提供图数据库的 schema(节点标签、边类型和属性)。LLM 的主要工作是将自然语言翻译为有效的图查询语言(例如 Neo4j 的 Cypher,或 Gremlin)。随后该查询直接在图数据库上执行。数据库返回的精确、事实性结果要么直接呈现给用户,要么传递给第二个 LLM 格式化为自然语言响应。

要成功实现这一点,提示词工程必须严谨。我们不能简单地将查询传递给 LLM;我们必须传递精确的本体。
此模式最适合高度结构化、操作性的知识库,其中答案依赖于精确遍历、计数、聚合或查找最短路径。用户应了解本体,以便有效地查询知识图谱。这可能适用于查询内部 HR 数据库、供应链物流或金融交易网络,这些场景中语义歧义低、精确性重要且用户是领域专家。
这种架构反映了这样一个现实:向量数据库和图数据库各有所长,因此可以有效地互补。向量数据库擅长非结构化文本的语义匹配,而图数据库则用于遍历确定性的结构化关系。这种模式及后续模式探索了如何结合两者的能力,为各种查询提供有依据的响应。
在并行混合模式中,系统维护两个独立的数据库:原始非结构化文档块的向量索引,以及提取出的实体和关系的知识图谱。当用户查询到达时,系统同时查询两个数据库。这种方法承认,一个单一的复杂查询通常包含某些部分最适合由确定性图来回答(例如,“收入是多少?”),而另一些部分则更适合由向量数据库来回答(例如,“战略重点是什么?”)。向量数据库检索语义最相似的前K个文档块。同时,图数据库检索相关的子图。来自两个流的结果被合并并注入到LLM的上下文窗口中。

Context from Documents (Vector): [Internal memo detailing alternative routing and inventory buffering strategies for Asian ports]
Context from Knowledge Graph: Shanghai Port -> SHIPS_FOR -> Supplier A -> SUPPLIES_PART -> Microchip X.
Answer the query using the above context.
这是通用企业搜索的安全选项。当无法预测用户查询是需要事实性关系数据还是广泛的非结构化上下文时,它很适用。如果查询是语义、关系或两者的混合,并行混合模式是首选。
与并行方法不同,顺序混合架构使用一种检索方法的结果来显式地告知和过滤另一种方法。这创建了一个高度聚焦、精确的上下文窗口,减少了并行方法的冗余和高token成本。其第一个变体是图优先RAG。
系统首先查询知识图谱以找到确切的实体关系。如前所述,图节点包含跟踪其source_document_ids的元数据。系统提取这些文档ID,并将它们用作后续向量搜索的硬过滤器。通过这样做,它保证检索到的非结构化文本仅属于那些提及满足查询关系逻辑的实体的文档。

假设查询是“查找 XYZ Corp 供应的所有锂组件的安全警告”。
图优先 RAG 非常适合高度以实体为中心的查询,在这种情况下,您需要在解析文本之前明确地将搜索空间缩小到特定实体组。它不要求图包含每个精确、细微的关系,而是利用图的结构知识作为强大的粗过滤器。这确保下游向量搜索只查看与那些特定实体相关的文档。典型用例可能包括搜索法律文本(隔离与特定子公司相关的文档)和制造业(过滤与特定子组件相关的手册)。
值得注意的是,采用任何形式的 GraphRAG 的一个主要障碍是使用 LLM 提取密集知识图谱的巨大成本。稀疏图架构是图优先模式的直接推论,旨在缓解这一成本问题。由于图优先 RAG 严重依赖下游向量搜索来处理细微差别,我们实际上不需要密集图来捕获所有关系。系统可以使用快速、确定性的 NLP 技术(如 SpaCy)或较小的 LLM 来构建仅包含最关键、高层实体的“稀疏”骨架图,而不是使用昂贵的 LLM。检索流程与模式 3 相同(遍历稀疏图 -> 过滤向量搜索 -> 合成)。我们完全依赖向量块来填补缺失的上下文,并准确回答基于关系的查询。
与前一个模式相反。这种架构承认,有时用户的查询过于宽泛或模糊,无法从严格的图遍历开始。相反,我们首先撒下广泛的语义网,然后使用图来锐化上下文。
系统首先执行标准语义向量搜索,以找到最相关的文档块。然后检查这些特定块,提取其中提到的关键实体,并使用这些实体作为入口点来遍历知识图谱。这引入了关于这些实体的更深层次、多跳上下文,而这些上下文在原始向量块中并不存在。

考虑这样一个查询:“与 Project X 相关的系统性风险有哪些?”
最适合广泛、开放式和语义化的查询,其中初始意图是模糊的,但需要后续的关系上下文来支撑最终答案。适用于取证分析、调查性新闻和深度研究应用。
正如上述 4 种模式所示,每种模式都有其优势,为每个查询硬编码单一检索路径并非最优方法。自适应路由代理在管道的最前端引入了一个决策层。
一个智能路由代理(可以是快速 LLM 或微调的分类模型)分析用户传入的查询。它评估查询的意图、实体密度和关系复杂性,然后动态地将其路由到最优的架构路径(Text-to-Cypher、Vector-Only、Graph-First、Vector-First 或 Parallel Hybrid)。

实现细节和数据流
为了在不增加太多延迟的情况下实现路由代理,我们可以使用更小、更快的模型(如 gpt-mini、gemini-flash 等)。
这种模式适用于面向用户的企业聊天机器人、通用搜索栏,或任何用户查询在结构和意图上差异很大的应用。如果我们无法预测用户会问什么,就必须使用路由器。
第6个也是最后一个模式是Agentic GraphRAG。该模式不采用单一的、预先确定的检索过程,而是使用自主智能体与图动态交互。
给定一个复杂查询,自主智能体配备了与图数据库和向量数据库交互的工具。它可能首先在图谱中识别一个起始节点,执行查询以查看其邻居。它评估这个中间上下文并决定:“我需要沿着这条边进一步遍历,还是应该使用这个节点的source_document_id来读取向量数据库中的非结构化文本?”智能体在结构化关系和非结构化文本之间迭代导航,收集线索,如果遇到死胡同则回溯,直到形成完整的答案。

这需要像LangGraph或AutoGen这样强大的智能体框架。
Agentic GraphRAG 严格保留用于离线、复杂、开放式的分析查询,这些查询需要深度的多步推理。它非常适合研究人员提出这样的问题:“调查产品 Y 在所有三级供应商中的供应链脆弱性,并总结地缘政治风险。”它通常不适合实时用户聊天机器人。
一个常见的比较点是 Microsoft 的 GraphRAG 框架。它代表了一种与我们上面讨论的基于遍历的架构不同的范式。
Microsoft 的方法重点在于构建语料库的结构化、分层表示。在摄取过程中,它从源文档中提取实体和关系,使用诸如 Leiden 之类的算法应用分层社区检测,并使用 LLM 生成总结这些社区的报告。
这种设计对于全局性问题尤其相关。Global Search 在 map-reduce 过程中使用这些预生成的社区报告来回答诸如“这个数据集中的主要主题是什么?”之类的问题。它不是尝试检索几个语义相似的块,而是可以跨整个语料库的摘要结构进行推理。
还有 Local Search,它专为更具体、以实体为中心的问题而设计。它结合了相关的图实体、关系、社区信息以及原始文档中的相关文本。DRIFT Search 进一步将全局社区信息与局部探索结合起来。
这是一种更广泛的分层架构,其中社区报告对于全局推理尤为重要。对于高度局部化的关系型问题,例如“John 向谁汇报?”,更简单的 Graph-First 或 Text-to-Cypher 方法可能更直接,并且根据数据和查询工作负载,可能成本更低。
总之,Microsoft 的实现尤其以其对全局语料库级推理和分层摘要的强调而与众不同,而不是作为适用于每种关系型 RAG 问题的通用解决方案。
与任何工具和架构一样,知识图谱和 GraphRAG 也存在一些众所周知的挑战。下面,我将指出关键挑战以及应对它们的最佳实践。
正如稀疏图推论(模式 3)中所强调的,运行 LLM 从数 GB 文本中提取节点和边是相当昂贵的。
最佳实践:从稀疏图开始。使用传统 NLP(SpaCy、GLiNER)来映射数据的骨架结构。仅对最关键、高价值的文档部署密集的 LLM 提取。对于其余部分,依赖元数据连接,让 Vector RAG 处理繁重的工作。
如果我们今天使用 Company 和 Employee 模式提取数据,而下个月决定它应该是 Organization 和 Staff,图就会变成一个碎片化的烂摊子。未来,插入新文档会成为一项挑战,需要仔细评估实际存在哪些节点和关系以及它们的名称。
最佳实践:将本体视为生产数据库模式。它需要版本控制和严格的治理。从最小化、严格的本体开始。使用 LLM 进行提取时,在提示中严格提供模式并使用结构化输出(JSON 模式或函数调用)来强制合规会有所帮助。应限制 LLM 即时发明新的节点标签。
在向量数据库中,更新文档很容易:删除旧块并嵌入新块。在图中,删除文档意味着找到仅由该文档生成的每个节点和边并删除它们,同时不破坏与其他有效文档共享的节点。
最佳实践:实现严格的血缘追踪。图数据库中的每个节点和边都必须包含一个 source_document_ids 数组属性。当文档被删除时,查询图中包含该 ID 的所有元素。从数组中移除该 ID。如果数组变为空,则删除该节点/边。
标准 RAG 评估框架(如 Ragas)评估最终答案。但在 GraphRAG 中,如果答案错误,我们需要知道是向量搜索失败、图遍历失败,还是路由器代理做出了错误决策。
最佳实践:在管道中构建自定义遥测。记录每个中间步骤的输出。使用 LLM-as-a-judge 独立于最终答案生成,明确评估 Text-to-Cypher 管道生成的 Cypher。
GraphRAG 代表了构建 AI 系统方式的范式转变。向量 RAG 使文本的语义含义能够被数值化编码为嵌入,从而使语义相似性搜索成为可能。知识图谱则将文本视为一个相互连接的知识网络。两者共同代表了同一知识存储的不同方面,在从文本中挖掘洞见时相互补充。
本文的目标是证明实现 GraphRAG 并非只有一种方式。选择不再是要不要使用图,而是哪种架构模式——无论是并行混合、自适应路由,还是顺序图优先——最适合用例的独特需求、延迟和预算约束。
这些架构模式可以帮助从业者构建不仅能找到相似文档,还能对企业数据的关联维度进行推理的检索系统。
Agentic GraphRAG 可以决定下一步做什么。但谁来决定应该由哪个模型来做?
多智能体工作流中的每一步并不都需要相同级别的推理能力。将每次调用都路由到最强大的模型会迅速推高推理成本。
如果系统能够动态选择最适合每一步的模型呢?
我在《使用自适应模型路由优化多智能体系统中的 LLM 推理成本》一文中探讨了这种方法。
欢迎在 www.linkedin.com/in/partha-sarkar-lets-talk-AI 与我联系并分享您的评论。
本文使用的图片由 Google Gemini 生成。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:Towards Data Science
原创地址:https://towardsdatascience.com/graphrag-a-practitioners-guide-to-6-advanced-architectural-patterns/
原文作者:Partha Sarkar;如有侵权,请联系管理员删除。