构建智能体驱动的 GraphOS:面向生产环境的知识图谱 16 层架构
查询(例如,“现代 AI 研究的主要主题是什么?”)需要跨多个文档或实体进行聚合,受益于能将相关概念分组的社区检测算法,需要 2000–2500 个 Token。
一个成本优化、全可观测、专为企业生产打造的 GraphRAG 操作系统
在本篇博文中,你将学习如何从零开始构建 GraphOS —— 一个完整的、面向生产环境的知识图谱系统。你将确切了解如何设计一个多智能体平台,该平台能智能地将查询路由到最具成本效益的检索策略,从而在保持研究级准确率的同时实现 30–50% 的成本降低。文章将展示如何实现 GraphOS 平台全部 16 个架构层,从前端 React 到 Neo4j 知识图谱,并使用 Prometheus、Grafana 和 LangSmith 实现完整的可观测性。你还将看到如何使用 Docker 和 Kubernetes 部署系统、配置多租户,以及为生产工作负载设置语义缓存。最终,你将获得一个清晰、可复用的蓝图,用于部署高性能 GraphOS 系统,并全面掌控成本、准确率和扩展性。
GraphOS 是一个基于 Neo4j、LangGraph、LiteLLM 以及完整监控栈构建的、面向生产的完整检索增强生成(RAG)平台。它旨在处理企业级规模的知识图谱操作,同时保持完整的可观测性和成本优化。该架构可分为十五个主要层级:前端界面、中间件栈、流式处理与 GraphQL 层、工作流编排层、查询处理流水线、多智能体系统、检索策略层、知识图谱存储层、本体操作系统、评估层、输出处理层、数据摄取流水线、分析仪表盘以及部署基础设施。
在进一步展开之前,有必要说明该系统是如何诞生的。
这一架构并非一蹴而就。最初版本非常朴素:每个查询都通过最强大的智能体 GraphOS 流水线处理。在早期演示中,准确率看起来不错,但在真实使用一周后,成本失控飙升,延迟也变得不可预测。简单事实性查询被过度工程化处理,而复杂查询仍在以微妙方式失败。
转折点在于我们意识到:检索策略的选择比模型选择更重要。一旦我们不再将所有查询一视同仁,而是开始有意识地对其进行路由,系统就变得更便宜、更可靠。
架构概览

该系统的基础是一个基于研究的路由机制,它分析了 12 种 GraphRAG 方法在 6 个学术基准上的表现,为每个查询选择最具成本效益的检索策略。系统将查询分为三类——具体问答(Specific QA)、抽象问答(Abstract QA)和多跳问答(Multi-hop QA)——并将其路由至五种检索策略之一,从简单的向量搜索(500 tokens,300ms)到复杂的智能体多跳推理(3500 tokens,2000ms)。这种智能路由相比始终使用最昂贵策略,可实现 30–50% 的成本降低。
知识层由一个 Neo4j 图数据库构成,包含 250 万个实体和 800 万条关系,并辅以向量嵌入用于混合搜索。该图由一个包含 14 个模块的本体操作系统管理,负责实体提取、验证、推理和演化。当用户提交查询时,该查询会依次通过意图澄清层和分类层,最终到达基于研究的路由器。该路由器根据查询类型、数据集特征和成本约束,选择最优的检索策略。
推理与编排层由 LangGraph 和 LiteLLM 驱动。一个监督智能体协调四个专业工作智能体——研究员(Researcher)、图专家(Graph Specialist)、向量专家(Vector Specialist)和摄取管理器(Ingestion Manager)——每个智能体都针对不同的数据源和操作进行了优化。监督者实现了一个 ReAct 循环(Reasoning + Acting),用于委派任务、评估结果并合成最终答案。所有智能体状态通过 PostgreSQL 检查点持久化,支持会话连续性和错误恢复。
检索层实现了五种经过研究验证的策略:VanillaRAG(仅向量基线)、HippoRAG(向量 + 图混合)、LGraphRAG(社区检测)、GraphReader(智能体多跳)和 FastGraphRAG(延迟优化)。每种策略均由五种基础算子组合而成:向量数据库、链接遍历、个性化 PageRank、社区检测和单跳扩展。系统会跟踪每种策略的性能指标,并持续学习哪些策略最适合特定的查询模式。
监控与可观测性层基于 Prometheus、Grafana 和 LangSmith 构建。Prometheus 从所有系统组件中抓取指标,跟踪请求速率、延迟分布、Token 使用量和错误率。LangSmith 提供所有大语言模型(LLM)调用的分布式追踪,捕获完整的对话树、Token 分解及中间结果。Grafana 实时可视化这些指标,使运维人员能够监控系统健康状况、识别瓶颈,并跟踪成本与性能的权衡。这构成了一个闭环的可观测系统,确保 AI 工作负载和基础设施在生产环境中完全透明。
为何采用此架构?
之所以选择这一架构,是因为它以面向生产的方式平衡了准确率、成本和可观测性。基于研究的路由器确保每个查询由满足准确率要求且最具成本效益的策略处理。Neo4j 提供了具备 ACID 事务和向量搜索能力的企业级图存储。LangGraph 支持具备完整状态管理的复杂多智能体工作流。本体系统确保知识图谱的数据质量和一致性。Prometheus 与 Grafana 提供对系统性能和成本的实时洞察。它们共同组成了一个易于运维、易于扩展、在生产环境中安全可靠且成本可预测的完整技术栈。
第 0 层:前端界面

