RAG 的知识库分块,切多大才合适?

3 个讲解板块 · 关联 2 款站内工具 · 内容最后核对 2026-10-09

512 配 50 是经验起点,不是标准答案;关键是块要装得下一个完整意思。

直接答案

没有普适最优值,只有权衡:块越大,单块包含的信息越多、越不容易漏,但嵌入向量会被多个主题稀释,检索精确率下降;块越小,语义越聚焦、精确率越高,但一个完整的知识点可能被切开,两边都不完整。所以先按场景选一个成熟起点,再用自己的测试集验证。

工程上常用的起点是:通用文档问答 512 到 1024 tokens、重叠取 10% 到 20%(512 配 50 是出现频率最高的默认值);短内容 128 到 256 tokens、可不要重叠;长技术文档与法规 1024 到 2048;代码按函数或类切。还有一个硬约束容易被忽略:检索条数乘以块大小必须能装进大模型的上下文窗口,嵌入模型自身的 token 上限也会把超长块直接截断。

很多团队把时间花在调提示词和换嵌入模型上,却忽略了一个更靠前、影响更大的决定:文档怎么切。检索单元本身就是块,切得不好,再强的重排序也救不回来——答案被切在两个块里,谁都检索不到完整的部分。

分块没有「正确答案」,只有「适配场景的参数」。它像镜头焦距:拉近了看得清细节但看不到全貌,拉远了看到全貌却看不清细节。理解这一点,就不会再纠结「到底哪个数值最好」,而是先定场景、再定参数、最后用数据验证。

1按场景选起点

下面这些是被反复验证过的经验值,可以直接当初始配置,再按效果微调。

场景建议块大小重叠原因
通用文档问答 / 知识库512 到 1024 tokens10% 到 20%(512 配 50 最常见)兼顾精确率与上下文完整性
短内容(FAQ、商品描述、评论)128 到 256 tokens可以不要来源本身就短小自洽,每块对应一个答案
长技术文档 / 论文 / 法规1024 到 2048 tokens10% 到 15%长逻辑链、代码段和表格不能被切碎
代码仓库按函数或类切,约 200 到 600 tokens按结构决定函数与类才是天然语义单元
对话记录 / 客服会话按轮次切,256 到 512 tokens少量一轮问答本身就是一个完整语义单元

先按 512 配 50 跑一版基线,把召回效果测出来再调——没有基线的调参只是在换数字。

2重叠是干什么用的

重叠不是为了「多塞点内容」,而是给切分边界搭桥,解决关键信息被切断的问题。

边界截断问题
一段关键结论正好横跨切分点,前半句在一块、后半句在另一块,检索时两块都不完整。
重叠怎么缓解
让相邻两块共享末尾与开头的若干 token,被切断的句子至少有一块是完整的。
重叠取多少
通常是块大小的 10% 到 20%,512 的块取 50 是常见配置;再大就只是在制造冗余。
重叠的代价
索引体积与存储成本上升,同一段内容被重复向量化,检索结果里也可能出现近似重复的块。
配套做法
切块时带上标题路径等元数据,比单纯加大重叠更能保住上下文。

3三个必须自己核算的约束

参数选完后,这三笔账决定了检索链路能不能真的跑通。

  1. 算上下文预算:检索条数 k 乘以块大小,必须能在留出提示词与回答空间后塞进大模型窗口。
  2. 核对嵌入模型上限:很多模型输入上限是 512 tokens,超限部分会被静默截断,块再大也无效。
  3. 看来源结构:能按标题、章节、页面切就别用固定长度硬切,结构感知的分块通常明显优于定长切分。
  4. 建立评测集:准备 25 到 50 组「问题加应有答案」,量一下正确块有没有进前 k 名,用数据决定要不要改。
  5. 一次只调一个参数:块大小和重叠同时改,出问题就说不清是谁造成的。

相关疑问

512 tokens 这个数字是怎么来的?

它是多个约束的交点:大约是一到两个自然段,能保持语义完整;与多数嵌入模型的 512 上限对齐;按 10 条召回计算正好约 5000 tokens,落在大模型的舒适区间。它是经验起点,不是理论最优。

重叠是不是越大越好?

不是。重叠只在切分边界附近起作用,取块大小的 10% 到 20% 就够;再往上增加的是索引冗余和去重成本,边界问题并不会继续改善。

块切得小,检索不是更准吗?

精确率会更高,但召回率会掉。一个完整答案被切到三块里,而只召回其中一块时,大模型拿到的就是残缺信息,回答反而更错。

换了嵌入模型需要重新分块吗?

需要重新评估。不同模型的输入上限和语义敏感度不同,原来的块大小可能正好卡在它的截断边界上,换模型后建议重跑一次评测集。

内容标识:本页内容由人工智能辅助生成,并经人工核对与编辑。详见 人工智能生成内容标识说明。
内容说明:本页针对具体使用问题作答,方法步骤与数值由本站自行整理与复算,事实性内容以对应官方规范与文档为准。内容最后核对日期:2026-10-09。若发现错误,欢迎通过页脚反馈入口告知。