核心功能
Haystack 由 deepset 开源,是构建生产级 LLM 应用的 Python 编排框架。它把检索、排序、提示构建、生成与工具调用拆成组件,用 Pipeline 显式连成有向图,支持分支、循环、异步与流式输出。Agent 组件带生命周期钩子和 token 用量统计,模型与向量库都可自由替换。
功能亮点
显式连线
add_component 加组件、connect 连输入输出,连线时就校验类型
管线可存取
Pipeline 可序列化为 YAML,便于保存分享与版本管理
跑法多样
同一条 Pipeline 既能同步 run,也能异步运行并流式输出
供应商中立
换 OpenAI、Anthropic 或本地模型都不必重写整套系统
自定义模型 / 模型接入
完全自定义
按厂商拆成独立Generator组件,覆盖OpenAI、Anthropic、Gemini等;改api_base_url指向兼容端点,本地跑Ollama。
接入方式
- 按厂商选组件,如OpenAIChatGenerator
- api_key默认从OPENAI_API_KEY环境变量读取
- 自建端点:OpenAIChatGenerator(api_base_url=...)
- 本地推理用OllamaChatGenerator等本地组件
- 多厂商统一走LiteLLMChatGenerator
支持模型
OpenAIAnthropicGoogle GeminiAmazon BedrockMistralCohereOllamavLLM
bash
接入OpenAI兼容端点(以DeepSeek为例)
pip install haystack-ai
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.utils import Secret
from haystack.dataclasses import ChatMessage
llm = OpenAIChatGenerator(
model="deepseek-chat",
api_base_url="https://api.deepseek.com/v1",
api_key=Secret.from_env_var("OPENAI_API_KEY"),
)
response = llm.run([ChatMessage.from_user("你好")])
在Pipeline中挂载该组件
pipe.add_component("llm", llm)适用场景
• 生产级 RAG 检索问答系统
• 需要分支与循环的复杂流程
• 语义搜索与文档问答服务
• 带工具调用的自治 Agent
安装配置
bash
# 要求 Python >= 3.10,直接从 PyPI 安装 pip install haystack-ai # 想试最新特性可装每日预发布版 pip install --pre haystack-ai # 官方示例里的 Sentence Transformers 组件需单独安装 pip install sentence-transformers-haystack
使用方法
python
from haystack import Pipeline, Document
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.retrievers import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.builders import ChatPromptBuilder
from haystack.dataclasses import ChatMessage
document_store = InMemoryDocumentStore()
document_store.write_documents([
Document(content="My name is Jean and I live in Paris."),
Document(content="My name is Mark and I live in Berlin."),
])
prompt_template = [
ChatMessage.from_system("Given these documents, answer the question. Documents: {% for doc in documents %}{{ doc.content }}{% endfor %}"),
ChatMessage.from_user("{{question}}"),
]
rag_pipeline = Pipeline()
rag_pipeline.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
rag_pipeline.add_component("prompt_builder", ChatPromptBuilder(template=prompt_template, required_variables="*"))
rag_pipeline.add_component("llm", OpenAIChatGenerator(model="gpt-4o-mini"))
rag_pipeline.connect("retriever", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder", "llm")
question = "Who lives in Paris?"
results = rag_pipeline.run({"retriever": {"query": question}, "prompt_builder": {"question": question}})
print(results["llm"]["replies"])关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Haystack
价格免费
开源是
上手难度进阶
Token 消耗中
相关工具
同类工具
优点
- connect 时即校验组件输入输出类型,接错线当场报错而非运行到一半才炸
- 同一条 Pipeline 支持同步 run、异步 run_async 与 stream 流式三种跑法
- Pipeline 能序列化成 YAML,方便保存、分享和在 Python 之外修改
- 配合官方 Hayhooks 可把 Pipeline 直接暴露为 REST API 或 MCP 服务
- PyPI 标注 Apache-2.0 许可,模型与向量库均可自由替换
缺点
- 官方已发布 Haystack 3.0,网上大量 1.x/2.x 教程与文章的 API 已经对不上
- 只提供框架,没有管理界面、权限体系与数据标注,产品化要自己补齐
- 默认开启匿名遥测(上报组件初始化事件),需按文档手动关闭
- 官方 quick start 示例依赖 SerperDev 等外部 API Key 才能完整跑通
- 企业级模板、部署指南与托管平台属于 Haystack Enterprise 付费产品