标签归档:RAG

如何构建行业 Agent 的 RAG

行业 Agent 和我们常用的「通用聊天 Agent」不是一类东西。

行业 Agent 是要能解决问题的,而查资料只是其中一步,后面还要做判断、走流程、调用系统、校验结果、留痕、可回放。

RAG 在这里的角色也变了:它不只是给模型喂上下文,而是给 Agent 提供可执行任务所需的依据、约束、参数和证据链。

今天我们聊一下行业 Agent 构建过程中的 RAG 怎么写,从目标、数据,检索以及使用 RAG 等等方面。

1. 行业 Agent 的 RAG 要服务什么能力

行业 Agent 常见的工作方式是「多步闭环」:

  1. 识别问题类型与业务对象(客户、设备、合同、工单、订单、项目、账号等)
  2. 查依据(制度、手册、知识库、历史工单、标准、接口文档)
  3. 做动作(查系统、下发指令、开通配置、生成工单、发邮件、写报告、提审批)
  4. 校验与回写(确认变更成功、回填字段、留痕、把引用/证据挂到工单)
  5. 解释(给用户说明依据、影响范围、回滚方案、下一步建议)

所以行业 Agent 的 RAG 不只是「问答检索」,而是至少要覆盖这些信息类型:

  • 规则依据:制度、条款、SOP、合规模板、变更规范
  • 操作依据:系统使用手册、接口文档、参数含义、错误码处理
  • 对象事实:来自业务系统的实时/准实时数据(用户信息、资源状态、库存、账单、设备状态)
  • 历史经验:工单处理记录、故障复盘、已知问题(KEDB)
  • 风险边界:禁用操作清单、权限范围、需要人工复核的条件

如果我们只做「文档向量库 + 生成」,Agent 走到第 3 步就会卡:它不知道该调用哪个系统、需要哪些字段、什么情况下要停下来让人确认,也不知道怎么证明自己做对了。

2. 指标

行业 Agent 场景里,最好用三类指标描述:

2.1 任务完成类指标

  • 任务成功率(最终动作成功并通过校验)
  • 平均完成时长(端到端)
  • 人工介入率(需要人确认/补充信息/兜底)
  • 回滚率(执行后需要撤销/修正)

2.2 风险类指标(红线不能过)

  • 越权率(检索/执行是否越权,目标是 0)
  • 误执行率(不该执行却执行)
  • 误答导致的错误操作(把“编出来的依据”当成执行依据)
  • 引用不可追溯率(给不出来源或来源不支持结论)

2.3 知识与检索类指标(用于驱动迭代)

  • 依据命中率(标准依据是否出现在 topK)
  • 冲突处理正确率(新旧版本/多来源冲突时是否选对)
  • 时效正确率(是否引用过期/废止内容)
  • 覆盖率(高频问题是否覆盖)

行业 Agent 的 RAG 设计,最终要对这些指标负责。否则我们会陷入「答得像那么回事,但不敢让它动系统」的状态。

3. 数据层

行业 Agent 的 RAG,数据比模型更重要。

3.1 三类数据

  1. 静态权威知识:制度、规范、手册、标准、产品文档
    目标:可追溯、版本可控、可引用
  2. 动态业务事实:来自业务系统的数据(CRM、工单、CMDB、监控、计费、IAM 等)
    目标:可校验、可审计、最好可回放(至少保留查询快照)
  3. 过程与经验:历史工单、故障复盘、处理记录、FAQ 演进
    目标:可过滤(质量参差)、可分级(权威/经验/猜测)

很多项目失败是因为把第 3 类当第 1 类用,把「经验」当「制度」。Agent 一旦据此去执行动作,风险会放大。

3.2 每个知识片段必须带的元数据

