自动合并检索器(AutoMergingRetriever)是LlamaIndex中的一种检索器,其主要作用是通过递归地“合并”引用父节点超过给定阈值的叶节点子集,从而将潜在不同的、较小的上下文合并成一个较大的上下文,以帮助合成更全面的信息。
工作原理
-
节点层次结构解析:
- 使用HierarchicalNodeParser解析文本,生成一个节点层次结构。这个层次结构从顶层节点(较大的块)到子节点(较小的块),每个子节点都有一个父节点(较大的块)。
-
叶节点提取:
- 从节点层次结构中提取叶节点(没有子节点的节点)。这些叶节点将通过向量存储进行索引和检索。
-
存储加载:
- 将所有节点(包括叶节点和非叶节点)加载到文档存储中。叶节点将被索引并存储在向量存储中,而非叶节点则存储在文档存储中。
-
基础检索器创建:
- 创建一个基础检索器(如向量检索器),用于从向量存储中检索最相似的叶节点。
-
自动合并检索器创建:
- 创建AutoMergingRetriever,它使用基础检索器检索叶节点,并根据引用父节点的阈值递归地合并这些叶节点。如果多个叶节点引用同一个父节点且超过阈值,这些叶节点将被合并到父节点中。
-
查询与合并:
- 执行查询时,AutoMergingRetriever首先使用基础检索器检索最相似的叶节点,然后根据需要合并这些叶节点到父节点中,以提供更全面的上下文。