30 秒快速回答
语义分块(Semantic Chunking)是指按语义边界(段落、小节、完整句子群)切分文档,而不是按固定 token 数量硬切的技术。它解决的是 RAG 系统的第一个致命问题:文档被”拦腰截断”后,语义残缺的碎片既搜不准、也答不对。核心价值一句话:分块质量决定了检索上限,检索上限决定了 RAG 回答的天花板——在换更强的模型之前,先把分块做好,性价比最高。
为什么分块是 RAG 的第一道关卡
RAG 的典型流程是”切分文档 → 向量化 → 检索 → 生成”。很多人把精力花在调 embedding、换大模型上,却忽略了最前面的分块。如果分块不当,后面每一步都在为错误买单:
- 固定长度硬切:把一段完整论述从中间切断,chunk 里只剩半句话,embedding 编码出的向量既不代表原意,检索时也难以命中用户问题;
- 块太小:上下文信息不足,模型拿到碎片只能”知识不够、全靠脑补”;
- 块太大:向量被大量无关内容稀释,检索精度下降,还挤占上下文窗口。
一个直观经验是:在同样的 embedding 和模型下,仅把分块策略从”固定 500 token 硬切”换成”按段落语义分块”,检索命中率往往能提升 20% 以上。
四种主流分块策略对比
| 策略 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 固定大小分块 | 按 token 数硬切 | 实现简单、速度快 | 切断语义、块边界随机 | 快速原型、超短文本 |
| 递归字符分块 | 按换行、段落、句子逐级切 | 结构自然、成本低 | 仍是规则驱动,边界粗糙 | 通用文档、长文初筛 |
| 结构分块 | 按 Markdown 标题/章节切 | 保留文档层级关系 | 依赖文档格式规范 | 教程、Wiki、API 文档 |
| 语义分块 | 按 embedding 相似度找切点 | 边界贴合语义、检索质量最高 | 需额外计算、成本略高 | 知识库问答、生产级 RAG |
语义分块怎么做:代码实战
核心思路:先把文档切成候选句子,逐句计算 embedding,当相邻两句的余弦相似度低于阈值(话题发生转变)时,就在这里切一刀。下面是用 LangChain 的 SemanticChunker 实现的最小示例:
from langchain_experimental.text_splitter import SemanticChunker
from langchain_openai import OpenAIEmbeddings
# 1. 初始化语义分块器,threshold_type 可调灵敏度
splitter = SemanticChunker(
embeddings=OpenAIEmbeddings(model="text-embedding-3-small"),
breakpoint_threshold_type="percentile", # 用相似度分位数找断点
breakpoint_threshold_amount=95, # 相似度跌出前 95% 才切分
)
# 2. 传入整篇文档,自动按语义边界切块
chunks = splitter.split_text(doc_text)
for i, chunk in enumerate(chunks):
print(f"chunk-{i}: {chunk[:80]}...")
如果不想引入 LangChain,也可以自己实现,核心就三步:分句 → 算相邻句相似度 → 找断点。阈值建议先画出相似度分布图,取”断崖”位置,而不是拍脑袋定 0.7 之类的固定值。
实践建议:chunk size、overlap 与评估
- chunk size 怎么选:以”一个完整观点”为单位,中文文档常见 200-500 token;不要迷信大模型窗口,检索粒度与生成粒度是两回事。
- 保留 10%-20% overlap:相邻块重叠一小段,避免边界处的关键信息被截断,跨块命中也能兜住。
- 把 metadata 一起存:把文档 ID、章节标题、日期作为过滤字段存进向量库,检索时先过滤再排序,比纯语义更准。
- 务必建立评估集:准备 50-100 个真实问答对,跑”检索命中率 / 最终答案正确率”,分块改完用同一套数据回归测试,防止”这块好了那块坏了”。
总结与延伸阅读
语义分块不是花哨技巧,而是 RAG 工程的”地基”:先保证每个碎片是一个完整语义单元,再谈检索和生成。记住三条主线:按语义边界切分、overlap 兜底、用评估集验证效果。
延伸阅读:本站的《什么是 RAG?一文搞懂检索增强生成》《什么是混合检索与重排序?RAG 检索质量提升的核心技术》《什么是 Contextual Retrieval?Anthropic 让 RAG 检索失败率降低 35% 的嵌入增强技术全解析》《什么是 Adaptive RAG?自适应检索增强生成的原理与实践全解析》可以帮你把检索链路完整补齐。