Skip to content

知识库调参 ​

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 个固定问题,每次都记录答对几个、错在哪类、花多少时间。参数一次只改一个,改完重测,才知道到底有没有变好。

顺序还是那句:先修数据,再调检索,最后调提示词。