跳到主要内容
OSSpark

搜索文章

3240 字
16 分钟

RAG 调优和模型微调分别在改什么

目录

本文通过虚构教学案例比较调整方法,不包含实际训练、部署或效果测量记录。

先说清楚,要调整的是哪一层#

知识库回答不符合预期时,一句“把效果微调一下”可能包含完全不同的工作:修改切片长度、增加候选数量、调整提示,或者准备数据训练模型。

这些动作会改变不同的东西,也需要不同的验证方式。如果资料根本没有进入模型输入,先训练生成模型未必能解决缺失;如果证据完整且任务行为仍持续不稳定,才值得进一步评估训练是否合适。

为了明确讨论对象,本文把切片、检索、输入组装和生成配置的改进称为“RAG 调优”,把更新模型权重或可训练适配器的过程称为“模型微调”。这是本文采用的工程讨论口径。

用一条问答链路区分改动对象#

以一个虚构账号问题为例:用户问培训环境的账号找谁申请,审批后多久开通。资料 A 规定申请与审批流程,资料 B 规定审批通过后由管理员在 1 个工作日内开通。

一次回答至少涉及以下环节:

flowchart TD
A[整理和切分资料] --> B[编码、建立索引并检索候选]
B --> C[筛选证据,组装问题与上下文]
C --> D[生成答案,核对事实与引用]
图 001:一次问答涉及资料、检索、输入和生成等环节,调整时要区分实际改动对象。

调整切片,改变的是每条可检索内容的边界;调整 TopK,改变的是某一步最多保留多少候选;调整提示,改变的是本次请求对回答任务的要求。它们都可以在不训练模型的情况下改变最终结果。

模型微调则需要训练样本和优化过程,改变模型参数或适配器。它也可以发生在不同部件上:生成模型、Embedding 或检索器、重排模型,训练目标各不相同。

002:RAG 调优改变资料、检索、输入与生成配置;模型微调通过训练更新生成模型、检索器或重排模型的参数或适配器,两者可以组合

图 002:先明确改动对象,再决定需要什么样的验证。分类采用本文的工程讨论口径,不是实际训练或效果记录。依据本文内容自绘。

RAG 调优:先让需要的证据到达模型#

如果回答漏了时限,应先检查 B 在哪里消失。B 被切掉了必要条件,需要检查切片;B 排在第二名却只保留一条,需要检查数量限制;B 已取回但没进入请求,需要检查输入预算。

这些问题可以分别对应到具体调整:

调整对象改变什么怎样验证
资料与解析系统实际读取到哪些事实、标题和条件对照原文检查解析结果,确认有效版本
切片与相邻内容每个检索单元包含哪些上下文检查条件与结论是否完整,是否带入过多无关内容
检索方式如何找到候选在固定问题集上检查预期证据有没有被找回
候选数量、过滤与排序哪些候选留下,顺序如何检查排除原因、范围条件和最终证据覆盖
输入组装哪些内容真正进入请求检查实际输入,确认 B 及其审批前提完整保留
提示与输出约束如何组织回答、处理缺失和提供引用对照证据检查答案,复测资料不足的情况

选择检索方式也要对应问题。精确编号、文号和专业术语值得单独测试;语义相近的问题则可能受益于向量表示。Microsoft 的混合检索说明介绍了关键词与向量检索的互补,但其服务中的融合实现不能直接当成所有系统的行为,更不能据此保证自己的数据上一定更好。

调整是否有效,要看证据与答案的对照。只把最终答案读起来是否流畅作为标准,很容易漏掉资料没有覆盖、适用环境错误或引用不支持结论的问题。

temperature 调整生成选择,不补充缺失资料#

如果 B 没有进入请求,调低 temperature 不会把 B 自动取回来。模型需要的时限仍然缺少依据。

在支持相应采样策略的服务中,temperature 影响生成时的概率分布,top_p 限制采样候选集合;输出长度上限约束允许生成的长度。具体含义和是否生效需要按接口与解码策略核对。例如,Transformers 的 Generation 文档分别定义了采样开关、temperature、top_p 和 max_new_tokens。

这几类设置可以影响表达与长度,却不能保证事实正确。输入中已经有 B,仍然写错时限,需要检查任务要求、证据使用与输出核验;输入中没有 B,则应先回到资料与检索链路。

这里还容易混淆两个名字:检索中的 TopK 表示候选资料的数量限制,生成采样中的 top_k 表示候选 Token 的限制。虽然名称相近,改动对象并不相同,配置和诊断记录应写清所在环节。

模型微调:用样本改变任务行为或相关性表示#

当输入、检索与验证流程已经基本清楚,某种任务行为仍持续不稳定时,可以评估模型微调。不过,在准备训练前,需要先说清楚要训练哪个部件、样本是什么,以及要改善哪个可测量的问题。

