这是一个较新颖的方法,一般chunk切1024或51或按句切分的时候,就怕代词的所指被切掉,embedding时就自然召回不到了。延缓该问题的方法有覆叠chunk,但是还是一刀切,不够solid。
一个聪明的方法是,把一整个文章扔进embedding,经过几层前向,再按token位置切分,再把每段继续embedding。这个方法就叫late chunk,它希望几层后,各token的语义已经提取较好了,不再缺少信息了,这是模型本身的功能,所以late chunk是迎合模型功能的改动。效果如何不知道,但是是一个聪明的解决办法。
chunk的前后顺序有时存在一些信息,特别是对于有结构的文章,你想得到结构化的回答,就必须保持原文顺序,但是你又希望让高相似度chunk排前面,这是针对大模型att特点的优化。NVIDIA对此的做法是,chunk顺序按原文,但是chunk开头标上相似度,以让llm知道哪一段更能回答问题,就这样兼顾了两方面。