索引 · 2024

上下文检索

在嵌入和建 BM25 索引之前,给每个块补上它在原文中的位置和含义。

常用 · 使用现成模型

要解决的问题

块一旦离开文档,「该公司当年的收入」就失去了公司名和年份。词法检索和向量检索都会因此失败。

相对前一代的变化

父子索引在检索之后补回大块。上下文检索在入库之前就把解释写进块本身,使小块自己可以被正确检索。

做法

Anthropic 在 2024 年的技术报告里用模型为每个块生成一段短上下文,拼到块前面,再同时建立 BM25 和向量索引,并用重排序收尾。

局限

每个块都要额外调用一次模型,入库成本上升。生成的上下文如果写错,错误会被写进索引。

在链路中的位置

发生在切块之后、建立两种索引之前,常和混合检索、重排序一起使用。