Teverant AI · AI 应用趋势

2026-09-21

RAG 是什么:企业知识库问答怎么做

RAG 是什么?本文从适用场景、数据治理、文档切块、混合检索、重排序到效果评估,系统讲解企业知识库问答如何落地。

一、先判断是否该用 RAG:它解决的是知识供给,不是所有智能化问题

企业评估 RAG 时,首先要确认问题是否真的出在“模型拿不到正确资料”。RAG 的核心作用,是在回答前从外部知识源选取相关内容,再让模型基于这些内容组织结论。它适合补充企业内部知识和时效性信息,但不能替代计算系统、业务流程或数据治理。

一个场景是否适合采用 RAG,可以先检查三个条件。第一,答案依赖企业私有信息,或者所需知识会频繁变化,例如制度文件、产品手册、项目记录和内部案例。第二,问题存在可供查证的资料依据,而不是只能依靠主观判断。第三,业务要求说明结论来自哪里,用户需要查看原文、版本或发布日期。三个条件大体成立时,把知识保留在外部资料库中并按需检索,通常比将知识固化进模型参数更容易更新,也更便于追溯。

反过来,如果答案来源不明确,企业长期没有沉淀相关材料,或者不同文档之间本身相互矛盾,引入 RAG 只会更快地暴露知识缺口。向量索引能够帮助寻找内容,却不能创造不存在的事实,也不能自动判断哪一份冲突文件具有最终效力。此时应先补齐资料、确定责任部门和版本规则,而不是直接建设检索链路。

实际需求更合适的方案判断依据
查找制度、手册并形成综合回答RAG需要从多份资料抽取依据,再生成面向问题的结论
返回匹配文件、页面或资料目录企业搜索用户要的是原始结果集合,不一定需要模型代为归纳
长期固定输出风格、格式或行为习惯提示模板或微调需要改变模型的表达方式与稳定模式,而非补充事实知识

这些方案并不互斥。例如,客服助手可以用 RAG 查找售后政策,用订单接口读取当前状态,再通过工作流发起申请。关键是把“知识问答”和“确定性操作”分开:模型可以解释规则,但金额计算、权限校验和交易提交应由可测试的程序完成。只把所有能力都接到向量数据库上,容易产生看似完整、实际不可执行的回答。

超长上下文同样不能消除检索的必要性。将大量文件整体放入提示词,看似减少了检索环节,实际会扩大输入成本,并把无关章节、重复版本和冲突表述一并交给模型。长文本中的关键信息还可能因位置和噪声而未被充分利用。对企业系统而言,更稳妥的组合是先缩小资料范围,再使用较长上下文完成跨段落比较、摘要和推理。

是否采用 RAG,最终可以归结为一个工程问题:答案能否在受控资料中找到,并且是否值得为这些资料建立更新、权限、引用和评估机制。如果问题没有可验证的标准答案,应设计人工判断或专家审核;如果流程必须严格执行,应调用规则引擎、数据库和接口;如果知识源残缺,则先治理内容。只有当主要瓶颈确实是“正确资料没有在正确时间进入模型上下文”时,RAG 才是对症方案。

二、数据治理先于向量化:知识库质量决定答案上限

向量模型只能判断文本是否相近,不能替企业裁决哪份文件有效。若知识库同时保存现行制度、历史版本和未经审核的经验记录,检索越充分,冲突内容反而越容易一起进入上下文。上线前应先解决知识来源、适用范围和生命周期问题,再讨论嵌入模型与向量库。

先给知识源排优先级

第一步不是导入文件,而是建立知识源清单。每类来源都要明确责任部门、更新方式、审核状态和冲突处理规则。权威等级不宜简单按文件格式划分,而应依据业务场景确定。例如,正式制度通常高于个人笔记;产品规格应以已发布版本为准;FAQ 可以解释标准文档,但不应覆盖其中的约束条件;工单适合补充案例,不应自动成为通用结论。

知识类型主要用途冲突时的处理原则
制度与规范确定规则、权限和边界优先采用当前有效且已批准的版本
产品与操作文档回答功能、配置和流程问题按产品版本、地区及发布日期匹配
FAQ 与知识文章提供简化说明和常见处理方法不得改写正式规则,冲突时降权或拦截
工单与个人记录补充故障案例和现场经验默认作为参考材料,审核后才能提升等级

