
Haystack 框架评测:deepset 的 RAG 之选
Haystack 的定位 deepset 出品的 Haystack 是一个 专注于 RAG(检索增强生成)的 NLP 框架。与 LangChain 的"万物皆链"不同,Haystack 的设计哲学是 Pipeline 即图——每个处理步骤是一个 Node,Node 之间通过类型化的连接器组装成 DAG(有向无环图)。 这种设计在 RAG 场景下优势明显:文档处理流水线天然是线性的(加载→切分→嵌入→存储→检索→生成),Haystack 的 Pipeline 模型与之完美契合。 架构核心 Pipeline:计算图 Haystack 2.x 的 Pipeline 是一个真正的计算图,支持分支、合并、循环: from haystack import Pipeline from haystack.components.embedders import SentenceTransformersTextEmbedder from haystack.components.retrievers import QdrantRetriever from haystack.components.generators import OpenAIGenerator from haystack.components.builders import PromptBuilder # 构建 RAG Pipeline pipe = Pipeline() # 添加组件 pipe.add_component("embedder", SentenceTransformersTextEmbedder(model="BAAI/bge-m3")) pipe.add_component("retriever", QdrantRetriever(document_store=doc_store)) pipe.add_component("prompt_builder", PromptBuilder(template=TEMPLATE)) pipe.add_component("generator", OpenAIGenerator(model="gpt-4o")) # 连接组件(类型安全) pipe.connect("embedder.embedding", "retriever.query_embedding") pipe.connect("retriever.documents", "prompt_builder.documents") pipe.connect("prompt_builder.prompt", "generator.prompt") Node 类型体系 Haystack 2.x 的组件按功能分类: 类别 典型组件 作用 Converters TextFileToDocument, HTMLToDocument, PyPDFToDocument 文件→Document Preprocessors DocumentCleaner, DocumentSplitter 清洗与切分 Embedders SentenceTransformersTextEmbedder, OpenAITextEmbedder 文本→向量 Retrievers QdrantRetriever, BM25Retriever, HybridRetriever 向量/关键词/混合检索 Generators OpenAIGenerator, HuggingFaceLocalGenerator LLM 生成 Joiners DocumentJoiner, BranchJoiner 合并多路检索结果 Routers ConditionalRouter, MetadataRouter 条件路由 组件的输入/输出契约 每个组件声明输入输出类型,Pipeline 在连接时做类型检查: ...