行业 Agent 需要的不只是「能搜到」,还要「能用来做动作」。建议每个 chunk 至少包含:

  • doc_id / chunk_id
  • source(系统/库)
  • source_url(可点击或可定位)
  • title_path(标题链)
  • doc_type(制度/手册/接口文档/复盘/工单等)
  • versionstatus(草稿/已发布/已废止)
  • effective_from / effective_to(能给就给)
  • owner(维护人/团队)
  • updated_at
  • 适用范围标签:产品线/地区/客户/机型/环境(生产/测试)
  • 权限标签:RBAC/ABAC 所需字段
  • 可执行性标签(建议加):
    • 是否可作为执行依据(例如制度/已发布 SOP 才能)
    • 是否需要人工复核(高风险操作)
    • 是否仅供参考(复盘/经验)

这些标签对 Agent 比较关键:它能决定「能不能做、要不要停、怎么解释」。

3.3 文档解析与切分

行业 Agent 的 RAG 的切分策略,优先级一般是:

  1. 按结构切:章/节/条款/接口字段说明/错误码条目
  2. 把“前置条件/限制/例外”跟规则放一起
  3. 表格与字段定义要保表头(字段含义脱离表头就没法用)
  4. 把可执行步骤单独成块(SOP、Runbook、变更步骤)

注意:不要把「定义」「适用范围」「例外条款」切碎。Agent 执行动作时,最需要的就是边界条件和限制。

4. 索引与检索

行业 Agent 和常规的 Agent 不同,其更依赖于「过滤 + 排序 + 证据链」

4.1 使用混合检索

行业 Agent 的查询里会出现大量「硬信息」:

  • 条款号、标准号、型号、错误码、参数名、接口路径、工单号、配置项名

纯向量在这些场景不稳。工程上更常用的是:

  • 关键词/BM25:抓编号、术语、字段名、错误码
  • 向量召回:抓语义相近、同义表达
  • 融合 + 重排:把候选集排序成「最能支持动作/结论」的那几段

4.2 检索要先过滤,再找相似

行业 Agent 的过滤通常是强约束,如下:

  • 权限过滤(用户/角色/租户/数据域)
  • 状态过滤(废止、草稿默认不进)
  • 生效时间过滤(尤其制度、计费、合规)
  • 适用范围过滤(产品/地区/环境)
  • 数据域隔离(内部/客户侧/合作方)

如果我们把这些留到生成阶段「让模型自己注意」,效果不可控,风险也不可控。

4.3 Agent 专用检索

不止检索答案,还要检索工具与参数

行业 Agent 经常需要两类额外检索:

  1. 工具检索(Tool RAG)
    从「工具说明库/接口文档/SOP」里检索:该用哪个工具、需要哪些参数、有哪些限制、失败怎么处理。
  2. 参数与字段检索(Schema RAG)
    从「数据字典/字段说明/枚举值」里检索:字段含义、可选值、校验规则、示例格式。

这两类检索的结果不一定直接展示给用户,但会决定 Agent 能不能把动作做对。

5. 固化 Agent 使用 RAG 的逻辑

行业 Agent 的 RAG 关键是要「把 RAG 插进决策点」

行业 Agent 常见的内部循环大致是:

  • Plan(决定下一步做什么)
  • Act(调用工具/检索/执行)
  • Observe(拿到结果)
  • Decide(是否继续、是否需要人确认、是否结束)
  • Explain(对外输出)

RAG 的插入点建议固定成三处:

5.1 决策前

用 RAG 找「规则边界」

在 Agent 做出关键决策前,先检索:

  • 是否允许执行(权限、合规、风险等级)
  • 前置条件是什么(必须具备哪些信息、哪些系统状态)
  • 需要的审批/确认是什么(是否必须人工确认)

这一步的输出的是「约束」,不是「答案」。它会影响下一步是继续、暂停还是转人工。

5.2 执行前

用 RAG 找「操作步骤与参数」

执行某个动作前,检索:

  • SOP / Runbook / 接口文档
  • 必填参数、参数来源
  • 校验方式(执行后如何确认成功)
  • 回滚方式(失败/异常如何撤销)

这一步的输出是「可执行步骤」,不是「解释性段落」。

