索引存储#
索引存储包含轻量级的索引元数据(即在构建索引时创建的附加状态信息)。
更多详情请参阅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_name
和namespace
,否则它们默认为db_name="db_docstore"
和namespace="docstore"
。
请注意,使用 MongoIndexStore
时不需要调用 storage_context.persist()
(或 index_store.persist()
),因为数据默认会被持久化。
您可以通过使用现有的 db_name
和 collection_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"
。
您可以通过使用现有的 host
、port
和 namespace
重新初始化 RedisIndexStore
轻松重新连接到您的 Redis 客户端并重新加载索引。
可以在此处找到更完整的示例。