索引 · 2023
父子索引
用小块检索,命中后把包含它的大块交给模型阅读。
要解决的问题
小块容易命中具体事实,但模型只看到这一小段时缺少条件、定义和上下文。大块不容易被向量精确命中。
相对前一代的变化
普通切块在检索单位和阅读单位之间只能选一个。父子索引把两者分开:子块负责被找到,父块负责被阅读。
做法
文档先切成较大的父块,再切成较小的子块。索引里放子块向量,并记下它属于哪个父块。检索命中子块后,替换或扩展成父块再送入生成。自动合并检索还会在同一父块下的多个子块都命中时,直接升到上一层。
局限
父块如果仍然太长,只是把噪声推迟到生成阶段。层级如果切得不对,子块会指向一份并不包含答案的父块。
在链路中的位置
改的是索引结构,位于切块和向量检索之间。