5.3 执行后

用 RAG 做「结果判定与错误处理」

拿到工具返回值后,检索:

  • 错误码含义与处理建议
  • 常见失败原因
  • 是否需要升级/转人工
  • 是否需要二次校验(比如跨系统一致性)

这一步的输出是「下一步动作建议 + 证据」。

6. 生成与输出

行业 Agent 的输出要分层,不要把所有东西都写给用户

行业 Agent 的输出建议拆成三层,分别服务不同目标:

  1. 用户层:结论/进展、需要用户补充什么、下一步怎么走
  2. 证据层:引用依据(链接、页码、版本、生效日期)
  3. 执行层(留痕层):本次调用了什么工具、参数摘要、返回结果摘要、校验结果、回滚点

用户不一定要看到执行层细节,但系统必须存储这些内容。只有出了问题能回放,才敢放权。

同时,行业 Agent 的生成要有硬规则:

  • 没有命中权威依据:不输出肯定结论
  • 有冲突:必须把冲突来源、版本、生效时间写清楚
  • 涉及高风险动作:必须停下来请求确认(并把依据与影响范围给出来)
  • 引用必须来自检索上下文:不允许来虚的,「凭印象补一句」

7. 权限、审计、隔离

**行业 Agent 的 RAG 必须「检索前隔离」。

行业 Agent 一旦能调用系统,风险比问答高一个量级。权限要分两层:

7.1 知识权限

能不能看的问题

  • 文档/知识片段按 ABAC/RBAC 做过滤
  • 按租户隔离(多客户必做)
  • 按数据域隔离(内部策略、客户信息、合作方信息)

7.2 行为权限

能不能做的问题

  • 工具级权限:这个角色能调用哪些工具
  • 动作级权限:同一工具下哪些操作允许(例如只读查询 vs 修改/下发)
  • 参数级权限:同一动作下哪些资源范围允许(例如仅能操作自己负责的项目/客户)

很多团队只做了「知识权限」,没做「行为权限」。

这会导致不放心,即使 Agent 能查到 SOP,也能学会「怎么做」,但你又不敢让它真的做。

7.3 审计要能回答四个问题

  • 为什么这么做(依据是什么)
  • 做了什么(调用了哪些工具、关键参数是什么)
  • 得到了什么(返回结果与校验结果)
  • 谁批准的(如果需要人工确认)

没有这四个问题的答案,行业 Agent 很难通过安全审查,也很难在出事后定位责任与修复点。

8. 灰度上线策略

先控制风险,再谈覆盖率

行业 Agent 的上线节奏建议按权限逐步放开:

  1. 只读 Agent:只检索、只解释、只给建议,不执行任何写操作
  2. 半自动 Agent:可以生成“执行计划/工单草稿/变更单草稿”,必须人工确认后执行
  3. 受限自动 Agent:只允许低风险、可回滚、可校验的动作自动执行(例如查询、对账、生成报表、创建工单、补全字段)
  4. 高风险动作:默认保留人工确认,除非你能做到严格的权限、校验、回滚、审计,并且有明确的责任边界

上线必须准备三套兜底:

  • 超时与降级:检索失败/重排失败/模型失败时怎么退化
  • 失败回滚:执行失败怎么撤销,撤销失败怎么升级
  • 人工接管:在关键节点能一键转人工,并把证据与执行轨迹带过去

9. 常见坑

  1. 把「经验工单」当「标准答案」:Agent 会把偶发处理当成通用规则。必须分级与降权。
  2. 只做知识库,不做数据字典与工具库:Agent 会不知道参数怎么填、字段是什么意思、错误码怎么解。
  3. 只做检索,不做执行前校验与执行后校验:敢执行的前提是可校验、可回滚。
  4. 权限只管文档,不管工具:最容易在这里翻车。
  5. 没有回放评测:你不知道一次小改动会不会让 Agent 在某个分支上开始乱走。
  6. 把「多轮对话」当「任务编排」:行业 Agent 的关键是状态机与决策点,不是聊得多。

