要使用 LlamaIndex 索引数据,首先要准备数据,并使用该库的工具来构建数据结构,以便高效查询。首先,安装 LlamaIndex(通过 pip install llama-index
)并导入必要的模块,例如 SimpleDirectoryReader
来加载数据,以及 VectorStoreIndex
来创建索引。使用内置的读取器加载您的文档 - 文本文件、PDF 或来自 API/数据库的数据。例如,SimpleDirectoryReader("data")
读取 “data” 文件夹中的所有文件。数据被分成“节点”(带有元数据的文本块),您可以通过调整块大小或重叠来定制这些节点,以平衡上下文保留和处理效率。
接下来,通过将节点传递给存储系统来创建索引。最常见的方法是向量索引,它将文本转换为用于语义搜索的数值表示(嵌入)。使用 VectorStoreIndex(nodes)
来构建它。此步骤通常涉及嵌入模型(例如,OpenAI 的 text-embedding-ada-002
)和向量数据库,例如 FAISS 或 Pinecone。对于更简单的用例,列表索引 (ListIndex
) 存储原始文本以进行基于关键字的查找。您还可以组合索引类型 - 例如,使用向量索引进行语义查询,使用列表索引进行精确匹配 - 通过 ComposableGraph
进行混合搜索。
最后,自定义管道以满足您的需求。对于结构化数据,定义元数据(例如,日期或类别)并使用 MetadataExtractor
来增强节点。调整诸如块大小(例如,512 个 tokens)或嵌入维度之类的设置以优化性能。使用 index.storage_context.persist("storage")
保存和重新加载索引,以避免重新处理数据。对于高级工作流程,将 LlamaIndex 与 LangChain 之类的工具集成,或使用其 QueryEngine
来处理复杂查询。例如,索引研究论文存储库可能涉及提取节作为节点,添加作者之类的元数据,并为用户启用关键字和语义搜索。