Skip to content
🔗 分享本题
查看我的学习进度 →
语义分块与固定分块对比图解

🧠 图解记忆: 固定分块按长度切,语义分块按主题边界切;块要既能独立表达,又不能大到混入多个意图。

💡 答案要点

传统固定分块的问题:

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 tokens72%可能截断语义
语义分块(自动)~43 tokens54%chunk 太小,上下文不足!
语义分块(优化后)~512 tokens81%最佳平衡点
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。"

📚 参考:Anthropic:Contextual Retrieval(语义分块与上下文增强)