最后,行业 Agent 的 RAG 如果要构建,不仅仅是算法的事情,需要更多的业务专家,业务 Owner 来直接参与,他们才是最懂行业的人。需要他们来定义「什么算答对/答错」、哪些文档权威、版本如何取舍、哪些内容不能答。

以上。

从 DeepSeek R1 的联网搜索和 RAG 聊起

在最早 ChatGPT 应用到 Bing 时我们就体验到了联网搜索的能力,最近大火的 DeepSeek R1 在其官网或者腾讯元宝的版本中部署了带有联网搜索的版本,甚至私有化部署的版本也可能通过 Page Assist 实现联网功能。

当用户勾选 联网搜索 功能时,可以将其视为一个 能够理解任何自然语言问题的智能搜索引擎,相比传统搜索引擎仅支持关键词匹配,LLM 结合联网搜索可以更智能地解析问题,并返回更精准的结果。特别是在 R1 的推理加持下,整个过程显得更为丝滑。

联网搜索不仅能够提升模型的实时信息获取能力,还能与 RAG 技术结合,使模型在回答问题时参考最新的搜索结果,提高准确性和可靠性。

之所以要增加联网搜索,增加 RAG 的逻辑,这些都是由大模型本身的问题造成的。

1. 大模型的问题

大语言模型(LLM)的知识来源于海量的离线数据训练,因此其信息具有时效性滞后问题。

一般来讲,主流 LLM 的训练数据通常滞后于其发布时间半年到一年以上。例如,GPT-4o-latest 的训练数据截止于 2024 年 6 月,而 DeepSeek-R1 的最新数据截止于 2024 年 7 月(问 DeepSeek-R1,它自己回答的)。这意味着 LLM 无法直接获取训练完成后发生的最新事件、科技进展或行业动态。

1.1 知识局限性

由于 LLM 依赖于静态数据集进行训练,其知识范围受到以下限制:

  • 无法获取最新信息:模型的知识仅限于训练数据中的内容,因此对于训练完成后发生的事件,它无法直接回答或提供准确的分析。
  • 缺乏实时数据支持:LLM 无法访问最新的网络信息,如新闻报道、财务数据、政策变动等。
  • 受限于训练数据的覆盖范围:即便是训练数据范围内的知识,LLM 也可能因为数据筛选、公开性限制等原因而无法掌握某些领域的最新进展。

为了解决这一问题,许多 LLM 引入了 联网搜索 机制,使得模型能够动态检索最新的网络信息,从而提供更具时效性的回答。

联网只解决了部分大模型的信息实时性的问题,除此之外, LLM 还面临 幻觉问题、私有数据匮乏、内容不可追溯、长文本处理能力受限以及数据安全性 等挑战。

1.2 模型幻觉

由于 LLM 的底层原理是基于 数学概率 进行文本生成,其回答并不是基于事实推理,而是对最可能的词序列进行预测。因此,LLM 可能会在自身知识缺乏或不擅长的领域 一本正经地胡说八道,即产生 幻觉。这种现象在 事实性要求较高的业务应用(如法律、医疗、金融等)中尤其需要被关注,因为错误信息可能导致严重后果。同时,区分 LLM 生成的正确与错误信息 需要使用者具备相应领域的知识,这也提高了使用门槛。

1.3 私有数据匮乏

LLM 主要依赖 互联网公开数据 进行训练,而在 垂直行业、企业内部 等场景中,很多专属知识并未包含在模型的训练集中。这意味着 LLM 无法直接回答涉及 企业内部文档、行业专属知识库 或其他非公开信息的问题,导致其在 专业化应用场景 中的表现受限。

1.4 内容不可追溯

LLM 生成的内容通常 缺乏明确的信息来源,用户难以验证其答案的准确性和可靠性。这种不可追溯性影响了 内容的可信度,尤其是在需要引用权威信息的场景(如学术研究、法律咨询等)。

1.5 长文本处理能力较弱