元数据不是装饰,而是检索边界

字段值应使用受控枚举,避免同一部门或产品出现多种写法。这些信息一方面用于检索前过滤,另一方面支撑引用展示、访问授权和过期治理。

否则,一份文字高度相似但适用于其他市场的规定,很可能排在正确答案之前。

入库要保留文档结构与证据位置

企业文档不能直接抽取成连续纯文本。可靠的入库流水线通常需要处理以下环节:

  • 识别正文区域,清除重复页眉、页脚、水印和目录噪声;
  • 保留章节标题及父子层级,使片段仍能解释自身所处语境;
  • 解析表格的行列关系,关联正文中的附件、图示和脚注;
  • 检测跨文件或跨页面的重复内容,避免同一结论挤占召回结果;
  • 记录文件标识、页码、段落路径和字符区间,便于回到原文核验。

解析质量应通过抽样验收,而不是只看任务是否成功。重点检查表格是否错位、标题是否丢失、附件是否断链,以及否定条件、例外条款是否被切散。只保留语义文本却丢失原始位置,会让引用看似存在,实际无法审计。

让索引状态跟随源系统变化

RAG 可以在不调整模型参数的情况下更新外部知识,但“可更新”不等于“自然一致”。入库流程必须覆盖新增、修订、失效、撤回和删除,并为每次变更保存来源标识、处理时间与索引状态。

工程上还应设置同步延迟、解析失败、版本并存和孤立片段等监控项,并定期从源系统反查索引。判断数据治理是否合格,可以用一个直接标准:任何答案片段都能说明来自哪里、适用于谁、何时有效,并能在源文档撤回后按约定时限停止被召回。

三、切块与索引设计:不要用一个固定参数处理所有文档

切块不是把长文本裁成模型能接收的长度,而是为检索构造可独立判断、可准确引用的知识单元。真正需要优化的问题是:用户提出一个具体问题时,系统能否召回包含完整条件、结论与适用范围的片段。若只按固定字数截断,条款中的例外说明、操作步骤的前置条件、表格中的字段含义都可能被拆开。

块太大时,检索结果可能命中主题,却把大量无关段落一并送入模型,相关证据反而被稀释;块太小时,召回内容看似精确,却缺少条件、例外或结论,模型只能自行补足缺口。相邻块重叠可以减少句子恰好落在边界上的问题,但无法修复错误的文档结构。例如,一条制度的正文与但书被分到两个片段,即使设置重叠,也未必能保证两者同时进入候选集。

工程实践中常从数百 token 量级设置多组候选块长,并配置一定的相邻重叠,再用真实问题集比较效果。这些参数只能作为实验入口,不是跨文档通用的最佳配置。更稳妥的实现是先识别标题层级、列表、条款、问答对和表格,再对过长的语义单元做二次切分;过短片段则可与父级摘要或标题路径组合后参与检索。

索引也不应等同于“文本加向量”。每个知识片段至少应保存以下信息:

  • 可供生成模型阅读的正文,以及经过规范化的检索文本;
  • 文档标题、章节层级和父子片段关系;
  • 稳定的文档标识、片段标识与原文页码或段落位置;
  • 发布时间、更新时间、有效状态和业务版本;
  • 部门、角色、密级等权限标签;
  • 关键词、实体或其他可用于过滤和关键词检索的字段。

向量适合发现语义近似内容,但对精确编号、产品型号、缩写、日期和专有名词未必稳定。因此,正文倒排索引、结构化过滤条件与向量字段应并存。标题路径还能在生成阶段补足语境,例如同样名为“审批条件”的片段,位于采购制度和费用制度时含义并不相同。

最后,索引必须具备重建和回滚能力。每次发布应记录原始文档批次、解析器版本、切块规则、文本清洗逻辑、Embedding 模型及索引配置,并保留片段到原文的映射。模型升级后若召回率下降,团队才能判断问题来自文档解析、块边界变化、向量表示变化,还是索引过滤配置。没有版本记录的知识库一旦效果波动,通常只能全量重做,难以完成可验证的修复。

