RAG 中的文档分块策略?
发布于
一、为什么要分块
文档太长无法直接向量化(Embedding 有 token 限制),且 LLM 上下文有限。分块后每块独立检索。
二、分块方法
1. 固定长度分块
按 token 数切分,如每块 500 token,重叠 50 token。 - 优点:简单。 - 缺点:可能切断语义。
2. 按结构分块
按标题、段落、章节切分。 - 优点:保留语义。 - 缺点:实现复杂。
3. 语义分块
用语义相似度判断切分点。 - 优点:语义完整。 - 缺点:开销大。
4. 父子分块
小块用于检索,大块用于 LLM 生成。
三、分块大小选择
- 太小:丢失上下文。
- 太大:噪声多,检索不精准。
- 经验:500-1000 token,重叠 10-20%。
四、注意
- 保留元数据(来源、标题、页码),便于溯源。
- 结构化文档(表格、代码)需特殊处理。