为什么需要重叠率?
用RAG的时候,大模型一次只能处理有限长度的文本,所以得把长文档切成小块。如果切的时候完全不重叠,很容易把本来连贯的关键信息劈成两半,比如一句完整的话刚好跨在两个块的边界,检索的时候只能拿到一半,就找不到完整的答案了。加重叠率就能避免这个问题。
具体例子
假设我们有一段完整的话:
“小红暑假去了海边,她早上捡贝壳,中午吃海鲜大餐,下午在沙滩上堆沙堡,晚上看了日落。”
场景1:重叠率0%(完全不重叠)
我们把每个切片长度设为15个汉字:
- 切片1:
小红暑假去了海边,她早上捡 - 切片2:
贝壳,中午吃海鲜大餐,下午在 - 切片3:
沙滩上堆沙堡,晚上看了日落
如果有人问**“小红早上做了什么”**,切片1只有早上捡,完整的捡贝壳在切片2的开头,单独检索切片1的话无法拿到完整答案。
场景2:重叠率20%(15*20%=3个汉字的重叠)
- 切片1:
小红暑假去了海边,她早上捡 - 切片2:
早上捡贝壳,中午吃海鲜大餐, - 切片3:
海鲜大餐,下午在沙滩上堆沙堡, - 切片4:
堆沙堡,晚上看了日落。
这时候切片2里就有完整的早上捡贝壳,直接就能精准回答问题,不会丢失上下文信息。
总结
重叠率就是「相邻文本块的重叠部分占单个块长度的比例」,作用是让拆分后的文本块能覆盖所有连贯信息,避免关键内容被切垮~
重叠率越高,相邻切片的重复内容越多,检索时越不容易漏掉上下文,但也会增加总切片数量和一点处理成本,日常RAG场景中常用的重叠率在10%-30%之间。
评论区