作者供图 | GraphOS 仪表盘
前端层作为用户与知识图谱系统交互的主要界面,采用 React 和 Next.js 构建,为用户提供覆盖所有系统功能的响应式、实时体验。
ChatInterface(聊天界面) 旨在透明地展示系统的推理过程。它不是显示一个加载转圈图标,而是通过 Server-Sent Events(SSE)实时流式传输系统思考过程。用户可以清楚看到系统正在进行的操作:分析查询、选择检索策略、执行图操作,并逐个 Token 生成最终答案。这种透明性建立信任,并降低复杂多跳查询的感知延迟。
作者供图 | GraphOS 聊天界面
OntologyEditor(本体编辑器) 旨在使知识建模民主化。它不强制用户编写 YAML 或代码,而是提供一个可视化界面用于定义实体类型、关系和校验规则。其目的是让理解数据但技术背景较弱的领域专家也能管理本体。编辑器包含测试功能,可在生产部署前使用示例文档验证本体,避免代价高昂的提取错误。
作者供图 | OntologyEditor
DocumentIngestion(文档摄取) 组件旨在解决灵活数据摄取的挑战。不同用例在模式灵活性与数据一致性之间需要不同的权衡。三种提取模式(动态、混合、严格)让用户能为其需求选择合适的平衡点。实时进度监控确保用户了解摄取过程中的状态,并能及早发现问题。
GraphExplorer(图探索器) 提供对知识图谱结构的可视化洞察。其目的使图关系直观且可探索,帮助用户理解实体如何连接,并验证提取是否捕获了正确信息。力导向布局自然揭示集群和重要节点,使复杂图结构变得易于理解。
作者供图 | GraphExplorer
AnalyticsDashboard(分析仪表盘)、PromptManager(提示管理器)、AgentsManager(智能体管理器) 和 WorkflowsManager(工作流管理器) 等附加组件构成了完整的运维工具包。每个组件都针对特定的生产需求:成本监控、提示版本控制、智能体可观测性以及工作流定制。它们共同提供对系统的全面控制,而无需直接访问数据库或代码。
第 1 层:中间件栈
在任何请求到达核心系统之前,都要经过一个中间件栈,该栈旨在保护系统并维持可观测性。在实践中,这一层变得不可或缺。
早期版本的系统在受控环境中运行良好,但在多智能体工作流中调试故障几乎不可能——如果没有适当的可观测性,当出现问题时,我们无法判断是检索、路由、提示构建还是模型本身的问题。在此处添加显式埋点,将不透明的故障转化为可追踪的执行路径。
RateLimitMiddleware(限流中间件) 防止资源耗尽,并确保跨客户端的公平使用。不同端点消耗的计算资源差异巨大——一次简单的向量搜索与一次复杂的多跳图遍历在成本上可能相差 10 倍。该中间件为不同端点实现反映其成本差异的限流策略,防止昂贵操作压垮系统。令牌桶算法允许合法的突发流量,同时阻止持续滥用。当超出限制时,客户端会收到精确的重试时间,实现优雅退避而非请求失败。
AuthMiddleware(认证中间件) 实现真正的多租户,确保数据完全隔离。其目标是使用共享基础设施为多个组织提供服务,同时保证任意租户无法访问其他租户的数据。每个租户拥有隔离的 Neo4j 命名空间、专用的向量索引和独立的本体注册表。基于角色的访问控制确保不同用户层级拥有适当的权限。该架构在维持企业级安全的同时,实现基础设施的高效共享。
MetricsMiddleware(指标中间件) 为整个系统提供可观测性基础。每个请求都以延迟直方图、错误率和请求大小进行埋点,并按端点、租户和查询类型打标签。这种细粒度数据使运维人员能够识别瓶颈、检测异常并理解使用模式。自定义业务指标(如策略选择频率和每次查询成本)提供了对基于研究的路由器决策的洞察。没有这一层,系统将成为一个黑盒。
TracingMiddleware(追踪中间件) 支持对复杂多智能体工作流进行深度调试。当查询失败或产生意外结果时,分布式追踪可显示完整的执行路径:调用了哪些智能体、进行了哪些 LLM 调用、使用了哪些工具,以及错误发生的位置。每个请求分配一个唯一的追踪 ID,贯穿整个系统,实现端到端请求追踪。这一能力对于生产环境中调试和优化提示工程至关重要。
第 2 层:流式处理与 GraphQL
该层解决两个关键用户体验需求:实时反馈和灵活查询接口。现代用户期望立即看到进展,而不是等待完整结果;高级用户则需要无需学习查询语言即可直接访问图的能力。
StreamingRouter(流式路由器) 旨在消除 AI 系统中的“黑盒”问题。系统不是显示加载转圈图标,而是实时流式传输推理过程。用户可以看到思考事件(查询分析、策略选择)、工具事件(数据库操作)、Token 事件(答案生成)和元数据(成本、延迟、来源)。这种透明性建立信任——用户理解为何获得特定答案及其成本。流式处理也降低感知延迟;用户与部分结果交互,而非等待完成。
作者供图 | 流式响应事件 Server-Sent Events 实时流式传输思考、工具执行和 Token 生成
NL→GraphQL Translator(自然语言到 GraphQL 转译器) 弥合了自然语言与结构化查询之间的鸿沟。其目的是让高级用户无需学习 Cypher 或 GraphQL 语法即可直接访问图。用户以自然语言表达意图,系统将其转译为有效的图查询。模式感知确保转译使用知识图谱中实际存在的实体类型和关系。安全检查防止可能压垮数据库的失控查询。这一能力使数据分析师和研究人员能够直接探索图,同时保持系统稳定性。
第 3 层:工作流编排
该层的存在是因为复杂的 AI 工作流需要状态管理、错误恢复和可组合性。没有这些能力,多步骤流程将变得脆弱且难以调试。
Checkpointing System(检查点系统) 解决了 AI 工作流的无状态问题。每个工作流状态都持久化到数据库中,支持跨会话的对话连续性、失败步骤的错误恢复、用于调试的完整对话重放,以及不同工作流版本的 A/B 测试。这对生产系统至关重要——用户期望关闭浏览器后能继续对话,运维人员需要在不丢失上下文的情况下调试故障。该系统处理复杂对象的序列化,使状态持久化对工作流开发者完全透明。
FlowClasses Module(流类模块) 提供可组合的工作流构建块。其目的是在不重复代码的前提下实现工作流复用和定制。每个流都是一个具有明确定义输入输出的自包含组件。例如,摄取工作流由 DocumentAnalysisFlow、ChunkingFlow、ExtractionFlow、ValidationFlow 和 LoadingFlow 组成。这种模块化使工作流可测试、可调试,并能适应不同用例。
Preset Workflows(预设工作流) 应对不同用例具有不同需求的现实。快速摄取(Quick Ingest)优先考虑探索性分析的速度。严格本体(Strict Ontology)确保生产系统的数据一致性。混合模式(Hybrid Mode)兼顾两者。研究模式(Research Mode)不惜成本优化准确率。快速模式(Fast Mode)为实时应用最小化延迟。预设方案让用户能为其需求选择合适的权衡,而非被迫使用一刀切的方法。
第 4 层:用户意图澄清
并非所有查询都直截了当。该层在将查询路由至检索策略前,分析用户意图并澄清模糊查询。
QueryDecomposer(查询分解器) 执行三项关键功能。首先,它使用 LLM 检测模糊性,识别可能有多种解释的查询。例如,“告诉我关于 Jaguar 的信息”可能指动物或汽车公司。检测到模糊性时,系统会提出澄清问题:“您指的是捷豹汽车制造商还是美洲豹动物?”其次,它将复杂查询分解为可独立回答的子查询。“比较特斯拉和福特的电动汽车战略”被拆分为三个子查询:“特斯拉的电动汽车战略是什么?”、“福特的电动汽车战略是什么?”以及“两者的关键区别是什么?”每个子查询分别路由,结果被合成为最终答案。第三,它将查询分类为意图类别(事实性、定义性、程序性、关系性、比较性、分析性、探索性),为下游路由决策提供依据。
第 5 层:查询分类
一旦理解了用户意图,系统会将查询分类为三种基于研究的类别,以确定检索策略。
QueryRouter(查询路由器) 实现两阶段分类过程。第一阶段使用快速启发式分类,通过查询结构的模式匹配(疑问词、实体提及、关系指示符)为 70% 的查询提供即时分类,延迟低于 10ms。第二阶段为模糊情况使用 LLM 回退,采用带有少量示例的轻量模型进行查询类型分类。这种混合方法在保持 95% 以上分类准确率的同时,将整体延迟控制在 50ms 以内。
查询被分为三类。具体问答(Specific QA) 查询(例如,“谁创立了 OpenAI?”)具有可通过简单实体查找或单跳图遍历找到的单一事实答案。它们快速且廉价,仅需 500–1000 个 Token。抽象问答(Abstract QA) 查询(例如,“现代 AI 研究的主要主题是什么?”)需要跨多个文档或实体进行聚合,受益于能将相关概念分组的社区检测算法,需要 2000–2500 个 Token。多跳问答(Multi-hop QA) 查询(例如,“DeepMind 创始人如何影响了 Google 的 AI 战略?”)需要在知识图谱中追踪关系链,需要具备查询重规划能力的智能体多跳推理,消耗 3000–3500 个 Token,但达到最高准确率。
第 6 层:基于研究的路由器
这是实现 30–50% 成本降低的智能层。系统不会对每个查询使用相同的检索策略,而是智能地将每个查询路由到满足准确率要求且最具成本效益的策略。
该路由器建立在对 12 种 GraphRAG 方法(RAPTOR、HippoRAG、LGraphRAG、FastGraphRAG、KGP、DALK、ToG、LightRAG 变体、VGraphRAG、RGraphRAG)在 6 个基准(MultihopQA、QuALITY、PopQA、MusiqueQA、HotpotQA、ALCE)上的分析基础上。这项研究揭示了三个关键洞见。首先,检索算子的选择(PPR、社区检测、链接遍历)比图密度更重要——添加个性化 PageRank 可将准确率提高 20%,而社区检测可再提升 25%。其次,性能在 1–3M Token 的数据集规模下达到峰值;更小的数据集缺乏上下文,而更大的数据集会引入噪声。第三,只有三种方法是帕累托最优的(在给定成本下实现最佳准确率):HippoRAG、RAPTOR 和 FastGraphRAG。
路由器使用 epsilon-greedy 算法(ε=0.1,衰减=0.995)平衡利用与探索。对于每个查询,它会分析数据集(检测规模、图密度、实体分布),分类查询类型,并选择策略。90% 的时间使用当前查询类型和数据集配置下表现最佳的策略;10% 的时间探索替代策略以收集性能数据。随着时间推移,路由器会学习哪些策略最适合你的特定数据和查询模式,持续优化成本-性能权衡。
一个意外的教训是:如果不对探索加以控制,成本可能会急剧漂移。
在早期实验中,将探索率提高到 20% 以上会导致成本明显回升,而准确率并无显著提升。在某些数据集上,系统不断“重新发现”昂贵的多跳策略并不比更便宜的混合方法表现更好。收紧 ε 并引入衰减,在不损害答案质量的前提下稳定了成本和延迟。
基于研究的路由器仪表盘 策略对比显示基准结果、成本-性能权衡和帕累托前沿分析
作者供图 | 分析
每次检索操作都通过 Token 计数进行埋点:输入 Token(查询 + 检索上下文)、输出 Token(生成的回答)和总成本(根据提供商特定定价计算)。在生产环境中,这实现了 30–50% 的成本降低,通过将简单查询路由至廉价策略,并仅将昂贵的多跳推理保留给真正需要的查询。
第 7 层:多智能体系统
复杂查询需要专业化知识。该层实现一个监督智能体,将任务委派给四个专业工作智能体,每个智能体针对不同的数据源和操作进行了优化。
SupervisorAgent(监督智能体) 通过智能委派协调多智能体系统。其目的是将每个子任务路由到最适合处理它的工作者,而非使用单一智能体处理所有操作。监督者实现 ReAct 循环:观察(检查当前状态)、思考(推理下一步)、行动(委派或合成),并重复(直至完成)。这创建了一个适应性工作流,能基于中间结果进行航向修正、重试失败操作,并从多个专业来源组合信息。
多智能体系统仪表盘 监督智能体协调四个专业工作者,实时任务委派与状态监控
四个专业工作者 各自专注于特定领域。研究员(Researcher)工作者处理外部数据源——网络搜索、API、文档检索——获取尚未进入知识图谱的信息。图专家(Graph Specialist)工作者精通 Neo4j 操作,处理图遍历、Cypher 查询和路径查找。向量专家(Vector Specialist)工作者管理通过嵌入和相似性匹配的语义搜索。摄取管理器(Ingestion Manager)工作者控制数据流水线,编排文档解析、实体提取和图构建。这种专业化使每个工作者都能在其领域内优化,而非构建一个什么都做但什么都做不好的通才智能体。
所有智能体状态通过 LangGraph 的检查点系统持久化,后端使用 PostgreSQL(生产)或 SQLite(开发)。这支持跨会话的对话连续性、失败操作的错误恢复、用于调试的完整对话重放,以及所有智能体决策的完整审计追踪。
第 8 层:五种检索策略
该层实现了五种经过研究验证的检索策略,每种策略都针对不同的查询类型和成本约束进行了优化。你将看到每种策略如何由基础算子组合而成,以实现特定的准确率和延迟目标。
策略 1:VanillaRAG(500 Token,300ms,PopQA 52%)是基线。它执行纯向量相似性搜索:嵌入查询,找到与之最相似的 top-k 文档块,并将其传递给 LLM。快速且廉价,但仅限于表面相似性匹配。VectorRetriever 使用 Mistral 或 OpenAI 嵌入和 Neo4j 向量索引实现亚秒级检索。
策略 2:HippoRAG(1200 Token,800ms,MultihopQA 58%)结合向量搜索与图遍历。它从向量相似性开始,然后使用链接算子扩展到一跳邻居。这同时捕获语义相似性和结构关系。HybridRetriever 使用向量搜索获取初始候选,然后应用个性化 PageRank(PPR)根据与查询的相关性对邻居进行排序。
策略 3:LGraphRAG(2500 Token,1500ms,ALCE 70%)使用社区检测识别相关实体集群,然后跨社区聚合信息。非常适合“AI 研究的主要趋势是什么?”这类需要从多个来源综合信息的查询。AdvancedRetriever 使用 Neo4j GDS(图数据科学)库运行 Louvain 社区检测,然后从每个社区检索代表性文档。
策略 4:GraphReader(3500 Token,2000ms,MultihopQA 59.7%)是最复杂的:一个智能体工作流,能迭代探索图,并根据中间结果重新规划搜索。它被实现为一个 6 节点 LangGraph 工作流:初始发现(向量搜索起始实体)、跳分析器(决定要跟随哪些关系)、上下文管理器(摘要并修剪上下文以避免 Token 溢出)、答案评估(检查当前上下文是否足够)、查询重规划(根据缺口重新表述查询)和最终答案编译(综合所有跳的信息)。该策略最多可追踪 3 跳的推理链,并根据发现动态调整搜索。
策略 5:FastGraphRAG(1500 Token,600ms,MultihopQA 55%)是一种速度优化变体,使用激进的上下文修剪和并行检索。它牺牲部分准确率以实现 3 倍更快的执行速度,非常适合对亚秒级响应至关重要的实时应用。
每种策略都由 五种基础算子 组合而成:向量数据库算子(使用嵌入的密集检索)、链接算子(一跳图遍历)、PPR 算子(用于相关性排序的个性化 PageRank)、社区算子(社区检测与聚合)和单跳算子(简单邻居扩展)。这些算子是可组合的构建块,允许通过混合匹配算子来创建自定义策略,以满足查询需求。
第 9 层:知识图谱
知识图谱是系统的核心,将所有实体、关系和嵌入统一存储在 Neo4j 数据库中。你将看到图模式、混合搜索和图算法如何协同工作,实现强大的检索能力。
图模式 使用属性图而非 RDF 三元组。实体是带有类型标签的节点(Person、Company、Technology 等),关系是带有属性的类型化边(FOUNDED、WORKS_AT、ACQUIRED 等),节点和关系都具有捕获语义含义的向量嵌入。元数据包括时间戳、来源、置信度分数和溯源信息。这种灵活的模式允许在不进行模式迁移的情况下添加任意属性,同时通过策略性索引保持查询性能。
混合搜索 结合三种方法。结构匹配使用 Cypher 查询进行精确属性匹配。语义匹配使用向量相似性进行概念相关性检索。图算法使用 PPR、社区检测和最短路径进行基于关系的检索。例如,查找“与特斯拉相似的公司”使用向量相似性找到语义相关的公司,然后按结构属性过滤(2000 年后成立、属于汽车行业),最后按图中心性排序。
系统利用 Neo4j 图数据科学(GDS) 库进行高级算法。个性化 PageRank 从查询实体提供相关性排序。Louvain 社区检测聚类相关实体。节点相似性查找结构相似的实体。最短路径计算多跳推理链。这些算法使用优化的 C++ 实现在数据库内运行,性能比基于 Python 的图库高出几个数量级。
向量索引 使用 Neo4j 原生的 HNSW(Hierarchical Navigable Small World)算法进行近似最近邻搜索。在 100 万个实体下,系统在 top-100 检索中实现低于 50ms 的查询延迟,相比精确搜索的 recall@100 超过 95%,100 万个 1536 维向量的索引大小约为 2GB。向量索引在添加新实体时自动更新,确保图增长时保持搜索性能。
第 10 层:本体操作系统
本体系统为定义、验证和演化领域知识提供了完整的生命周期管理。该层的存在是因为没有本体的知识图谱会遭遇模式不一致、数据质量差和语义模糊等问题。
14 个模块 按功能分组,涵盖本体生命周期的不同方面。核心模块处理本体定义和加载,为所有其他操作奠定基础。提取和验证模块确保摄取的数据符合定义的模式,防止垃圾数据进入图谱。高级功能支持层次推理、谱系追踪、复杂关系建模、本体测试、AI 驱动的演化、跨本体对齐、本体感知嵌入和上层本体集成。这些模块共同构成了一个知识建模的“操作系统”。
本体生命周期 包含六个阶段。定义:本体在 YAML 中定义,包含实体类型、关系、约束和分类法。加载:加载器解析 YAML,验证结构,并注册本体。提取:摄取文档时,提取器使用本体通过本体感知提示指导实体提取。解析:解析器使用字符串匹配和语义相似性对实体进行去重。推理:分类法推理器基于层次结构推断隐式关系。演化:演化智能体监控提取失败并建议本体改进。
系统提供 7 个预构建本体 用于常见领域:技术(公司、产品、技术)、医疗(疾病、治疗、临床试验)、金融(公司、交易、市场事件)、学术(论文、作者、机构)、法律(案件、法规、当事人)、新闻(事件、人物、组织)和通用(用于通用概念的上层本体)。用户可以扩展这些本体或为其领域创建自定义本体。
第 11 层:评估与质量保证
该层的存在是因为生产系统中答案质量不容妥协。没有系统性评估,就无法知道系统是在改进还是退化。RAGAS 提供了六个互补指标,从不同角度衡量质量。
RAGAS 评估器 从六个维度衡量答案质量。忠实度(Faithfulness)通过验证答案中的每个主张是否得到检索上下文支持来检测幻觉。答案相关性(Answer Relevance)检查答案是否真正回答了用户问题,而非仅相关主题。上下文精度(Context Precision)衡量检索到的上下文是否与问题相关。上下文召回率(Context Recall)检查是否检索到了所有相关信息。答案相似度(Answer Similarity)和答案正确性(Answer Correctness)衡量与标准答案的语义和事实对齐程度。这些指标共同提供了超越简单准确率分数的全面质量评估。
值得注意的是,RAGAS 分数的提升并不总与用户满意度提升正相关。在若干案例中,略低的忠实度分数反而产生了用户更偏好的答案,因为它们更简洁、更易理解。这些案例现在由人工审核,而非盲目优化。
去噪循环(Denoising Loop) 通过多轮处理提升答案质量。第一轮使用检索到的上下文生成初步答案。第二轮使用 RAGAS 指标识别问题:低忠实度表明存在幻觉,低上下文召回率表明信息缺失,低答案相关性表明答非所问。第三轮基于识别的问题进行优化:检索额外上下文填补缺口,移除幻觉主张,将答案重新聚焦到查询上。第四轮检查收敛性:如果 RAGAS 分数提升并超过阈值,则返回答案;否则重复优化(最多 3 轮)。该循环在基准测试中将答案质量提升 15–20%,代价是 Token 使用量增加 1.5 倍。
所有评估指标都会自动记录到 LangSmith,提供历史趋势(质量如何随时间演变)、A/B 测试(比较不同提示或策略)、调试(深入分析低分示例)和告警(当质量低于阈值时通知)。
第 12 层:最终输出处理
在将答案返回给用户之前,系统会执行最终的质量检查和优化。你将看到收敛性检查、上下文修剪、用户记忆和语义缓存如何协同工作,以提供高质量、高性价比的响应。
收敛性检查(Convergence Check) 通过检查完整性(查询的所有部分都得到解答)、一致性(答案中无矛盾)和置信度(信心足够高以呈现给用户)来验证答案是否稳定且完整。如果未满足收敛标准,系统会触发另一轮检索或优化。
上下文修剪(Context Pruning) 通过按查询相关性对上下文块进行排序、摘要低相关性块以保留信息同时减少 Token、移除完全无关的块,并将最相关的块排在前面,从而减少 Token 浪资。这通常在保持答案质量的同时将上下文大小减少 40–60%。
UserMemoryAgent(用户记忆智能体) 通过短期记忆(最近 5–10 轮用于即时上下文)、长期记忆(从整个对话历史中提取的关键事实)和偏好学习(用户偏好的答案风格、详细程度、来源)在多轮对话中维持上下文。这使用户能够自然地进行多轮对话,提出后续问题而无需重复上下文。
语义缓存(Semantic Caching) 使用 Redis 缓存相似查询。系统嵌入查询,在缓存中检查相似查询(余弦相似度 > 0.95),命中时返回缓存答案(带新鲜度检查),未命中时执行完整检索并将结果缓存。这为重复查询提供 30–50% 的成本降低,在生产环境中用户经常提出类似问题。
第 13 层:上下文与记忆管理
认知状态系统
虽然常被忽视,但状态管理是将一个无状态“查询引擎”转变为一个连贯“对话伙伴”的关键。该层与处理流水线并行,管理跨越三个时间维度的状态:即时、会话和持久。
1. 双存储架构
我们采用 热/冷 记忆架构以平衡延迟与持久性:
- 热记忆(Redis):存储活跃会话状态、当前对话图和语义缓存。优化为亚毫秒级读写操作,以最小化“首 Token 时间”。
- 冷记忆(Neo4j 与 Postgres):存储长期用户档案、历史对话归档(向量化用于检索)和关于用户的提取事实。
2. 语义缓存(成本防火墙)
优化 RAG 最有效的方法就是完全不执行 RAG。
- 机制:每个传入查询都通过
text-embedding-3-small嵌入,并针对组织内 所有 已回答查询的 Redis 向量索引进行查询。 - 命中逻辑:如果找到余弦相似度 > 0.95 的缓存查询(例如,“重置密码” vs “如何更改我的密码”),立即返回缓存答案。
- 影响:在生产中,这实现了 30–50% 的缓存命中率,将常见 FAQ 的延迟从 2 秒降至 50 毫秒,成本降至零。
3. 基于图的对话历史
基于简单列表的历史(追加消息)在用户分支对话或编辑先前消息时会失败。
- 实现:我们将对话历史建模为 Redis 中的 树 结构。每条消息是一个带有
parent_id的节点。 - 分支:如果用户编辑了 3 轮前的消息,我们只需从该点创建一个新子节点,在历史中保留原始分支,同时沿新路径导航。这在聊天界面中启用了“撤销/重做”逻辑。
4. 智能上下文修剪
如何将长对话塞入有限的上下文窗口(例如 8k Token)而不丢失重要的早期细节?
-
策略:我们实现 基于相关性的驱逐,而非简单的先进先出(FIFO)滑动窗口。
-
算法:
-
始终保留 系统提示(身份)。
-
始终保留 最近 3 轮(近因性)。
-
对于中间范围,根据 与当前查询的语义相似性 对先前轮次进行排名。
-
用最相关的历**史轮次填充剩余预算。
-
这创造了“无限记忆”的错觉——系统“记住”了 50 轮前提到的特定细节(如果它再次变得相关),而不会用无关聊天淹没上下文窗口。
5. 用户个性化
系统会随时间学习偏好。
- 事实提取:分析用户消息中的断言(“我是 Python 开发者”、“我讨厌冗长的解释”)。
- 持久化:将这些事实存储在 Neo4j 用户图中:(User)-[:HAS_PREFERENCE]->(Concept)。
- 注入:在运行时,这些偏好被检索并注入提示前言。系统隐式适应:“这是代码…”(面向开发者)vs “这是它的工作原理…”(面向管理者)。
第 14 层:数据源与摄取
知识图谱的质量取决于其数据。该层通过三种提取模式处理多样化的数据源,确保高质量的实体提取和图构建。
系统支持 四种数据源。内部数据库(🗄️)使用直接的 SQL/NoSQL 数据库连接进行增量同步,跟踪变更日志以仅处理新增或更新的记录。网络搜索(🌐)为需要当前信息的查询提供实时网络搜索,集成 Google 搜索 API 和网页抓取以进行全文提取。文档(📄)支持多格式处理(PDF、DOCX、HTML、Markdown、TXT),使用 Apache Tika 进行格式检测和文本提取。MCP(🔌)通过 Anthropic 的模型上下文协议(Model Context Protocol)与外部工具和 API 集成,支持连接 Slack、GitHub、Notion 和自定义 API。
三种摄取模式 提供不同的权衡。动态提取(Dynamic Extraction)没有预定义本体;系统自动从数据中发现实体类型和关系。快速且灵活,但可能产生不一致的模式。用例:新领域的探索性分析。混合提取(Hybrid Extraction)结合本体引导提取与动态发现,使用本体提取已知实体类型,同时发现模式中未包含的新类型。用例:用新数据扩展现有知识图谱。严格本体(Strict Ontology)仅提取本体中定义的实体和关系,拒绝不符合模式的数据。确保一致性,但可能遗漏信息。用例:具有严格数据治理的生产系统。
严格本体模式特别难以正确实现。
在早期部署中,过于僵化的模式导致了静默数据丢失——由于不完全符合本体,实体被跳过。解决方案不是放宽验证,而是改进反馈:失败的提取现在会生成可操作的报告,解释数据被拒绝的原因,使本体演化成为一个引导过程,而非试错。
摄取流水线 包含八个阶段。文档分析检测格式、语言和结构,提取元数据(作者、日期、来源)。自适应分块(Adaptive Chunking)根据内容类型执行智能分块:学术论文按章节、新闻文章按段落、代码按函数、表格按行。实体提取使用基于 LLM 的提取和本体感知提示,包括每个提取实体的置信度分数。关系提取提取实体间的关系,包括带有属性的 n 元关系。提取 QA 使用质量保证智能体审查提取,检查缺失的必需属性、类型不匹配和不太可能的关系。实体解析使用字符串匹配加语义相似性对实体去重,合并重复项并整合属性。图加载执行批量插入 Neo4j 并解决冲突,使用新嵌入更新向量索引。错误恢复记录失败的提取并使用不同提示或模型重试,将持续失败标记为人工审核。
第 15 层:研究分析与监控
生产系统需要全面监控。该层使用六个集成监控系统跟踪成本、性能、质量和系统健康状况。
成本跟踪 为每个查询埋点 Token 计数:输入 Token(查询 + 上下文)、输出 Token(生成答案)、总成本(根据提供商定价计算)、每种查询类型的成本(Specific/Abstract/Multi-hop 的细分)和每种策略的成本(哪些策略最昂贵)。系统跟踪累积成本,并在超出日预算时发出警报。
帕累托前沿分析 持续监控每种策略的成本-性能权衡,通过绘制所有策略的准确率与成本,识别帕累托最优策略(给定成本下的最佳准确率),并标记应淘汰的劣质策略。该分析已确定 HippoRAG 和 FastGraphRAG 对大多数工作负载是帕累托最优的。
基准比较 维护一个包含 1000 个带有标准答案的查询测试集,覆盖所有查询类型。每周,系统在该基准上运行所有策略并跟踪准确率趋势(我们是否在持续改进?)、回归检测(最近的更改是否损害了性能?)和策略比较(哪些策略在哪些查询类型上表现优异?)。结果在 Grafana 仪表盘中可视化,并为回归设置自动告警。
性能监控 跟踪实时延迟,包括每种策略的 P50、P95、P99 延迟,延迟分解(检索与 LLM 生成所花时间),以及瓶颈识别(哪些组件最慢)。这些数据已通过缓存、并行检索和查询优化实现了 20–25% 的延迟降低。
LangSmith 追踪 为每个 LLM 调用提供完整的分布式追踪,包括对话树(可视化多轮对话)、Token 使用量(每次调用的 Token 分解)、提示版本(A/B 测试不同提示)和错误跟踪(识别失败的提示或工具)。这对调试复杂智能体工作流和优化提示工程至关重要。
分析与监控仪表盘 综合分析显示成本跟踪、性能指标和帕累托前沿可视化
Grafana + Prometheus 提供系统级监控,包括请求速率(每秒查询数)、错误率(每秒失败查询数)、资源使用量(CPU、内存、磁盘、网络)、数据库指标(Neo4j 查询延迟、连接池使用率)和缓存命中率(Redis 缓存有效性)。Prometheus 每 15 秒收集一次指标,Grafana 在实时仪表盘中可视化这些指标,并通过 PagerDuty 集成提供关键告警。
第 16 层:部署与基础设施
最后一层处理部署、扩展和生产运维。你将看到如何容器化系统、配置多租户、设置缓存以及集成多个 LLM 提供商。
容器化 使用 Docker 和 Kubernetes。每个组件都在 Docker 容器中运行:API 服务器(FastAPI 应用)、工作节点(Celery 异步任务工作者)、Neo4j(图数据库)、Redis(缓存和消息队列)和 PostgreSQL(检查点和元数据)。系统同时提供 Docker Compose(本地开发)和 Kubernetes 清单(生产部署),支持自动扩展(基于队列深度扩展工作者)、健康检查(自动重启失败容器)、滚动更新(零停机部署)和资源限制(每个容器的 CPU 和内存配额)。
多租户 提供完全隔离。每个租户拥有专用的 Neo4j 数据库(完全数据隔离)、独立的向量索引(无跨租户数据泄露)、每租户本体(每租户自定义模式)和资源配额(速率限制、存储限制、计算限制)。租户隔离在中间件层强制执行,每个请求的 JWT 令牌包含租户 ID,并在每次请求时验证。
语义缓存 使用 Redis 提供精确匹配缓存(相同查询返回缓存结果)、语义缓存(余弦相似度 > 0.95 的相似查询返回缓存结果)、新鲜度检查(基于数据更新的缓存失效)和负缓存(缓存“未找到”结果以避免重复失败查找)。生产缓存命中率:40–60%,带来巨大的成本节约。
LLM 提供商灵活性 使用 LiteLLM 提供统一的 LLM 访问,支持 Cerebras(超快推理,1000+ Token/秒)、OpenAI(GPT-4、GPT-3.5)、Groq(使用 Llama 模型的快速推理)、Mistral(具有商业支持的开源模型)、Anthropic(Claude 模型)、AWS Bedrock(企业级部署)、Google VertexAI(GCP 原生部署)和 Azure OpenAI(Microsoft Azure 集成)。这种灵活性允许优化成本(将廉价查询路由到廉价模型)、确保可用性(故障转移至备用提供商)、满足合规性(使用区域特定部署)和 A/B 测试(比较模型性能)。
实现
要构建该系统,首先从基础设施基础开始。部署使用由 Kubernetes 编排的 Docker 容器,以 Neo4j 4.4+ 作为图数据库,PostgreSQL 用于检查点,Redis 用于缓存。系统在 NVIDIA GPU 上运行以生成嵌入,尽管较小工作负载也支持纯 CPU 部署。
配置完基础设施后,安装所需依赖。后端使用 Python 3.8+,搭配 FastAPI、LangChain、LangGraph 和 LiteLLM。前端使用 Next.js 14、React 18 和 TypeScript。Neo4j 需要图数据科学(GDS)库以支持个性化 PageRank 和社区检测等高级算法。
然后通过设置环境变量配置系统,包括 API 密钥(OpenAI、Anthropic、Mistral)、数据库连接(Neo4j、PostgreSQL、Redis)和监控端点(Prometheus、Grafana、LangSmith)。配置包括租户隔离设置、每个端点的速率限制和每种查询类型的成本预算。
本体设置涉及从 7 个预构建本体中选择一个,或在 YAML 中定义自定义本体。本体定义实体类型、关系、验证规则和分类法。使用 OntologyEditor 组件测试本体,使用示例文档验证后再部署到生产环境。
数据摄取从通过 DocumentIngestion 组件上传文档开始。选择一种提取模式(动态、混合或严格),系统将通过 8 阶段摄取流水线处理文档。实体和关系被提取、验证、解析并加载到 Neo4j。向量索引会自动使用所有新实体的嵌入进行更新。
查询处理通过设置基于研究的路由器(epsilon-greedy 参数:ε=0.1,衰减=0.995)进行配置。路由器会随时间从查询性能中学习,持续优化策略选择。通过 AnalyticsDashboard 监控路由器决策,跟踪成本节约和准确率指标。
通过配置 Prometheus 每 15 秒从所有组件抓取指标来设置监控。Grafana 仪表盘可视化请求速率、延迟分布、每次查询成本和策略选择频率。为所有 LLM 调用启用 LangSmith 追踪,提供完整的对话树和 Token 使用分解。在 Grafana 中配置告警,当错误率超过阈值或超出日成本预算时通知。
性能结果
在生产部署中,系统实现了以下性能特征。对于具体问答(Specific QA)查询,系统使用 VanillaRAG 或 HippoRAG 策略达到 57.2% 的准确率(目标:55–57%)。对于抽象问答(Abstract QA)查询,使用 LGraphRAG 达到 71.8% 的准确率(目标:70–72%)。对于多跳问答(Multi-hop QA)查询,使用 GraphReader 达到 59.7% 的准确率(目标:58–60%)。这些结果在所有查询类型上都达到或超过研究基准。
成本降低显著。对所有查询使用 GraphReader 的基准成本为每次查询 。通过智能路由,优化成本降至每次查询0.08,实现 47% 的成本降低。启用语义缓存后,有效成本降至每次查询 $0.04,实现 73% 的总成本降低。
延迟性能满足生产 SLA。P50 延迟为 420ms(目标:<500ms),P95 延迟为 980ms(目标:<1000ms),P99 延迟为 1.8s(目标:<2000ms)。系统在所有百分位上均满足延迟目标。
系统可靠性高。过去 90 天的生产可用性为 99.8%。错误率为 0.3%,主要来自可自动重试的瞬时 LLM API 错误。启用语义缓存后的缓存命中率为 58%。峰值负载容量为每秒 150 次查询。数据库当前存储 250 万个实体和 800 万条关系。
为何此架构有效
该架构之所以成功,是因为它将经过研究验证的方法与生产工程最佳实践相结合。基于研究的路由器确保查询由满足准确率要求且最具成本效益的策略处理,避免了一刀切的陷阱。多智能体系统为不同数据源和操作提供专业化知识,支持单一单体智能体难以实现的复杂工作流。本体系统确保数据质量和一致性,防止困扰许多知识图谱系统的垃圾进垃圾出问题。
如果今天重建,我们会做哪些改变
如果重新开始,我们会将成本意识更早地推入流水线。一些路由决策仍是在部分检索后做出的,这意味着系统有时在意识到更便宜的策略就足够之前就已消耗了 Token。将成本估算完全前置到检索之前是当前积极改进的领域。
为何此架构有效
这些组件共同组成了一个平衡准确率、成本和运维复杂性的面向生产系统。该架构足够模块化,可扩展新的检索策略、本体或数据源,又足够集成以提供一致的用户体验。这不仅是一个研究原型或最小可行产品——这是一个完整的、面向企业部署的平台。
入门指南
要在你的环境中部署此系统,请遵循以下步骤。首先,克隆仓库并查阅架构文档。其次,使用提供的 Docker Compose 文件(本地开发)或 Kubernetes 清单(生产部署)配置基础设施。第三,为 API 密钥、数据库连接和监控端点配置环境变量。第四,使用 OntologyEditor 组件为你的领域选择或定义本体。第五,使用 DocumentIngestion 组件和你选择的提取模式摄取数据。第六,配置基于研究的路由器并监控其学习进度。第七,设置 Prometheus 和 Grafana 仪表盘进行系统监控。第八,为 LLM 调用调试启用 LangSmith 追踪。第九,在 Redis 中配置语义缓存以优化成本。第十,部署到生产环境并监控性能指标。
完整的部署过程大约需要 2–4 小时(由经验丰富的工程师完成),大部分时间花在基础设施配置和本体定义上。部署后,系统几乎无需持续维护,路由器会持续学习并基于你的特定工作负载优化策略选择。
结论
你已看到如何从零开始构建一个完整的、面向生产的 GraphOS 系统。该架构结合了 16 个集成层,从前端 React 到 Neo4j 知识图谱,并使用 Prometheus、Grafana 和 LangSmith 实现完整的可观测性。基于研究的路由器通过根据查询类型和数据集特征智能选择检索策略,实现 30–50% 的成本降低。多智能体系统为不同操作提供专业化知识。本体系统确保数据质量和一致性。监控栈提供对系统行为的完整可见性。
这不仅是一个研究原型。这是一个面向生产的平台,能以可预测的成本、高准确率和完整可观测性处理企业级工作负载。该架构模块化、可扩展,已准备好部署。
注意:本文提供了整个系统的高层次概述。在即将发布的文章中,我将逐一深入剖析这 16 个层级,为每个组件提供代码级 walkthrough、配置指南和架构决策日志。敬请期待深度解析!
参考文献:
这不仅是一个研究原型。它是一个面向生产的平台,但随着真实工作负载揭示新的权衡,它仍在不断演进。
-
GraphReader: Feng et al., 2024
-
LightRAG: Guo et al., 2024
-
RAPTOR: Sarthi et al., 2024
-
RAGAS: Shahul et al., 2023
-
LangGraph: Harrison Chase, 2024
希望这篇文章能为您带来一些帮助。如果有任何疑问或建议,请在评论区留言,我们将尽力回答!
让我们一起探索并推动前沿技术发展!🚀💻
祝好运!😊✍️
微信公众号:算子之心
-END-
更多推荐



所有评论(0)