摄取管道(Ingestion Pipeline)
概念解释
摄取管道(IngestionPipeline)使用了一种称为“转换”(Transformations)的概念,这些转换应用于输入数据。这些转换应用于你的输入数据,结果节点要么返回,要么插入到向量数据库(如果提供了的话)。每个节点+转换组合都会被缓存,因此后续运行(如果缓存被持久化)使用相同的节点+转换组合时可以使用缓存结果,节省时间。
要查看摄取管道实际使用的交互式示例,请查看RAG CLI。
使用模式
最简单的用法
实例化一个摄取管道如下:
from llama_index.core import Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core.extractors import TitleExtractor
from llama_index.core.ingestion import IngestionPipeline, IngestionCache
# 创建带有转换的管道
pipeline = IngestionPipeline(
transformations=[
SentenceSplitter(chunk_size=25, chunk_overlap=0),
TitleExtractor(),
OpenAIEmbedding(),
]
)
# 运行管道
nodes = pipeline.run(documents=[Document.example()])
注意,在实际场景中,你会从 SimpleDirectoryReader
或其他来自 Llama Hub 的读取器获取文档。
连接到向量数据库
运行摄取管道时,你还可以选择自动将结果节点插入到远程向量存储中。
然后,你可以稍后从该向量存储构建索引。
from llama_index.core import Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core.extractors import TitleExtractor
from llama_index.core.ingestion import IngestionPipeline
from llama_index.vector_stores.qdrant import QdrantVectorStore
import qdrant_client
client = qdrant_client.QdrantClient(location=":memory:")
vector_store = QdrantVectorStore(client=client, collection_name="test_store"