跳至正文
来两杯美式
返回

企业级 RAG 怎么落地?不只是向量检索和大模型(附完整源码)

By 来两杯美式
发布于

企业级 RAG 落地不能只看向量检索和大模型。真正上线后,系统要处理的是知识从哪里来、怎么清洗脱敏、怎么切片、怎么做权限过滤、找不到答案时是否拒答、回答质量如何评估,以及知识过期后谁来维护。

所以企业级 RAG 更像一个知识工程系统,而不是一个简单的聊天接口。向量检索只是其中一环,混合检索、元数据、权限、安全、评估和运营闭环,才决定它能不能长期稳定使用。

很多人第一次做 RAG(Retrieval-Augmented Generation,检索增强生成)时,很容易把重点放在两个东西上:向量库和大模型。

这很正常。RAG 的经典链路看起来就是:

文档切片 → 向量化 → 向量检索 → 拼接上下文 → 大模型生成答案

但真正在企业场景落地时,很快会发现:向量检索只是其中一环,而且不是唯一关键的一环。

一个可用的企业级 RAG 系统,至少还要回答这些问题:

如果这些问题没有处理好,系统可能在 Demo 阶段看起来很好,但进入真实业务后就会暴露各种问题:答非所问、来源不清、权限越界、幻觉严重、知识过期、无法评估,也无法长期维护。

所以,企业级 RAG 不是“接一个向量库,再调一个大模型”那么简单。它更像一个围绕知识、权限、检索、生成、安全、评估和运营的工程体系。

企业级 RAG 总蓝图:从知识治理、切片入库、混合检索、权限过滤到生成、拒答、评估和运营闭环

一、先把知识治理好

RAG 的上限很大程度取决于知识质量。

如果知识源本身混乱、过期、重复、权限不清,再强的模型也只能把这些问题用更自然的语言表达出来。

1. 数据源要先统一抽象

企业知识往往分散在很多地方:

不同来源的格式、权限、更新方式都不一样。如果每接一种数据源都写一套临时解析逻辑,后面会很难维护。

更稳的做法是先建立统一的数据源抽象。每份文档至少需要有这些基础信息:

document_id       文档唯一 ID
source_type       来源类型
source_key        来源路径或业务标识
title             标题
author            作者或维护方
updated_at        更新时间
content_text      纯文本正文
content_markdown  保留格式的正文
acl_tags          权限标签
content_hash      内容哈希

这些元数据不是锦上添花,而是后续权限过滤、增量更新、来源引用、质量评估和问题排查的基础。

2. 入库前必须清洗和脱敏

企业 RAG 的第一原则是安全。不能把不该进入知识库的内容送进模型或向量库。

入库前至少要处理:

这里有一个常见误区:向量化不是脱敏手段。

敏感信息即使被 embedding,也仍然可能通过召回结果、上下文注入或日志泄露出来。因此,敏感信息必须在入库前处理,而不是等到生成阶段再兜底。

3. 知识要分级

不是所有知识都应该进入同一个知识库。

可以按风险分成几类:

等级示例处理方式
公开知识通用说明、公开规范可进入公共知识库
内部知识内部手册、普通项目文档按组织或角色授权
敏感知识合同、财务、个人信息、密钥配置专库专权,独立审计
禁止入库密码、Token、私钥、明文连接串入库前过滤

分级的目的不是增加流程负担,而是让系统从一开始就有安全边界。

二、切片不是越细越好

很多 RAG 效果问题,都和切片有关。

切得太大,检索不精准,容易把无关内容带进上下文;切得太小,语义不完整,模型只看到局部片段。

常见切片策略包括:

策略适用场景优点风险
固定长度切片通用文本实现简单容易截断语义
按标题层级切片Markdown、文档手册保留结构长章节需要二次切分
按语义段落切片FAQ、知识文章语义完整实现复杂
滑动窗口切片长文本保留上下文连续性存储和召回成本更高

实践中可以优先采用“标题层级 + 长度兜底”的方式:

最后一点很重要。流程类知识不能只靠普通 chunk,否则容易出现“召回相关片段,但漏掉完整流程”的问题。

三、元数据决定系统能不能长期运营

很多 RAG 系统一开始只存文本和向量,后面很快会遇到问题:无法按权限过滤,无法判断文档是否过期,无法追踪来源,无法增量更新。

所以,元数据设计要尽早做。

一个常见的 chunk 结构可以是:

