LlamaIndex中的索引:数据检索的魔法
在LlamaIndex的世界里,索引(Index)就像是一位魔法师,能够让我们快速地从海量数据中检索出与用户查询相关的上下文。对于LlamaIndex来说,索引是实现检索增强生成(RAG)用例的核心基础。
概念
从高层次来看,索引是从文档构建的。它们用于构建查询引擎和聊天引擎,从而实现对数据的问答和聊天。在底层,索引将数据存储在节点对象中(这些节点代表原始文档的块),并公开一个支持额外配置和自动化的检索器接口。
最常见的索引类型是VectorStoreIndex;最好的起点是VectorStoreIndex使用指南。对于其他索引,请查看我们的指南,了解每个索引的工作原理,以帮助你决定哪个索引最适合你的用例。
使用VectorStoreIndex
向量存储是检索增强生成(RAG)的关键组件,因此你几乎会在使用LlamaIndex制作的每个应用程序中直接或间接地使用它们。
向量存储接受节点对象列表,并从中构建索引。
将数据加载到索引中
基本用法
使用向量存储的最简单方法是加载一组文档,并使用from_documents构建索引:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档并构建索引
documents = SimpleDirectoryReader(
"../../examples/data/paul_graham"
).load_data()
index = VectorStoreIndex.from_documents(documents)
提示:
如果你在命令行使用from_documents,可以方便地传递show_progress=True,以在索引构建过程中显示进度条。
当你使用from_documents时,你的文档会被分割成块并解析成节点对象,这些是文本字符串的轻量级抽象,跟踪元数据和关系。
有关如何加载文档的更多信息,请参阅理解加载。
默认情况下,VectorStoreIndex将所有内容存储在内存中。有关如何使用持久向量存储的更多信息,请参阅下面的使用向量存储。
提示:
默认情况下,VectorStoreIndex将以2048个节点的批次生成和插入向量。如果你内存受限(或有充足的内存),可以通过传递insert_batch_size=2048来修改此设置,并指定所需的批次大小。
这在插入到远程托管的向量数据库时特别有用。
使用摄取管道创建节点
如果你想要更多控制文档的索引方式,我们推荐使用摄取管道。这允许你自定义块的分割、元数据和节点的嵌入。
from llama_index.core import D