Skip to content

文档存储#

文档存储包含被摄取的文档块,我们称之为 Node 对象。

更多细节请参阅API 参考

简单文档存储#

默认情况下,SimpleDocumentStoreNode 对象存储在内存中。 可以通过调用 docstore.persist()(以及分别调用 SimpleDocumentStore.from_persist_path(...))将其持久化到磁盘(以及从磁盘加载)。

更完整的示例可以在这里找到。

MongoDB 文档存储#

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

from llama_index.storage.docstore.mongodb import MongoDocumentStore
from llama_index.core.node_parser import SentenceSplitter

# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
nodes = parser.get_nodes_from_documents(documents)

# 创建(或加载)文档存储并添加节点
docstore = MongoDocumentStore.from_uri(uri="<mongodb+srv://...>")
docstore.add_documents(nodes)

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

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

在幕后,MongoDocumentStore 连接到一个固定的 MongoDB 数据库,并初始化新的集合(或加载现有的集合)以存储您的节点。

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

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

更完整的示例可以在这里找到。

Redis 文档存储#

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

from llama_index.storage.docstore.redis import RedisDocumentStore
from llama_index.core.node_parser import SentenceSplitter

# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
nodes = parser.get_nodes_from_documents(documents)

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

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

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

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

注意:在实例化 RedisDocumentStore 时,可以配置 namespace,否则默认为 namespace="docstore"

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

更完整的示例可以在这里找到。

Firestore 文档存储#

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

from llama_index.storage.docstore.firestore import FirestoreDocumentStore
from llama_index.core.node_parser import SentenceSplitter

# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
nodes = parser.get_nodes_from_documents(documents)

# 创建(或加载)文档存储并添加节点
docstore = FirestoreDocumentStore.from_database(
    project="project-id",
    database="(default)",
)
docstore.add_documents(nodes)

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

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

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

注意:在实例化 FirestoreDocumentStore 时,可以配置 namespace,否则默认为 namespace="docstore"

您可以通过重新初始化具有现有 projectdatabasenamespaceFirestoreDocumentStore 轻松重新连接到您的 Firestore 数据库并重新加载索引。

更完整的示例可以在这里找到。