语义切分是什么
按语义边界而不是固定长度切分文档:先把长文切成句子,计算相邻句的向量相似度,在相似度骤降的位置断开,再把过短的句组合并成块。这样切出来的块内部主题一致,检索命中后拿到的上下文更聚焦,对话题频繁切换的长文档与会议记录尤其有效。代价是需要额外的向量计算与阈值调试,边界稳定性也不如固定切分,所以它更适合作为有基线之后的优化项。
基本信息
| 基本原理 | 相邻句相似度检测断点,骤降处设分界 |
|---|---|
| 主要优点 | 块内主题一致,检索结果更聚焦,减少无关内容挤占上下文 |
| 主要成本 | 额外的向量计算开销与阈值调参工作量 |
| 稳定性 | 阈值一变块结构就变,同一文档两次处理结果可能不同 |
| 适用文档 | 话题漂移明显的长文档、会议记录、访谈稿 |
| 使用前提 | 先用递归或按标题切分建立基线,再用评测集比较是否值得引入 |
典型使用场景
- 会议记录与访谈稿:话题在段落中间切换,按长度切容易把两个议题混进同一块
- 技术手册与规范:同一章内包含多个独立小节,语义切线正好落在小节边界
- 客服对话日志:一次会话包含多个问题来回,按语义切能让检索瞄准具体那一轮
- 长篇报告入库:块内主题一致后,生成阶段的引用更短更准
- 作为切分策略的对比实验:与固定长度切分一起跑评测,用数据决定取舍
处理流程
处理流程
1) 长文先按句切分,处理中英文混排与省略号等边界
2) 每句向量化,可用与检索同一套 embedding 模型以省成本
3) 计算相邻句的余弦相似度,得到一条相似度序列 # 序列长度等于句数减一
4) 在相似度低于阈值的断点处切开,阈值按语料实测而非套用经验值
5) 合并过短句组并保留少量重叠,避免出现只有一句话的碎片块
# 检查点:抽样看几个块的原文,确认切出来的块确实对应一个完整话题参数与调整方向
| 参数 | 作用 | 调整要点 |
|---|---|---|
| 相似度阈值 | 决定断点多少 | 调高块变多,调低块变长,用块内主题一致性人工抽检 |
| 最小块长 | 防止碎片块 | 低于阈值时与相邻块合并,避免单句成块 |
| 最大块长 | 防止超长块 | 超过上限时强制二次切分,兼顾上下文占用 |
| 重叠比例 | 保持跨块连续 | 比固定切分可以更小,因为边界本身更干净 |
| 相似度模型 | 决定断点质量 | 与检索模型保持一致可降低口径差异 |
不要默认语义切分一定更好:它增加计算与调参成本,边界还可能不稳定,先用固定长度或按标题切分把基线跑出来,再用同一评测集比较检索命中率。
短文档与结构规整的文档收益很小:一篇逻辑清晰的说明文本按标题层级切分已经足够,语义切分的额外开销换不来可见的提升。