简介:本文围绕纯向量检索、图谱增强检索与LLM预编译知识库三种方案展开对比,从知识库选型、工具定义、记忆系统、离线部署到数据维护逐层拆解,帮助开发者在延迟、成本、推理能力与运维复杂度之间做出条件化选型判断,并给出可落地的混合架构思路。
在企业AI落地场景中,用大语言模型(LLM)结合自有知识库搭建智能Agent,已经从一个技术验证题目变成了生产环境工程题目。很多团队的第一反应是选一个Agent框架,但实际跑过大半年生产环境之后会发现:决定Agent能不能稳定工作的,不是框架的编排能力,而是知识库的检索质量。
框架决定的是”怎么调用”,知识库决定的是”能不能答对”。框架可以替换,知识库一旦选错方向,后面的工具定义、记忆系统、数据维护都会跟着走偏。
本文对比的对象是三种主流的知识库构建方案:
三者解决的是同一个问题——让模型在回答时用上企业自有知识,但在实现路径、资源消耗、适用边界上差异巨大。
在展开差异之前,先明确它们的共同基础:
理解相同点,是为了避免把选型问题误判成”要不要上知识库”,真正的分歧在于知识以什么形态存储、以什么方式被召回。
| 维度 | 方案A 纯向量RAG | 方案B 图谱增强RAG | 方案C LLM预编译知识库 |
|---|---|---|---|
| 知识表示 | 向量+原文切片 | 向量+实体关系图 | 结构化条目/条目间引用 |
| 核心组件 | 嵌入模型、向量库 | 嵌入模型、向量库、图存储、抽取管线 | 嵌入模型、LLM编译管线、结构化存储 |
| 检索方式 | 单跳相似度 | 多跳图遍历+相似度 | 直接读取或轻量检索 |
| 构建时机 | 写入时索引 | 写入时建图(重) | 写入时编译(重) |
| 查询开销 | 低 | 中到高 | 低到中 |
方案A的架构最轻,写入即索引,查询即检索。方案B在写入阶段增加了实体识别、关系抽取、图谱构建,查询阶段需要做图遍历。方案C把计算压力全部前置到写入阶段,查询阶段反而最轻。
这是三种方案最本质的分野。
方案A的短板在跨文档推理。举个典型例子:操作员问”某系统保护动作跳闸后重合闸不成功,要检查哪些项目”,答案可能分散在三份不同的技术规程里,每份文档只覆盖一部分检查项。向量检索基于语义相似度,一次只能召回与问题最接近的几个切片,很难把分散在多个文档、且表述方式各不相同的信息一次性凑齐。结果是答案不完整,或者只答出一半。
方案B的优势正在于此。通过预先构建的实体关系图,”保护动作”、”重合闸”、”检查项目”之间的关联被显式建模,检索时可以沿着关系边做多跳扩展,把分散的知识点串起来。但代价是图谱构建极其吃资源:几百份行业规程建图,在自有GPU集群上需要跑很长时间,而且抽取质量高度依赖LLM的稳定性——抽取错一个关系,后面的多跳推理就全错。
方案C走的是另一条路。它不追求查询时动态推理,而是让LLM在写入阶段就把知识整理好。比如把一份规程编译成”故障现象—可能原因—检查步骤—引用来源”的结构化条目,Agent查询时直接拿到整理后的结论。这种方式的推理负担从查询时转移到了写入时,查询响应快、结果稳定,但token消耗同样巨大,而且断网环境下用国产模型跑,上下文长度是硬约束。
需要特别注意的是:在简单问题上,方案B不一定优于方案A。已有公开研究测试过,图谱增强在多跳问题上领先,但在单跳事实性问答上,额外的图遍历可能引入噪声,反而拉低准确率。这不是说图谱没用,而是说它不该被无差别地用在所有查询上。
这里的成本结构差异直接决定了选型:如果知识更新频繁而查询量不大,方案C的编译开销会被反复浪费;如果知识相对稳定而查询量巨大,方案C的前置投入更容易摊薄。
方案A的运维最接近传统搜索系统:监控检索命中率、召回率、索引新鲜度即可。
方案B多了一层图数据的一致性维护:文档更新后,旧的实体关系要不要删?新抽取的实体和已有实体怎么合并?同名实体怎么消歧?这些问题在文档量大时会迅速变成运维负担。
方案C的运维重点在编译质量:编译规则变了要不要全量重跑?编译结果和原始文档不一致怎么发现?这些都需要额外的校验机制。
企业自有知识库常常要求断网部署。三种方案在离线环境下的表现不同:
| 对比维度 | 方案A 纯向量RAG | 方案B 图谱增强RAG | 方案C LLM预编译知识库 |
|---|---|---|---|
| 单跳事实问答 | 好 | 一般(可能引入噪声) | 好 |
| 多跳关联推理 | 差 | 好 | 取决于编译质量 |
| 构建资源消耗 | 低 | 高 | 高 |
| 查询延迟 | 低 | 中高 | 低 |
| 增量更新成本 | 低 | 高 | 中高 |
| 离线部署难度 | 低 | 中 | 中高 |
| 运维复杂度 | 低 | 高 | 中 |
| 答案可解释性 | 中(靠引用切片) | 高(可展示关系路径) | 高(结构化条目自带来源) |
| 适合的知识类型 | 独立事实、FAQ | 关联密集的领域知识 | 稳定的规程、手册、SOP |
不建议用单一方案覆盖所有知识类型。更务实的做法是分层混合:
查询入口├─ 判断问题类型│ ├─ 单跳事实类 → 方案A(向量检索)│ ├─ 关联推理类 → 方案B(图谱多跳)│ └─ 规程流程类 → 方案C(预编译条目)└─ 结果融合 + 引用来源标注
具体判断条件:
如果从方案A迁移到方案B或C,需要重点评估:
用LLM和自有知识库搭建智能Agent,真正的难点不在”能不能跑起来”,而在”能不能稳定跑下去”。三种知识库方案没有绝对优劣:
选型的核心不是选最强的方案,而是让知识形态、查询特征、硬件条件和运维能力四者匹配。在多数生产环境里,混合方案比单一方案更现实——简单问题走向量检索,关联问题走图谱,稳定规程走预编译,并且始终保留可回退的路径。