四、从用户问题到有效召回:用混合检索解决“搜不到”和“搜不准”

企业 RAG 的在线链路不应从向量查询直接开始。用户输入往往不是一个合格的检索式:它可能省略产品名称,把错误现象写成口语,沿用上一轮对话中的指代,或者混入版本、地区、岗位等隐含条件。若原问题未经处理就送入索引,后续即使增加召回数量,也只会得到更多表面相似、实际不适用的文本。

第一步应把对话输入整理成可独立理解的问题。查询处理模块需要提取用户真正要完成的任务,并补齐对象范围、适用版本、时间条件和用户身份。例如,“这个报错怎么处理”应结合会话历史还原为具体产品、版本和错误码。缩写、内部别名和口语称呼可以映射到知识库中的标准术语,但原始词也应保留,避免改写时丢失精确线索。

复杂问题不宜强行压成一个检索式。若问题同时要求查规则、找数据并比较差异,可拆成若干子查询分别召回,再在生成阶段合并证据。拆分的价值不是让问题变短,而是避免多个检索目标互相干扰。实施时应保留子查询与原问题的对应关系,否则模型可能只回答其中一部分。

检索方式更擅长命中的内容典型风险
向量检索同义表达、自然语言描述、措辞不同但含义接近的段落可能把语义相似但版本、对象不同的内容排在前面
BM25 关键词检索设备型号、报错编号、合同术语、法条编号及企业专用名词用户换一种说法后容易漏召回,也难理解上下文含义
混合检索同时覆盖语义线索与精确字面线索若融合权重固定,仍可能不适配不同类型的问题

因此,企业知识库通常应并行执行向量检索和 BM25,再用排名融合汇总候选,而不是只选其中一种。包含错误码、型号或条款编号时,可提高关键词结果的影响;故障描述、流程咨询等自然语言问题,则可适当偏向语义召回。还要做候选去重,避免同一文档的相邻切块占满上下文。

用户所属组织、访问级别、业务地区、产品版本以及文档有效期,都应成为索引元数据。检索时先限定可用范围,再在范围内计算相关性。否则,系统可能召回内容正确但用户无权查看的文件,或引用已经废止、尚未生效、仅适用于其他地区的规定。仅在提示词中要求模型“不要泄露”不能替代访问控制。

  • 检查“搜不到”:目标证据是否进入索引,查询是否被错误改写,关键词与语义通道是否至少有一路命中。
  • 检查“搜不准”:高排名结果是否满足产品、版本、地区、时效和权限条件,而不只看文本相似度。
  • 记录召回轨迹:保存原问题、改写结果、子查询、过滤条件及各通道排名,便于复现失败案例。

对于需要沿多个实体关系查找证据,或要求从大量文档归纳整体主题的问题,可以评估 GraphRAG。它通过实体与关系组织知识,更适合跨文档关系链和全局分析,但代价包括实体消歧、关系更新、图查询维护以及更长的响应链路。工程上应先用问题集验证普通 RAG 的缺口:如果失败主要来自查询改写、过滤条件或混合检索配置,建设图结构不会解决根因。只有当核心问题确实依赖多跳关系或全局结构时,额外复杂度才可能值得承担。

五、重排序与答案生成:避免“召回了资料,仍然答非所问”

检索命中并不等于证据可用。第一阶段检索更像“扩大排查范围”:宁可带回少量噪声,也不要过早漏掉关键材料。真正决定哪些内容进入模型上下文的,应是后续重排序。Reranker 会联合读取用户问题与候选文档块,重新判断两者是否语义匹配,而不是继续依赖向量距离。

企业语料规模较大时,不宜让计算成本较高的精排模型扫描全部内容。更可控的做法是级联处理:先用关键词检索、向量检索等方式快速取得较宽的候选集合,再由轻量模型排除明显无关项,最后通过 Cross-Encoder 一类模型做精细排序。每一层都应记录候选数量、耗时与淘汰原因,便于判断质量损失发生在哪个环节。

