本节摘要:企业落地的主战场不是自由写作,而是"用指定知识回答问题、维持多轮对话、把文本变成结构化数据、生成可靠代码"。本节讲 RAG 的完整架构与各环节优化(这是当代最重要的应用架构)、多轮对话系统的状态管理、结构化抽取的格式保证技巧,以及代码生成的能力边界与验证纪律。
阅读完本节,你应当能够:
先看问题。纯大模型做企业问答有三大死穴:知识固化在训练数据里(问新政策就露怯)、私有知识根本没见过(企业内部文档)、回答没有出处(用户无法核实)。**RAG(检索增强生成)**的解法:把"回答"改成"先查资料再回答"——检索器从知识库找出相关片段,生成器基于片段作答,并附出处。

五个优化环节展开:
分块:文档切成多大的片段喂给嵌入与检索,是 RAG 效果的第一变量。块太大,一个向量要概括太多内容,检索不准;块太小,语义被切碎。常规起点 300–800 token、相邻块保留 10–20% 重叠防语义断裂;更好的做法是按结构切(标题、段落、条款),让块天然语义完整。
嵌入模型:向量检索的质量由嵌入模型决定(5.2 节对比学习的产物),选专门的嵌入模型而非通用模型凑合,中文场景注意选中文强的。
混合检索:纯向量检索对"精确术语"(型号、错误码、人名)不敏感——语义相近但关键词不同会漏。向量 + 关键词(BM25)双路召回再融合,是效果最稳的组合。
重排序:召回阶段(快而粗)后加一个精排模型对 top 几十做细粒度排序,取 top 几进生成。重排模型小而便宜,对最终命中率的提升常常超过换更大的生成模型——RAG 里性价比最高的一环。
问题改写:用户问句常有指代与省略("那第二种呢?"),先让模型把问题改写成独立完整的查询再检索。多轮场景必备。
调试心法记一句:RAG 答错,八成是检索错。排查顺序固定为:看检索命中了什么(大多数团队跳过这步直接怪模型)→ 命中了但生成没用上(提示词问题)→ 检索没命中(分块/嵌入/查询问题)。
多轮对话比单轮问答多出两个工程问题:
上下文管理。对话历史不能无限拼接——上下文窗口有限(第 7.1 节的 KV 缓存成本随长度涨),且过长的历史反而稀释关键信息。常见策略:滑动窗口保留最近 N 轮 + 更早的历史做摘要压缩;把稳定的背景信息(用户档案、业务规则)放系统提示,把易变的对话内容做裁剪。判断标准是"模型需要的记忆"而非"全部聊天记录"。
角色与边界设定。系统提示定义角色(身份、语气、能力范围、禁止事项)。要点是写"做什么"也要写"不做什么、怎么做"("不知道时引导转人工"而非只写"不能瞎答"——负面清单不给替代行为,模型会自己发明一个)。
结构化输出对话(要触发工具或返回 JSON)是第三层:用函数调用/结构化输出能力让"用户说话"与"机器执行"之间有明确协议,比从自然语言里抠指令可靠得多。
把合同、简历、工单、新闻变成结构化字段(实体、关系、金额、日期),是传统 NLP 的苦役,也是大模型的舒适区——schema 随时改、长尾字段零样本抽取,不用为每个新字段标数据再训模型。
工程要点全在格式可靠性上。自由生成 JSON 会遇到:多余客套话、字段名拼写漂移、该空缺的字段编了个值。对策按层次:优先用 API 的结构化输出/函数调用能力(约束解码保证语法合法);提示词里给完整 schema 与示例,明确"缺失字段填 null 不许编";抽取后做 schema 校验(类型、枚举值、必填),不合法自动重试;关键字段抽样人工复核。这套组合下来,格式合法率可以压到接近百分之百——抽取任务的失败几乎全是工程没做足,不是模型不行。
代码是大模型商业化最成功的方向,但要清楚强弱边界:
强项:样板代码与常见模式(CRUD、配置、测试骨架)、语言内转换、代码解释与文档、单函数级算法实现、根据错误信息定位常见问题。这些场景模型节省的时间是实打实的。
弱项与风险:精确的 API 细节(会一本正经地调用不存在的方法——幻觉在代码场景的形态);跨文件的长上下文依赖(改一处忘一处);深业务逻辑(模型不了解你的领域规则);安全问题(生成看似可用但有漏洞的代码)。
由此得出验证纪律:生成的代码没有跑过测试就不算代码。自动测试先行(让模型先写测试再写实现是提高可靠性的有效模式)、静态检查接入、关键路径人工审查。团队层面把"AI 代码"与"人写代码"放进同一个质量门禁(第 8.3 节的评测集思路平移到代码:固定一组任务,量化不同模型/提示词的通过率)。
经典问题的经典答案:知识用 RAG,行为用微调。知识频繁更新、需要溯源——RAG;要让模型稳定遵循某种格式或风格——微调。两者可叠加(微调过的模型 + RAG 的知识)。另一个常被忽略的点:RAG 的知识即时生效(加文档即生效),微调的知识更新要走训练流程——时效需求高的场景没有选择。
这是数据治理问题不是模型问题。解法在源头:文档版本管理、过期标记;在线上:检索时过滤失效版本,或让模型声明"存在多个版本,以某版为准"。指望模型自己处理矛盾文档,不如治理好文档库。
默认不会(训练数据里没有),两条路:把内部 API 文档放进上下文(RAG 思路,最常用);或对代码模型做领域微调。前者即时、可溯源;后者适合 API 庞大稳定的情况。
RAG 系统不必一步到位,一条经过验证的升级路线可以控制风险与投入:
第一阶段,最小可用:文档按固定长度分块、单个向量检索、生成时附来源。目标是跑通价值验证——哪怕检索质量一般,"有出处的回答"已经显著优于裸模型。此阶段两周内可完成。
第二阶段,检索质量攻坚:上混合检索(向量加关键词)、加重排序、分块改按文档结构。这一阶段是收益最大的投入,典型的失败案例(答案在库里却答错)大多在此解决。
第三阶段,查询理解:多轮对话的问题改写、复杂问题拆解(一个问题变多个检索)、按文档类型路由不同检索策略。解决"用户问得不好"的问题。
第四阶段,工程化:增量更新索引、权限过滤、缓存高频问答、评测集回归纳入发版流程。解决"长期运营"的问题。
每阶段都以评测集指标驱动(第 8 章),不达标不前进。反模式是一开始就追求"智能体式 RAG"(模型自主决定查什么、查几次)——那是最脆弱的形态,留到系统与评测都成熟之后再说。
被忽视但极重要的设计:检索没有命中时系统该怎么办。默认行为往往是模型硬答(幻觉高发区)。正确设计是三级降级:命中充分时正常作答附来源;命中较弱时如实说明"根据现有资料只能回答部分"并给局部答案;完全未命中时明确回答"知识库中未找到相关内容"并引导转人工或换个问法。这级降级看似简单,却直接决定企业场景的信任底线——用户宁可听到"不知道",也不能接受"一本正经地编"。
可以且常见,但要明确分工边界:RAG 管动态知识(更新频繁、需要溯源的事实),微调管静态能力(领域话术、输出格式、指令风格)。一个典型组合:先微调让模型掌握行业术语与回答规范,再挂 RAG 提供实时的政策与数据。做反了的特征是"用微调灌知识、用提示词硬掰格式"——前者更新成本高得离谱,后者稳定性差得离谱。分工对了,两者互不干扰、各尽其用。
按信息的时间价值分层:当前任务相关(本轮对话上下文)全量保留;会话级偏好(用户称呼、已确认的事实)摘要保留;跨会话画像(长期偏好)显式征得同意后结构化存储。三层的存储介质分别是上下文窗口、会话存储、用户档案。不分层的常见后果是"把三个月前的对话全塞进提示词"——成本高且效果差,模型被无关记忆稀释了注意力。
RAG 知识问答,理由有三:技术栈适中(检索加生成,难度可控)、效果直观(喂自己的文档立刻可用)、覆盖面广(顺带练嵌入、分块、评估一整套技能)。第 10.3 节的动手路线把它排在压轴位置,但如果你只想做一个项目,就做它——做完你对本教程第 3、5、8、9 章的理解会同时落地。
文字之外还有图像与声音——下一节看多模态应用与行业落地的真实图景。