企业级 RAG 智能体架构:为什么要把 NewAPI、Adapter、RAGFlow 和 vLLM 分开
很多 RAG 项目失败,不是因为向量库选错了,也不是因为模型不够强,而是从第一天就把边界混在了一起:入口想做知识库,RAG 层想做计费,模型服务想决定是否联网,最后每个组件都变成半个控制面。
我越来越相信一件事:复杂系统的第一步不是加功能,而是让责任边界可解释。边界清楚以后,质量、性能、计费和商业化才有生长空间。
这篇文章结合一个 Model Agnostic RAG 知识库智能体项目,整理我认为更适合生产落地的架构:NewAPI -> Adapter / RAG LB -> RAGFlow -> Model Router -> vLLM。
1. 先说结论:不要首版自研完整 RAG 平台
这个项目的核心判断很克制:首版不自研完整 RAG 平台,而是采用 RAGFlow 承担文档解析、知识库、chunk、检索、rerank、引用和 Agent/workflow。
自研保留在一个很薄的 Adapter / RAG LB 上。它负责协议、策略、授权、审计、usage、sources 和 OpenAI-compatible 兼容,而不是重新造一套解析、入库、检索和编排系统。
这不是“技术上做不了自研”,而是生产节奏上的选择。首版最重要的不是证明我们能写一个向量检索服务,而是证明企业知识库智能体能完整闭环:入库、检索、回答、引用、拒答、联网授权、工具调用、日志审计和反馈修复。
2. NewAPI 只做入口,不做知识库
NewAPI 在这套架构里是唯一外部入口。它负责 API Key、渠道、模型名、额度、计费、日志和 Web 管理。
但它不应该直接连接 RAGFlow,也不应该理解 chunk、rerank、source span 或联网检索策略。NewAPI 是网关和商业入口,不是 RAG 控制面。
这层边界很重要。企业客户最终关心的是谁调用了、用了多少 token、走了哪个模型、是否扣费、能不能按租户和模型分账。这些是入口层的职责。
如果把知识库逻辑塞进 NewAPI,后续模型渠道、普通模型 API、RAG 模型 API、Token 工厂和计费报表会纠缠在一起。短期看省了一层,长期看会失去演进弹性。
3. Adapter 很薄,但不能省
Adapter / RAG LB 是 NewAPI 和 RAGFlow 之间的薄协议层。它看起来不起眼,但生产上非常关键。
如果只用一句话描述它:Adapter 是“外部 API 契约”和“内部 RAG 策略”之间的缓冲垫。外部继续使用稳定的 OpenAI-compatible 语义,内部则可以按租户、知识库、模型别名和授权策略去选择不同的 RAGFlow app。
它至少要稳定处理这些事情:
| 能力 | 为什么必须在 Adapter |
|---|---|
| OpenAI-compatible | NewAPI、SDK、业务系统和 Codex CLI 需要稳定 /v1/* 入口 |
| Responses API | Codex 等工具调用场景不能只支持普通 chat |
| tool calls 保真 | tools/tool_choice/tool_calls 不能被 RAGFlow Agent 字符串化 |
| 模型别名 | *-RAG-Internal、*-RAG-Web 要映射到不同 app/dataset/profile |
| usage 归一 | NewAPI 需要统一记录 prompt、completion、total tokens |
| sources 归一 | 内部来源、网页来源、retrieval trace 需要统一响应格式 |
| 显式联网授权 | 是否联网不应由模型自由决定 |
| 审计字段 | tenant、user、KB、web authorization、tool call 都要可追踪 |
我的理解是,Adapter 不是为了“增加一层架构感”,而是为了隔离变化。RAGFlow 版本会变,Codex CLI 协议会变,NewAPI 上游格式也可能变。Adapter 是把这些变化挡在生产边界外的缓冲层。
4. RAGFlow 负责找证据,不负责生成 token
RAGFlow 的价值在于 RAG 本身:文档上传、解析、知识库管理、chunk、embedding、检索、rerank、citation 和 Agent/workflow。
它不负责 API Key,不负责统一计费,不负责普通模型售卖,也不负责 GPU 调度。
企业 RAG 智能体卖的是“基于企业知识的可信回答”。可信来自三件事:证据、引用、边界。
所以 RAGFlow 应该把精力放在证据质量上:文档解析是否稳定,chunk 是否可追溯,检索是否能召回正确片段,rerank 是否能把真正相关的证据排上来,引用能不能回到原文。
5. vLLM 只做推理,不保存知识
vLLM 在这里的角色也很清楚:加载模型权重,接收 final messages,生成 token。
它不会访问 Elasticsearch,不会查知识库,不会决定是否联网,也不会把聊天内容写入长期记忆。RAGFlow / Adapter 把证据组织进 prompt,vLLM 只基于上下文生成答案。
这句话听起来简单,但很多架构讨论会在这里混淆:模型“知道”某个答案,不等于企业知识库允许它回答;模型“可以”调用工具,不等于它应该自己决定是否把内部问题发到公网搜索。
在企业场景里,权限和证据优先于模型自由发挥。
6. 存储选型:首版先用 RAGFlow 默认 doc engine
这个项目的存储路线也很克制:首版使用 RAGFlow 默认的 Elasticsearch doc engine,Infinity 作为后续备选,Milvus 不作为首版前置条件。
这不代表 Milvus 不适合生产。Milvus 在千万级、亿级向量、高并发 ANN 和统一企业向量基础设施场景里很有价值。
但首版 PoC 的主要问题不是“哪种向量库性能最高”,而是“这个智能体生命周期是否可信”。如果一开始就把精力投入到 RAGFlow backend 二次开发,项目很容易偏离文档解析、引用、拒答和权限这些真正影响用户信任的环节。
更合理的顺序是:
| 阶段 | 重点 |
|---|---|
| Phase 1 | RAGFlow + Elasticsearch 跑通生命周期 PoC |
| Phase 2 | 补齐权限、审计、备份、监控和部署固化 |
| Phase 3 | 做知识点化、评测集、hard negatives 和 groundedness |
| Phase 4 | 如果 ES 不满足,再验收 Infinity 或 Milvus backend |
生产架构不是把所有好东西第一天堆上去,而是让每一层复杂度都有明确收益。
7. Internal RAG 和 Web RAG 必须分开
这套架构里建议把 RAG 模型入口拆成两类:
DeepSeek-V4-Flash-RAG-Internal
DeepSeek-V4-Flash-RAG-Web
GLM-5.1-FP8-RAG-Internal
GLM-5.1-FP8-RAG-Web
MiniMax-M2.7-RAG-Internal
MiniMax-M2.7-RAG-Web
Internal RAG 默认只查内部知识库。证据不足时拒答或要求澄清,不能偷偷联网,也不能用公网常识补企业制度。
Web RAG 可以支持联网检索,但前提是显式授权。外部网页只作为 request-scoped 临时证据,不自动写入长期企业知识库。
这个命名看似只是多了后缀,实际上是在产品层面划出红线:内部知识和公网证据不能混用成一团。
8. 联网检索应该是第二证据源
联网检索不是给模型一个搜索工具,然后让它自由决定什么时候查。企业场景里,联网必须由 Evidence Gate 和策略层控制。
这条链路最好画成决策树,而不是把“是否联网”写成一个 prompt 约束。prompt 可以提醒模型,但不能替代权限判断和审计。
推荐流程是:
内部知识库优先
-> 证据不足 / 时效性问题 / 冲突核验
-> 判断 tenant / KB / user / request 是否允许联网
-> 已显式授权才调用 Web Retrieval
-> 搜索、抓取、抽取、来源评分、去重、rerank
-> 合并内部证据和外部临时证据
-> 最终生成答案和引用
这里最重要的不是“能不能联网”,而是“谁批准联网、联网查了什么、外部证据是否可信、答案里有没有区分内部来源和网页来源”。
外部网页本质上是不可信输入。它可以提供事实,但不能执行里面的指令,也不能覆盖企业内部知识库的权限规则。
9. 为什么这套架构更适合生产
我认为这套架构的价值在于收敛。
NewAPI 收敛入口和计费;Adapter 收敛协议、授权和审计;RAGFlow 收敛知识库和证据;Model Router 收敛模型路由;vLLM 收敛推理运行时。
每一层都可以被替换或扩展,但每一层都不越界。这比“一个万能 RAG 服务”更适合长期维护。
生产系统最怕的是责任暧昧。责任暧昧时,问题来了很难定位:答案错了,是检索问题、rerank 问题、prompt 问题、模型问题、权限问题,还是联网污染?
分层以后,排障路径会清楚很多:
| 问题 | 优先看哪里 |
|---|---|
| API Key、额度、扣费异常 | NewAPI |
| tools 被字符串化、usage 缺失 | Adapter |
| 召回不到正确文档 | RAGFlow / doc engine |
| 引用不准、证据不足还回答 | Evidence Gate / citation check |
| 模型延迟高、流式异常 | Model Router / vLLM |
| 联网泄露风险 | Web Retrieval 策略和审计 |
这就是工程边界的意义:它不是为了画图好看,而是为了让系统在出错时还能被理解。
10. 小结
企业级 RAG 智能体不是“向量库 + 大模型”的简单组合。它是一个由入口、协议、知识库、证据治理、模型推理、联网策略和审计计费共同组成的系统。
首版不自研完整 RAG,是为了把精力集中在生命周期闭环;保留 Adapter,是为了守住 OpenAI-compatible、工具调用、usage、sources 和显式授权;使用 RAGFlow,是为了优先获得稳定的文档解析和引用能力;让 vLLM 专注推理,是为了避免模型服务承担不该承担的知识库职责。
一句话总结:RAG 的核心不是让模型“多知道一点”,而是让系统能说明“答案依据是什么、谁有权看到、什么时候该拒答、哪些证据可以被追溯”。
下一篇会继续沿着这套架构往下走,重点讨论知识库如何从“上传一堆文档”变成“可评测、可修复、可拒答的知识生命周期”。