重排序不能只看“主题相近”。例如用户询问某项制度的生效条件,一段介绍制度背景的文字可能语义高度相关,却无法回答条件是什么。评分时应额外考虑以下因素:

  • 内容能否直接支持问题所要求的结论,而非仅仅出现相同主题;
  • 资料是否处于有效期内,版本、地区和适用对象是否一致;
  • 来源层级是否可靠,例如正式制度文件应优先于会议纪要或个人笔记;
  • 文档块是否包含完整条件、例外条款和限定范围,避免只取到半句结论。

进入生成阶段前,还需要一次上下文编排。按相关性分数机械拼接,常会造成同一段内容重复出现、条款与标题分离,或把解释文字放在规则正文之前。工程上应先消除重复片段,将连续且属于同一章节的块合并,再补入标题、文档版本、发布时间以及理解当前段落所必需的前文。若令牌预算不足,应优先保留能够直接作答、来源明确且时效正确的材料,而不是平均压缩所有候选。

生成提示应被当作一份可测试的回答协议,而不是一句“请根据资料回答”。对影响审批、合规或业务执行的结论,还应附带原文片段及文档位置,使使用者可以回到来源复查。

引用本身也需要校验。模型生成的引文编号必须对应实际进入上下文的材料,引用片段应确实支持相邻结论,不能只证明相关背景。

出现错误答案时,先定位故障层级,再决定改哪里。把所有问题归因于“大模型不够强”,通常会导致无效调参。

故障类型识别方法主要处理动作
知识缺口人工检查知识库后,确认不存在可支持答案的资料补充权威文档,修正版本与权限范围,并建立拒答策略
召回失败库内存在答案,但候选结果没有包含对应片段调整查询改写、切块、索引字段、混合检索及候选范围
证据使用失败正确材料已经进入上下文,回答仍与材料不符或遗漏限制条件改进上下文编排与提示约束,增加引用校验和忠实度评测

因此,这一阶段的验收不应只看最终回答“像不像对的”。还要分别检查正确证据是否进入候选集、精排是否把它提升到可见位置、上下文是否保留完整语义,以及结论能否逐项追溯到证据。只有把这条链路拆开观测,答非所问才会从偶发体验问题变成可以定位和修复的工程问题。

六、答案评估与运营闭环:分别测检索、生成和业务结果

RAG 评估不能从模型自拟的问题开始。每条样本除参考答案外,还要标注作答所需的证据、答案适用的产品或时间范围、访问权限,以及是否应当拒答。否则,系统可能给出内容正确但版本不对、越权或缺少前提的回答,综合得分却看不出问题。

样本覆盖面比样本数量更重要。至少要纳入简称与别称、输入错误、上下文省略、多轮追问、新旧制度冲突、不同角色权限、需要合并多份材料才能回答的问题。还应专门建设不可回答集,例如知识库尚未收录、问题条件不足、证据相互矛盾或用户无权查看的内容。拒答不是异常分支,而是企业问答的基本能力。

评估层需要回答的问题建议拆分记录的指标
检索必要证据是否被找到,并进入模型实际读取的上下文候选集证据召回、最终上下文命中、无关片段占比、权限过滤正确性、版本选择结果
生成模型是否依据证据完整作答,而非补写似是而非的内容答案事实正确性、对证据的忠实程度、引用位置准确性、关键要点覆盖、应拒答时的表现
业务系统是否降低了用户寻找信息和人工咨询的成本人工转接率、无答案率、问题解决情况、用户反馈、重复追问情况
工程质量提升是否带来不可接受的资源开销端到端延迟、模型 token 用量、重排序开销、失败率及峰值稳定性

正确证据未进入候选集,通常应检查查询改写、索引或召回策略;证据已召回却没有进入最终上下文,问题更可能出在重排序或上下文拼装;上下文完整但答案错误,则应继续检查提示约束、引用机制和模型生成。只有分层记录,失败才能被归因,而不是被笼统归为“模型效果不好”。

引用也要单独核验。回答附带来源,并不等于来源支持结论。评估时应检查引用片段是否真的包含对应事实、是否指向当前有效版本,以及一条引用是否被错误地用于支撑多个结论。能够定位到具体知识片段的价值,不只是方便用户核查,也让团队可以反向找到过期、冲突或表述含糊的原始材料。

