WMX · 随记
·AI· 3 分钟阅读

检索分块:重叠能保留边界,也会制造重复

长文档切块时,关键句可能刚好跨过边界。保留部分重叠能缓解上下文断裂,但会增加索引体积与重复检索。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

长文档切块时,关键句可能刚好跨过边界。保留部分重叠能缓解上下文断裂,但会增加索引体积与重复检索。

理解核心机制

固定窗口的步长等于块大小减重叠长度。下面按字符演示区间和覆盖关系;真实系统应根据语言、标题结构与 tokenizer 决定切分单位。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python13 行 · 可横向滚动
def chunks(text, size, overlap):
    if not 0 <= overlap < size:
        raise ValueError("require 0 <= overlap < size")
    start = 0
    while start < len(text):
        end = min(start + size, len(text))
        yield start, end, text[start:end]
        if end == len(text):
            break
        start = end - overlap
result = list(chunks("abcdefghijkl", 5, 2))
assert result[0][2][-2:] == result[1][2][:2]
print(result)

适用边界与常见误区

字符窗口不保证语义完整,重叠也无法补救错误解析或丢失标题。每块应保留来源、偏移量和版本,以便引用定位与去重。

继续练习

在一段带标题和表格的文本上比较固定窗口与段落切分,检查答案证据是否完整落在可检索块内。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档