Haystack:LLM应用编排框架安装与使用指南
官方信息
| 项目名称 | Haystack |
| 仓库地址 | https://github.com/deepset-ai/haystack |
| 官方网站 | https://haystack.deepset.ai |
| 最新更新时间 | 2026-10-20 |
| Star 数 | 15k+ |
| 项目定位 | 由 deepset 开源的 LLM 应用编排框架,专注生产级搜索和 RAG |
项目背景
Haystack 是由德国公司 deepset 开发的开源 LLM 应用框架。它比 LlamaIndex 和 LangChain 都更早出现——最早是作为"神经搜索"工具诞生的,后来随着大模型时代演进为全功能的 LLM 编排框架。它的设计哲学是:面向生产环境、模块化、可测试、可监控。
在 RAG 领域,Haystack 有几个独特优势:一是 Pipeline 概念非常成熟,把检索、重排、生成、转写等步骤编排成有向无环图,支持分支、并行、条件跳转;二是对 Elasticsearch/OpenSearch 集成极深,毕竟 deepset 就是做企业搜索起家的;三是有配套的商用产品 deepset Cloud,开源版和云版 API 完全一致,方便从原型过渡到生产。
和 LlamaIndex 相比,Haystack 更偏向工程化和生产部署;和 LangChain 相比,它更简洁、更稳定、没有那么多花哨抽象。很多企业级搜索、客服问答、法律文书分析场景都用 Haystack 构建。
核心特性
- Pipeline 编排:把组件串联成 DAG,支持分支、并行、条件路由,YAML 即可定义整个管线。
- 全套 RAG 组件:文档加载、切分、Embedding、BM25 检索、向量检索、Rerank、Prompt 模板、生成器。
- 多向量库支持:Elasticsearch、OpenSearch、Pinecone、Weaviate、Qdrant、Chroma、pgvector。
- 多 LLM 接入:OpenAI、Anthropic、Cohere、HuggingFace、Ollama、vLLM 等。
- 生产级特性:缓存、流式输出、日志追踪、评测集成、序列化 Pipeline。
- 可观测:内置与 Langfuse、OpenTelemetry 集成,追踪每一步耗时和 token 消耗。
- REST API 自动生成:Pipeline 一行命令变成 FastAPI 服务。
环境要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Linux/macOS/Windows | Ubuntu 22.04 |
| Python | 3.8 | 3.10 / 3.11 |
| 内存 | 4 GB | 8 GB+ |
| 磁盘 | 5 GB | 20 GB+ |
详细部署步骤
第一步:环境准备
conda create -n haystack python=3.10 -y
conda activate haystack
第二步:安装 Haystack
方式一:pip 安装核心包
pip install haystack-ai
# 验证
python -c "import haystack; print(haystack.__version__)"
方式二:安装常用集成
pip install haystack-ai \
farm-haystack \
haystack-integrations
方式三:源码安装
git clone https://github.com/deepset-ai/haystack.git
cd haystack
pip install -e ".[dev]"
第三步:设置 API Key
export OPENAI_API_KEY=sk-xxxxxxxx
# 或 DeepSeek
export OPENAI_API_KEY=sk-xxxxxxxx
第四步:构建第一个 RAG Pipeline
from haystack import Pipeline
from haystack.components.generators import OpenAIGenerator
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.embedders import SentenceTransformersDocumentEmbedder, SentenceTransformersTextEmbedder
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.writers import DocumentWriter
from haystack import Document
# 1. 准备文档
documents = [
Document(content="Haystack 是一个 LLM 编排框架"),
Document(content="RAG 是检索增强生成的缩写"),
Document(content="Python 是一门流行的编程语言"),
]
# 2. 建立索引 Pipeline
indexing = Pipeline()
indexing.add_component("embedder", SentenceTransformersDocumentEmbedder())
indexing.add_component("writer", DocumentWriter(document_store=InMemoryDocumentStore()))
indexing.connect("embedder.documents", "writer.documents")
indexing.run({"embedder": {"documents": documents}})
# 3. 查询 Pipeline
query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", SentenceTransformersTextEmbedder())
query_pipeline.add_component("retriever", InMemoryEmbeddingRetriever(document_store=doc_store))
query_pipeline.add_component("llm", OpenAIGenerator(model="gpt-4o-mini"))
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
query_pipeline.connect("retriever", "llm.prompt")
# 4. 运行
result = query_pipeline.run({
"text_embedder": {"text": "什么是 RAG?"},
"llm": {"prompt": "根据以下资料回答问题:{documents}\n问题:{query}"}
})
print(result)
第五步:用 YAML 定义 Pipeline(推荐)
# rag_pipeline.yaml
components:
- name: retriever
type: haystack.components.retrievers.in_memory.InMemoryEmbeddingRetriever
init_parameters:
document_store: InMemoryDocumentStore()
- name: llm
type: haystack.components.generators.OpenAIGenerator
init_parameters:
model: gpt-4o-mini
connections:
- retriever.documents: llm.prompt
from haystack import Pipeline
pipeline = Pipeline.load("rag_pipeline.yaml")
第六步:部署为 REST API
pip install "haystack-ai[deploy]"
# 一行启动服务
haystack deploy rag_pipeline.yaml
# 默认监听 http://localhost:8000
常见坑与解决
- v1 和 v2 API 不兼容:Haystack 2.0 是重写版,网上很多老教程是 v1 的,注意区分。
- 组件导入路径:v2 后组件都在
haystack.components.xxx下,找不到就查文档。 - 中文 Embedding:用
BAAI/bge-small-zh-v1.5,不要用默认的 all-MiniLM。
使用方法示例
启动 API 后调用:
curl -X POST http://localhost:8000/run \
-H "Content-Type: application/json" \
-d '{"query": "什么是 Haystack?"}'
常见问题 FAQ
Q1:Haystack 和 LlamaIndex 选哪个?
A:追求工程化、生产部署、Elasticsearch 深度集成选 Haystack;追求快速原型、丰富 Loader 选 LlamaIndex。
Q2:支持中文吗?
A:支持,替换为中文 Embedding 模型和中文 LLM 即可。
Q3:和 LangChain 比怎么样?
A:Haystack 更轻量、更稳定、抽象更少;LangChain 功能更多但有时过于复杂。生产环境 Haystack 口碑更好。
Q4:开源协议?
A:Apache 2.0,可商用。
Q5:有配套 UI 吗?
A:有 deepset Studio(云服务),开源版主要是代码/Pipeline 方式。
跳转链接
- GitHub 仓库:https://github.com/deepset-ai/haystack
- 官方文档:https://docs.haystack.deepset.ai
- Haystack 示例:haystack-cookbook