各索引的工作原理#
本指南通过图示说明每种索引的工作原理。
一些术语:
- 节点(Node): 对应文档中的一段文本块。LlamaIndex接收文档对象,并在内部将其解析/分块为节点对象。
- 响应合成: 我们的模块,用于根据检索到的节点合成响应。您可以查看如何指定不同的响应模式。
摘要索引(原列表索引)#
摘要索引只是将节点存储为一个顺序链。
查询#
在查询时,如果没有指定其他查询参数,LlamaIndex会简单地将列表中的所有节点加载到我们的响应合成模块中。
摘要索引确实提供了多种查询摘要索引的方式,包括基于嵌入的查询(将获取前k个邻居),或者如下所示添加关键词过滤器:
向量存储索引#
向量存储索引将每个节点及其对应的嵌入存储在Vector Store中。
查询#
查询向量存储索引涉及获取前k个最相似的节点,并将它们传递到我们的响应合成模块中。
树状索引#
树状索引从一组节点(这些节点成为树中的叶节点)构建出一个层次化的树结构。
查询#
查询树状索引涉及从根节点向下遍历到叶节点。默认情况下(child_branch_factor=1
),查询会在给定父节点时选择一个子节点。如果child_branch_factor=2
,则查询会在每层级选择两个子节点。
关键词表索引#
关键词表索引从每个节点提取关键词,并构建从每个关键词到对应节点的映射关系。
查询#
在查询时,我们会从查询中提取相关关键词,并与预先提取的节点关键词进行匹配,以获取对应的节点。提取到的节点会被传递到我们的响应合成模块。
属性图索引#
属性图索引的工作原理是首先构建一个包含带标签节点和关系的知识图谱。该图谱的构建具有高度可定制性,范围从让LLM提取任何它想要的内容,到使用严格模式进行提取,甚至实现您自己的提取模块。
可选地,节点也可以被嵌入以便后续检索。
你也可以跳过创建步骤,直接通过Neo4j等集成方式连接到现有的知识图谱。
查询#
查询属性图索引也非常灵活。检索通过使用多个子检索器并合并结果来工作。默认情况下,会使用关键词+同义词扩展以及向量检索(如果您的图已嵌入)来检索相关的三元组。
除了检索到的三元组外,您还可以选择包含源文本(对于在LlamaIndex之外创建的图谱不可用)。
更多详情请参阅属性图完整指南。