LLM 受限于 上下文窗口的长度,在处理长文本时 容易丢失关键信息,并且 输入文本越长,处理速度越慢。这对需要分析 长文档、长对话或复杂背景信息 的应用场景构成了挑战。

1.6 数据安全性

对于企业而言,数据安全至关重要,没有企业愿意将私有数据上传到第三方平台 进行训练或推理,以避免数据泄露的风险。因此,完全依赖 通用大模型 进行知识问答和分析,往往需要在 数据安全性与模型能力之间 做权衡。

2. RAG 的出现

随着大语言模型(LLM)在各类任务中的广泛应用,人们逐渐发现它们的局限性,如时效性滞后、幻觉问题、私有数据匮乏、内容不可追溯、长文本处理能力受限,以及数据安全性等挑战。为了解决这些问题,Retrieval-Augmented Generation, RAG 技术应运而生。

2.1 什么是 RAG?

RAG(检索增强生成)是一种结合信息检索文本生成的 AI 方案,旨在利用外部知识库或文档存储,实现更准确、实时且可追溯的内容生成。其核心思想是:

  1. 检索(Retrieval):在 LLM 生成答案之前,首先从外部知识库或数据库中检索相关信息。
  2. 增强(Augmented):将检索到的信息与用户的原始问题结合,形成一个更丰富的输入。
  3. 生成(Generation):将增强后的输入提供给 LLM,使其基于最新信息进行回答,而不是仅依赖于模型固有的知识。

2.1.1 RAG 的发展历史

RAG 由 Meta AI 团队于 2020 年提出,最初是为了提高 LLM 在特定任务中的表现。随着 LLM 在各类应用中的扩展,RAG 技术逐渐成为提升模型响应质量的重要手段。

在 RAG 之前,主要有三种方式来提升 LLM 的能力:

  • 微调:通过额外训练数据调整 LLM 的参数,使其更适应特定任务。
  • 提示工程:通过优化输入提示(Prompt)来影响 LLM 的输出。
  • 知识注入:在 LLM 训练阶段直接加入结构化知识,以增强其知识覆盖范围。

然而,这些方案都有各自的局限性,例如微调成本高昂、提示工程 在复杂任务下效果有限,而知识注入无法解决最新信息的获取问题。因此,RAG 逐渐成为一种更灵活、高效的解决方案。

2.2 RAG 解决了哪些问题?

  • 解决知识局限性:RAG 通过外部检索,可以动态获取最新的信息,而不像 LLM 仅依赖静态训练数据。例如,在金融、法律、医疗等领域,LLM 需要访问最新法规、市场动态或医学研究,RAG 能够提供这些最新信息,从而提高回答的准确性。

  • 缓解模型幻觉:LLM 生成的内容基于概率计算,当其遇到没有见过的内容时,会凭空捏造不存在的信息。RAG 通过提供真实的外部数据作为参考,降低了模型「胡说八道」的风险。例如,在法律咨询场景中,RAG 可以直接引用相关法规,而不是让 LLM 「猜测」答案。

  • 访问私有数据:企业通常拥有大量的内部专有数据,如客户档案、财务报表、技术文档等,RAG 可以让 LLM 在不重新训练的情况下,动态查询这些私有数据并提供个性化回答。例如,企业可以使用 RAG 让 LLM 访问内部知识库,实现智能客服或决策支持。

  • 提高内容可追溯性:LLM 生成的内容通常无法溯源,而 RAG 允许模型在回答时引用具体的数据来源,例如检索到的网页、论文或数据库记录,使用户可以验证答案的真实性。这在医疗、法律等领域尤为重要。

  • 优化长文本处理能力:LLM 的上下文窗口有限,难以处理超长文本,而 RAG 可以分段检索相关信息,并将重要片段提供给 LLM,从而提高长文档的分析能力。例如,在法律案件分析中,RAG 可以从海量判例中检索关键案例,而不是让 LLM 直接处理整个数据库。

  • 增强数据安全性:企业往往不愿意将私有数据上传到第三方 LLM 平台,而 RAG 允许模型在本地或私有云环境中访问内部数据,避免数据泄露风险。例如,某些金融机构可以利用 RAG 构建私有化的 AI 助手,而无需担心数据安全问题。