微调对象样本可以包含什么希望改善的能力仍要保留的检查
生成模型问题、证据、符合要求的回答,以及资料不足示例依据证据回答、引用、固定格式和领域表达当前资料是否提供,答案是否得到证据支持
Embedding 或检索器问题、相关片段、措辞相近但不适用的负例业务表达的相关性表示与候选召回新旧编码兼容性、固定问题集上的检索效果
重排模型同一问题下的候选片段与相关性标注候选的优先级正确片段是否已被初次检索取回

在账号案例中,生产规则可能与培训问题很相似,却不适用。这可以用于解释负例的意义,但本文并没有据此制作训练集或完成训练。重排也只能处理已经送到它面前的候选,初次检索完全漏掉 B 时,后续排序没有 B 可选。

LoRA 是模型微调的一种方法。PEFT 的 LoRA 说明介绍了冻结原始权重、训练较小低秩更新矩阵的方式。选用了这种方法,仍然需要决定训练数据、目标模块和适配器规模,并通过验证判断收益;不能只凭可训练参数减少,就宣称某项任务已经变好。

哪些变化需要重新处理索引#

改完配置后,另一个实际问题是:已有文档向量还能不能继续使用?

判断时,可以追问两件事:用于编码的内容是否改变,检索依赖的字段或结构是否改变。前者关系到向量是否仍代表当前内容,后者关系到查询和过滤是否仍然正确。

003:Spring AI 的 Embedding 示意图,输入内容通过编码模型转换成向量,右侧用投影展示表示之间的关联

图 003:文档内容、编码模型与向量表示之间存在关联。来源:Spring AI:AI Concepts,上游许可为 Apache License 2.0,原图直链引用,未修改。图中的数字和投影不作为本文的测试结果,也不能据此混用不同模型的编码空间。
修改对索引的通常影响需要注意的条件
正文、切片边界、参与编码的标题或前缀更新受影响的片段与向量不必把局部更新一概理解为全库重建,但旧内容必须同步退出或更新
Embedding 模型、维度或经过训练的编码表示通常需要重算相应文档向量,并检查索引兼容性问题编码也必须配套,不能只确认维度相同
环境、权限和生效版本等元数据必须同步检索使用的字段是否重算向量取决于这些信息是否参与编码;权限更新不能只停留在管理页面
TopK、门槛与重排配置通常不需要重新向量化资料特定服务的索引或查询结构变化需另外核对
提示、生成参数、生成模型通常不需要重建文档向量仍需重新评估事实、引用与缺失处理

这张表是基于本文所述流程的工程判断,不是某个数据库的操作手册。具体更新方式还要看索引实现和编码输入,不能仅凭“只是改了元数据”就跳过同步检查。

004:正文、切片或编码模型变化通常需更新相应片段和向量,权限及版本变化必须同步检索字段,查询与生成配置变化通常不需重新向量化但仍需评估

图 004:索引处理的判断摘要。局部更新不一定等于全库重建,元数据变化是否需要重算向量取决于编码输入,具体操作仍需核对实现。依据本文内容自绘。

RAG 与训练可以组合,资料更新仍要单独管理#

在常见的资料入库流程中,给现有片段重新编码和建立索引,不等于训练生成模型。但把这一点推广成“RAG 永远不涉及训练”也不准确:原始 RAG 论文本身就研究了检索增强生成模型的微调方法。

在工程讨论里,应把入库、推理调用与训练过程分别说明。一个模型可以经过任务微调,再读取检索到的最新资料;一次资料更新,也可以只改变检索内容而不重新训练生成模型。

如果培训规则从 1 个工作日改成 2 个工作日,当前有效证据必须同步更新。即使模型学会了稳定的回答格式,也仍需要拿到新规则。训练解决的任务行为问题,不能代替资料版本管理。

验证方式要跟着改动对象走#

本文建议先固定问题、预期证据和当前配置,再围绕一个已确认原因做调整。检索调整看所需片段能否取回;输入调整看必要事实能否完整进入;生成调整看答案与引用是否忠实;训练则还需要独立的验证与测试数据。

参与训练的题目可以用于检查学习过程,却不能直接证明模型能处理未见过的问题。训练数据质量、学习率、轮数、批量大小和样本截断,都应结合验证结果判断,而不是从一次顺畅回答里推断成功。

比较结果时,也要复测原本正确、资料不足和范围干扰的问题,并分别记录运行延迟与成本。本文不提供通用最优参数,因为这些取舍需要实际任务证据。

RAG 调优与模型微调都可能改变最终答案。先明确失败位置、改动对象和验证指标,才能判断下一步需要修改资料、调整应用,还是准备一次有依据的训练实验。

参考资料#