
🧠 图解记忆: 固定分块按长度切,语义分块按主题边界切;块要既能独立表达,又不能大到混入多个意图。
💡 答案要点
传统固定分块的问题:
python
# 固定分块(Fixed Chunking)
text = "这是一篇关于机器学习的文章..."
chunks = []
for i in range(0, len(text), 500): # 每500字符一分
chunks.append(text[i:i+500])
# 问题:可能在句子中间截断,语义不完整Semantic Chunking(语义分块):
python
# 语义分块:用嵌入相似度判断何时"切"
def semantic_chunking(text, similarity_threshold=0.7):
sentences = split_sentences(text) # 先按句子分割
chunks = [[sentences[0]]]
for sent in sentences[1:]:
# 比较当前句子与上一个chunk的相似度
similarity = cosine_sim(embed(sent), embed(chunks[-1]))
if similarity > similarity_threshold:
chunks[-1].append(sent) # 继续属于当前chunk
else:
chunks.append([sent]) # 开始新chunk
return [" ".join(c) for c in chunks]2026年新发现——Context Cliff:
| 分块策略 | 平均大小 | 问答准确率 | 问题 |
|---|---|---|---|
| 固定分块(500字符) | ~200 tokens | 72% | 可能截断语义 |
| 语义分块(自动) | ~43 tokens | 54% | chunk 太小,上下文不足! |
| 语义分块(优化后) | ~512 tokens | 81% | 最佳平衡点 |
| Context Cliff | >2,500 tokens | 质量骤降 | 关键发现! |
Context Cliff 现象(2026年1月发现):
Token数量增加
↑
100%│ ┌─ 稳定区
│ │
80%│ ┌───────────────────┘
│ │
60%│ │
│ └───── Context Cliff(~2500 tokens)
40%│ 质量急剧下降
│
0%└─────────────────────────────→
0 1000 2500 4000 tokens面试话术:
"Semantic Chunking 的关键是'相似就合并,不相似就切开',用句子级别的嵌入相似度驱动分块,比固定字符数更智能。但 2026 年的新发现是 Context Cliff——chunk 太大(>2500 tokens)反而质量下降,因为有效信息被稀释了。最佳实践是控制 chunk 在 500-1000 tokens,既保留足够上下文,又不超过 Context Cliff。"