2.3 RAG 与其他方案的对比

技术
适用场景
优势
劣势
微调
需要针对特定任务优化 LLM
提高任务适应性
训练成本高,难以适应变化快的知识
提示工程
通过优化输入提示提升输出质量
无需重新训练模型
适用性有限,难以解决知识更新问题
知识注入
在模型训练阶段加入额外知识
提高 LLM 的知识覆盖范围
训练数据越多,计算成本越高
RAG
需要动态获取最新信息、私有数据或长文本分析
低成本、高灵活度,解决时效性和私有数据问题
依赖高质量的检索系统,检索速度可能影响响应时间

从对比可以看出,RAG 结合了信息检索的强大能力,为 LLM 赋能,使其能够访问最新、权威的信息,同时避免了高昂的训练成本。

2.4 RAG 的核心技术

RAG 主要由以下三个模块组成:

  1. 增强数据处理

    • 对文本、图片、音频等多模态数据进行预处理。如 OCR 解析 png、jpg、PDF,文本解析 docx、pptx、html、json 等。
    • 进行数据切分、去重、向量化转换,提高检索效率。如文本向量化,多模态支持(clip 等图片 Embedding)
  2. 增强语义检索

    • 采用向量搜索(Vector Search)提高检索精准度。
    • 结合混合搜索(Hybrid Search)实现关键词和语义匹配。
  3. 增强召回

    • 通过精细排序算法优化检索结果。
    • 结合知识图谱、推理引擎增强答案的准确性。

除此之外,一般 RAG 的服务商还会支持私有化部署、多租户隔离和访问控制等安全控制能力。

以在阿里云 PAI 平台构建 RAG 问答系统为例,有以下 4 种方案:

  • Retrieval:直接从向量数据库中检索并返回 Top K 条相似结果。
  • LLM:直接使用LLM回答。
  • Chat(Web Search):根据用户提问自动判断是否需要联网搜索,如果联网搜索,将搜索结果和用户问题一并输入大语言模型服务。使用联网搜索需要给EAS配置公网连接。
  • Chat(Knowledge Base):将向量数据库检索返回的结果与用户问题合并填充至已选择的 Prompt 模板中,一并输入大语言模型服务进行处理,从中获取问答结果。

2.5 RAG 的应用场景

RAG 适用于需要高精准度、实时性、可追溯性的 AI 任务,广泛应用于 智能搜索、知识管理、内容生成、教育培训、法律/医疗检索等领域。例如:

  • 智能客服:结合企业知识库,实现实时检索 + LLM 生成,提供更精准、动态的客服回复。如银行客服可以基于最新政策,提供个性化贷款咨询,而非仅限于静态文档。
  • 内容创作:结合外部数据源,自动生成高质量内容,提升创作效率。如电商平台可利用 RAG 生成符合 SEO 规则的商品描述,提高搜索排名。
  • 知识管理:结合全文检索 + 语义搜索,快速查找相关文档,并生成摘要。如律师事务所可基于以往案例库,高效检索相关判例,提高办案效率。
  • 教育培训:结合课程内容,自动生成个性化练习题、案例分析、教学材料。如在线教育平台可根据学生的知识点掌握情况,动态调整练习内容。
  • 智能搜索引擎:结合 LLM 和 RAG,实现更自然的搜索体验。

3. 小结

RAG 作为 LLM 的重要补充,极大地扩展了大模型的能力边界,使其能够动态获取最新信息、降低幻觉、支持私有数据访问,并增强内容的可追溯性。随着 AI 技术的不断发展,RAG 预计将在搜索、问答、智能助手等领域发挥越来越重要的作用,为 LLM 提供更强的知识支撑和应用落地能力。

以上。