chunk_id          切片唯一 ID
document_id       所属文档 ID
source_type       来源类型
source_key        来源路径或业务标识
title             文档标题
heading_path      标题路径
chunk_index       切片序号
content_text      纯文本内容
content_markdown  保留格式的内容
embedding         向量
keywords          关键词
acl_tags          权限标签
updated_at        更新时间
content_hash      内容哈希

这些字段可以支撑很多关键能力:

元数据不是为了“设计得好看”,而是为了让系统可控、可查、可迭代。

四、不要只做向量检索

向量检索很重要,但只靠向量检索通常不够。

1. 向量检索适合语义相似

向量检索擅长处理“用户说法和文档说法不一致”的情况。

例如用户问“怎么开通访问权限”,文档写的是“用户权限变更流程”。两者关键词不完全一致,但语义接近,向量检索可以召回相关内容。

2. 全文检索适合精确匹配

企业场景里有大量专有名词、编号、错误码、字段名、系统名。这类内容在向量空间里不一定稳定,全文检索反而更可靠。

例如:

3. 混合检索更稳

更推荐的方式是混合检索:

用户问题

生成 query embedding

并行执行:向量检索 + 全文检索 + 元数据过滤

合并候选结果

重排

输出最终上下文

三类能力各有分工:

候选结果合并可以采用分数归一化加权、Reciprocal Rank Fusion(RRF),或用 reranker 模型做二次排序。

不一定一开始就做得很复杂,但要避免所有问题都只走一个向量 topK。

五、权限过滤必须进入检索链路

企业级 RAG 的安全问题里,最危险的一类是权限越界。

用户只能检索和看到自己有权限访问的知识。权限过滤不能只放在前端,也不能只在生成后过滤,必须进入检索链路。

更准确地说,权限过滤应该在召回前或候选生成阶段生效:先用用户身份、组织、角色和文档 ACL 生成过滤条件,再进入向量检索、全文检索和候选合并。不能先把所有候选召回出来,再指望生成阶段“不要展示”。

推荐链路如下:

用户身份

解析权限标签

生成检索过滤条件

只召回有权限内容

基于有权限内容生成答案

如果只在生成后过滤,风险已经发生了:模型可能已经看到了不该看到的上下文。

如果只在前端过滤,也不够安全:后端召回、日志、Prompt、模型调用中仍可能出现越权内容。

所以权限应该是检索条件的一部分,而不是展示层的补丁。

六、Prompt 要约束模型,而不是鼓励自由发挥

RAG 的 Prompt 不应该只是简单拼接“用户问题 + 检索结果”。

更稳的方式是结构化 Prompt:

系统角色:你是某领域知识助手
回答规则:只能基于检索结果回答,不得编造
输出格式:按照固定结构输出
用户问题:...
检索结果:
  来源 A:...
  来源 B:...
  来源 C:...

企业场景里建议明确这些约束:

Prompt 的目标不是让模型“更会发挥”,而是让模型更稳定地基于证据回答。

七、必须有拒答机制

一个可靠的 RAG 系统,不应该每个问题都强行回答。

如果检索结果相关性很低,或者来源内容不足,系统应该明确提示:没有找到足够依据。

这比编一个看似合理的答案更可靠。

可以设计几类拒答条件:

拒答不是失败,而是可信系统的一部分。

八、日志和可观测性要从第一天设计

RAG 上线后,如果没有日志和可观测性,就很难回答这些问题:

建议记录:

同时要注意,日志本身也可能成为敏感数据源。不要在日志中记录密钥、完整个人信息、无必要的全文上下文或完整 Prompt。

九、质量评估不能只看“回答像不像”

很多 RAG 评估容易停留在主观判断:看起来像不像、读起来通不通顺。

这不够。

更应该关注这些指标:

指标含义
Recall@K正确文档是否被召回
MRR / NDCG正确结果排序是否靠前
Answer Faithfulness回答是否忠于检索内容
Citation Accuracy引用来源是否正确
No-answer Accuracy没有答案时是否能拒答
权限越权率用户是否召回或看到无权访问内容
用户满意度实际用户是否觉得有用
自助解决率用户是否无需人工介入完成问题解决

对于流程类问题,还要额外看:

评估维度说明
步骤完整性是否覆盖主流程中的关键步骤
顺序正确性步骤顺序是否符合原文
前置条件是否说明必要前置条件
角色责任是否说明关键角色或负责人
异常处理是否说明失败、驳回、权限不足等兜底情况
来源一致性回答内容是否都能在检索结果中找到依据

建议为重点场景维护一套黄金问题集:

问题
期望命中文档
期望答案要点
不应出现的错误答案
权限要求

每次调整切片策略、embedding 模型、reranker、Prompt 或知识库结构后,都应跑评测集,避免局部优化导致整体质量下降。