离线评测用于比较方案,例如调整切块边界、替换检索方法或修改排序规则后,观察各类问题的变化;线上数据则用于判断系统有没有产生业务收益。两者不能互相替代:离线命中改善,不代表用户更快解决问题;人工转接减少,也可能只是用户放弃继续提问。因此应结合会话完成情况、后续追问和负面反馈分析。

运营闭环的核心是建立可归因的失败队列。知识缺失或冲突回流到内容治理,问法未被理解进入查询改写,语义被截断进入切块优化,目标材料未出现进入召回调整,相关材料排序靠后进入重排序处理,有证据仍答偏则进入上下文组织与提示策略优化。每个案例应保留问题、权限、知识版本、召回结果、最终上下文和模型输出,避免只保存一段错误答案。

任何变更上线前都应运行固定回归集,并按问题类型查看差异。局部参数可能修复某类问法,却让旧版本识别、权限隔离或多文档回答退化。成熟的 RAG 运营不是不断调高一个分数,而是让每次失败都有归属、每次修改都能验证、每次上线都知道改善了什么,又可能影响什么。

七、FAQ:企业建设 RAG 时的常见问题

有了超长上下文,还需要 RAG 吗?

需要,但两者不是替代关系。上下文窗口变长,解决的是模型单次能够接收多少材料;RAG 解决的是从企业知识中挑出哪些材料值得送入模型。若把大量文档直接塞进提示词,工程上可能增加处理负担,并影响权限管理和证据利用。长文本中部的信息也可能较难被模型稳定利用,即常说的“中间信息丢失”。

更稳妥的做法是先通过 RAG 缩小证据范围,再让长上下文承担跨章节阅读、多文档比较和复杂归纳。只有在资料集合较小、内容相对固定、单次任务确实需要通读全文时,直接使用长上下文才可能更简单。例如分析范围明确的合同材料,可以整体输入;从大规模合同库中回答条款问题,则应先检索。

RAG、微调和企业搜索应该怎样选择?

先区分要改变的是知识、行为,还是信息获取方式:

方案适合解决的问题主要限制
RAG知识经常更新,回答需要引用内部资料,并且要执行权限控制依赖文档治理、召回质量与生成约束
微调需要稳定输出格式、术语风格、分类规则或特定任务行为不适合充当频繁变化的事实仓库,更新还需重新准备数据与训练
企业搜索用户希望自行浏览原文、筛选结果并完成判断通常只交付结果列表,不负责综合多个来源形成答案

实际项目常组合使用:搜索负责发现与导航,RAG 基于证据生成解释,微调约束模型的任务行为。不要因为“回答不准”就直接微调;如果根因是资料缺失或检索失败,训练无法补回正确证据。

向量检索命中了相似内容,为什么答案仍然不对?

“语义相似”不等于“可用于作答”。命中的片段可能主题一致,却在产品版本、适用地区、客户等级或生效时间上不符合问题;也可能只召回结论,遗漏定义、例外条件和上下文。另一类问题发生在生成阶段:证据已经存在,但排序靠后,被无关片段干扰,或者模型把多个来源错误拼接。

排查时应分层查看链路,而不是只读最终答案:

  • 先确认正确文档是否进入候选集;没有进入,检查切块、查询改写、关键词召回和元数据过滤。
  • 再确认正确片段是否排在模型实际可见的位置;排序不佳时,引入重排序并降低重复片段占比。
  • 最后检查答案是否严格受证据约束;要求给出来源、区分事实与推断,并在证据不足时明确拒答。

企业 RAG 上线前至少要评估哪些指标?

不能只用“回答看起来不错”验收。应建立来自真实业务问题的测试集,并把指标拆成三层:

  • 检索层:正确证据能否进入候选结果、排序是否靠前、权限与时间等过滤条件是否准确、召回内容是否存在大量重复。
  • 生成层:答案是否得到证据支持、引用能否对应原文、是否完整覆盖问题、证据不足时能否拒答,以及是否出现无依据补充。
  • 业务层:任务完成率、人工转接情况、用户修正频率、响应时延与单次调用成本。

上线后持续收集低评分、追问与人工改写记录,判断问题究竟出在知识源、召回、排序还是提示与生成。只有能定位错误所在环节,RAG 才具备可运营性,而不是一次性的演示系统。