Skip to content

存储#

概念#

LlamaIndex 提供了一个高级接口,用于摄取、索引和查询您的外部数据。

在幕后,LlamaIndex 还支持可互换的存储组件,允许您定制:

  • 文档存储:存储摄取的文档(即 Node 对象)的位置,
  • 索引存储:存储索引元数据的位置,
  • 向量存储:存储嵌入向量的位置。
  • 图存储:存储知识图的位置(例如用于 KnowledgeGraphIndex)。
  • 聊天存储:存储和组织聊天消息的位置。

文档/索引存储依赖于一个通用的键-值存储抽象,下文也有详细介绍。

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
)


## 重新加载现有索引
index = VectorStoreIndex.from_vector_store(vector_store=vector_store)

查看下文的向量存储模块指南以获取更多详细信息。

一般情况下,要使用存储抽象,您需要定义一个 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(),
)

有关定制/持久化的更多详细信息,请参阅下文的指南。

模块#

我们提供了关于不同存储组件的深入指南。