知识库调参
RAG 效果不好时,大家第一反应是换模型,其实大部分问题出在分段和检索上。这篇按我实际调参的顺序,讲分段大小、Top-K、相关度阈值和提示词约束。
一、先确认资料里有答案
把同一个问题在原文里搜一遍。搜不到,怎么调参数都没用;搜到了但答案是表格或图片,那要先解决解析问题。这一步不能省。
二、分段大小
分段是影响最大、也最容易被忽略的参数。
| 分段长度 | 特点 |
|---|---|
| 100–200 字 | 检索精准,但容易丢上下文,模型只看到半句话 |
| 300–600 字 | 中文资料比较通用的区间 |
| 800 字以上 | 上下文完整,但混入无关内容,检索变"钝" |
我的做法:优先按标题/段落切,其次按长度兜底,控制在 300–600 字,相邻段保留 10%–15% 重叠,避免一句话被切成两半。表格、代码、操作步骤尽量整块保留,不要拆。
另外给每段加元数据:文档名、章节、周次。检索时一并拼进提示词,模型引用和溯源都靠它。
三、Top-K
Top-K 是每次送给模型的片段数量。
- K 太小(1–2):容易漏掉关键片段。
- K 太大(10 以上):无关片段挤占上下文,小模型尤其容易被带偏,还拖慢速度。
- 起点建议 3–5,再和阈值一起调。
四、相关度阈值
阈值的作用是"宁缺毋滥"。相似度低于阈值就不进提示词,让模型直接说找不到。
注意:不同 embedding 模型算出的分数不能直接比较,换模型要重新标定。我的方法是拿 10–20 个真实问题跑一遍,看正确片段的分落在哪个区间,把阈值定在略低于它。
检索可以混合 BM25 关键词和向量。专有名词、课程编号这类词,关键词检索反而更准。
五、提示词约束
检索对了,最后一步是让模型别乱发挥:
只根据下面的资料回答。
资料里没有的内容,直接回答"资料中未提供",不要推测。
引用时写出片段编号,如 [2]。
用中文分点作答,不超过 200 字。六、准备固定的评估集
调参最怕"感觉好像好了一点"。准备 10–20 个固定问题,每次都记录答对几个、错在哪类、花多少时间。参数一次只改一个,改完重测,才知道到底有没有变好。
顺序还是那句:先修数据,再调检索,最后调提示词。