Skip to content

索引存储#

索引存储包含轻量级的索引元数据(即在构建索引时创建的附加状态信息)。

更多详情请参阅API 参考

简单索引存储#

默认情况下,LlamaIndex 使用由内存键值存储支持的简单索引存储。可以通过调用 index_store.persist()(和 SimpleIndexStore.from_persist_path(...))将其持久化到磁盘(以及从磁盘加载)。

MongoDB 索引存储#

类似于文档存储,我们也可以使用 MongoDB 作为索引存储的存储后端。

from llama_index.storage.index_store.mongodb import MongoIndexStore
from llama_index.core import VectorStoreIndex

# 创建(或加载)索引存储
index_store = MongoIndexStore.from_uri(uri="<mongodb+srv://...>")

# 创建存储上下文
storage_context = StorageContext.from_defaults(index_store=index_store)

# 构建索引
index = VectorStoreIndex(nodes, storage_context=storage_context)

# 或者,从存储加载索引
from llama_index.core import load_index_from_storage

index = load_index_from_storage(storage_context)

在幕后,MongoIndexStore 连接到固定的 MongoDB 数据库,并为您的索引元数据初始化新的集合(或加载现有集合)。

注意:在实例化 MongoIndexStore 时,您可以配置 db_namenamespace,否则它们默认为 db_name="db_docstore"namespace="docstore"

请注意,使用 MongoIndexStore 时不需要调用 storage_context.persist()(或 index_store.persist()),因为数据默认会被持久化。

您可以通过使用现有的 db_namecollection_name 重新初始化 MongoIndexStore 轻松重新连接到您的 MongoDB 集合并重新加载索引。

可以在此处找到更完整的示例。

Redis 索引存储#

我们支持 Redis 作为替代文档存储后端,将数据作为 Node 对象摄入并持久化。

from llama_index.storage.index_store.redis import RedisIndexStore
from llama_index.core import VectorStoreIndex

# 创建(或加载)文档存储并添加节点
index_store = RedisIndexStore.from_host_and_port(
    host="127.0.0.1", port="6379", namespace="llama_index"
)

# 创建存储上下文
storage_context = StorageContext.from_defaults(index_store=index_store)

# 构建索引
index = VectorStoreIndex(nodes, storage_context=storage_context)

# 或者,从存储加载索引
from llama_index.core import load_index_from_storage

index = load_index_from_storage(storage_context)

在幕后,RedisIndexStore 连接到一个 Redis 数据库,并将您的节点添加到存储在 {namespace}/index 下的命名空间中。

注意:在实例化 RedisIndexStore 时,您可以配置 namespace,否则它默认为 namespace="index_store"

您可以通过使用现有的 hostportnamespace 重新初始化 RedisIndexStore 轻松重新连接到您的 Redis 客户端并重新加载索引。

可以在此处找到更完整的示例。