企业场景还应单独维护权限测试集:同一个问题用不同角色账号执行,验证检索候选、Prompt 上下文、引用来源和日志中都不会出现越权内容。权限问题不能只看最终答案,因为敏感信息可能已经在中间链路泄露。

十、知识运营比模型调参更长期

RAG 系统不是一次性项目,而是持续运营的知识产品。

需要明确:

很多时候,RAG 效果不好,不是模型不够强,而是知识没有被持续维护。

技术系统只能解决“能不能检索”,真正决定长期效果的是知识运营机制。

十一、建议的落地顺序

如果从零开始做企业级 RAG,不建议一开始就做大而全的平台。

更稳的顺序是:

  1. 选高频、边界清晰的场景:例如 FAQ、操作手册、规范查询、工单指引;
  2. 整理可信知识源:先做少量高质量文档,而不是一次性接入所有文档;
  3. 建立入库规范:清洗、脱敏、切片、元数据、权限标签;
  4. 实现混合检索:向量检索 + 全文检索 + 元数据过滤;
  5. 设计结构化 Prompt:要求基于证据回答,找不到就拒答;
  6. 加引用和反馈:让用户知道答案来自哪里,也能反馈问题;
  7. 建设评测集:用数据判断每次调整是否变好;
  8. 再接入更多知识和工作流:等问答可信后,再考虑自动化执行。

早期的目标不应该是“什么都能答”,而应该是“少数高频场景答得准、说得清、能追溯”。

十二、常见坑

1. 只做向量检索

语义问题能回答,但系统名、编号、专有名词经常找不到。企业场景中混合检索通常更稳。

2. 切片过碎

模型只看到局部片段,回答流程时容易漏步骤。流程类文档需要额外保留总览或完整步骤。

3. 没有权限过滤

这是企业 RAG 的高危问题。必须确保用户只能召回自己有权限看的内容。

4. Prompt 约束太弱

如果不明确要求“只能基于检索结果回答”,模型很容易补充外部知识或自行推断。

5. 没有拒答机制

检索不到还强行回答,会迅速破坏用户信任。好的企业助手必须知道什么时候说“不知道”。

6. 只关注模型,不关注知识质量

RAG 的上限很大程度由知识质量决定。文档过期、重复、冲突、缺少结构化元数据,再好的模型也很难稳定回答。

7. 没有评估集

没有评估集,就只能凭感觉调系统。短期看能跑,长期一定难维护。

十三、总结

企业级 RAG 工程闭环总结:知识治理、混合检索、权限过滤、证据生成、质量评估与运营反馈

企业级 RAG 的核心不是“向量库 + 大模型”的简单组合,而是一套围绕知识、权限、检索、生成、安全、评估和运营的完整工程体系。

一个可靠的 RAG 系统应该做到:

向量检索是 RAG 的重要能力,但不是全部。

真正可用的企业级 RAG,靠的不是某一个模型或某一个向量库,而是从知识治理到回答评估的一整套工程闭环。

完整源码

这篇文章讲的混合检索、切片、拒答、引用来源,在 agent-runtime-lab 里有一套可运行的实现:pgvector 向量检索 + PostgreSQL 全文检索 + RRF 融合、按段落切片并保留标题路径、无召回时强制拒答、回答带编号引用。不过项目落地的是其中偏检索和生成的部分,知识治理、评估体系、运营闭环这些更偏组织和流程的环节,还需要结合具体业务补齐。

本系列文章

AI 工程化相关阅读


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.做 AI 助手,最怕一上来就建知识库
  2. 02.RAG 入门:为什么大模型需要查资料再回答
  3. 03.RAG 核心原理:检索、向量与嵌入——计算机如何理解语义
  4. 04.RAG 实战:核心组件、调优与问题排查
  5. 05.RAG 为什么回答流程问题会漏步骤?原因和改进方案(附完整源码)
  6. 06.企业级 RAG 怎么落地?不只是向量检索和大模型(附完整源码)
  7. 07.RAG 检索不准?先别换模型,把问题问对再说
  8. 08.RAG 答非所问?从索引到生成,打通最后一公里
  9. 09.别再把聊天记录当记忆了:AI Agent 的四种记忆到底怎么分?
  10. 10.我手搓了一个 AI Agent 记忆框架,才发现“长期记忆”不是存聊天记录
  11. 11.精选数据与垂直 AI:AI 时代的护城河在哪

上一篇
RAG 检索不准?先别换模型,把问题问对再说
下一篇
RAG 为什么回答流程问题会漏步骤?原因和改进方案(附完整源码)