LlamaIndex的IngestionPipeline添加本地存储(本地文档存储)
LlamaIndex的IngestionPipeline支持添加本地存储(本地文档存储),用于管理摄取的文档及其元数据,从而实现文档去重、更新和持久化等功能。
具体说明
- IngestionPipeline构造时可以传入
docstore
参数,指定文档存储组件,常见的本地文档存储是SimpleDocumentStore
。 SimpleDocumentStore
是基于本地文件系统的简单文档存储,支持将文档(Node)持久化到本地文件夹。- 通过集成本地文档存储,管道可以:
- 利用文档ID和内容哈希检测重复文档,避免重复处理。
- 支持文档更新和删除旧文档。
- 在管道运行时跳过已存在的文档,提高效率。
- 除了文档存储,IngestionPipeline还支持缓存(cache)机制,也可以持久化到本地。
- 通过调用
pipeline.persist(path)
和pipeline.load(path)
,可以将缓存和文档存储持久化到本地文件夹,方便断点续传和复用。
示例代码
from llama_index.core import Document
from llama_index.core.ingestion import IngestionPipeline
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.core.node_parser import SentenceSplitter
from llama_index.embeddings.openai import OpenAIEmbedding# 定义本地文档存储
docstore = SimpleDocumentStore()# 创建摄取管道,添加本地文档存储
pipeline = IngestionPipeline(transformations=[SentenceSplitter(chunk_size=25, chunk_overlap=0),OpenAIEmbedding(),],docstore=docstore,
)# 运行管道,传入文档列表
nodes = pipeline.run(documents=[Document.example()])# 持久化管道状态(缓存和文档存储)到本地文件夹
pipeline.persist('./pipeline_storage')# 之后可以通过load恢复
pipeline.load('./pipeline_storage')