Haystack AI 框架
在 Clore.ai 上部署 deepset 的 Haystack——在经济实惠的 GPU 基础设施上构建生产级 RAG 流水线、语义搜索和 LLM 智能体工作流。
Haystack 是 deepset 的开源 AI 编排框架,用于构建生产级 LLM 应用。凭借 1.8 万以上的 GitHub 星标,它提供了一个灵活的 基于流水线的架构 它将文档存储、检索器、阅读器、生成器和代理连接在一起——全部使用简洁、可组合的 Python。无论你需要针对私有文档的 RAG、语义搜索,还是多步骤代理工作流,Haystack 都会处理底层基础设施,让你专注于应用逻辑。
在 Clore.ai 上,当你需要通过 Hugging Face Transformers 或 sentence-transformers 进行本地模型推理时,Haystack 尤其出色。如果你完全依赖外部 API(OpenAI、Anthropic),它可以在仅 CPU 的实例上运行——但对于嵌入生成和本地 LLM,GPU 能显著降低延迟。
所有示例都运行在通过以下方式租用的 GPU 服务器上: CLORE.AI 市场.
概览
许可证
Apache 2.0
GitHub Stars
1.8 万以上
版本
v2.x(haystack-ai)
主要用途
RAG、语义搜索、文档问答、代理工作流
GPU 支持
可选——本地嵌入 / 本地 LLM 需要
难度
中等
API 服务
Hayhooks(基于 FastAPI,REST)
关键集成
Ollama、OpenAI、Anthropic、HuggingFace、Elasticsearch、Pinecone、Weaviate、Qdrant
你可以构建什么
RAG 流水线 ——摄取文档、生成嵌入、检索上下文、回答问题
语义搜索 ——按语义而不是关键词查询文档
文档处理 ——解析 PDF、HTML、Word 文档;拆分、清洗并索引内容
代理工作流 ——结合工具使用的多步骤推理(网页搜索、计算器、API)
REST API 服务 ——通过 Hayhooks 将任意 Haystack 流水线暴露为端点
需求
硬件要求
仅 API 模式 (OpenAI/Anthropic)
无 / CPU
—
4 GB
20 GB
约 $0.01–0.05/小时
本地嵌入 (sentence-transformers)
RTX 3060
8 GB
16 GB
30 GB
$0.03–0.07/小时
本地嵌入 + 小型 LLM (7B)
RTX 3090
24 GB
16 GB
50 GB
$0.07–0.21/小时
本地 LLM (13B–34B)
RTX 4090
24 GB
32 GB
80 GB
$0.14–0.42/小时
软件要求
Docker(Clore.ai 服务器上已预装)
NVIDIA 驱动 + CUDA(Clore.ai GPU 服务器上已预装)
Python 3.10+(在容器内)
CUDA 11.8 或 12.x
快速开始
1. 租用一台 Clore.ai 服务器
在 Clore.ai 市场中,筛选:
显存:嵌入任务至少 8 GB,本地 LLM 至少 24 GB
Docker:已启用(大多数列表中默认开启)
镜像:
nvidia/cuda:12.8.1-devel-ubuntu22.04或pytorch/pytorch:2.11.0-cuda12.8-cudnn9-runtime
记下服务器的公网 IP 和 SSH 端口,来自 我的订单.
2. 连接并验证 GPU
3. 构建 Haystack Docker 镜像
Haystack v2 推荐使用 pip 安装。创建一个自定义 Dockerfile:
4. 使用 Hayhooks 运行 Haystack
Hayhooks 会自动将任何 Haystack 流水线转换为 REST API:
预期响应:
5. 创建你的第一个 RAG 流水线
编写一个流水线 YAML,Hayhooks 会将其作为端点提供:
Hayhooks 会自动发现并提供这个流水线。测试一下:
配置
环境变量
OPENAI_API_KEY
用于 GPT 模型的 OpenAI API 密钥
sk-...
ANTHROPIC_API_KEY
用于 Claude 的 Anthropic API 密钥
sk-ant-...
HF_TOKEN
用于受限模型的 Hugging Face 令牌
hf_...
HAYSTACK_TELEMETRY_ENABLED
禁用使用情况遥测
false
CUDA_VISIBLE_DEVICES
选择特定 GPU
0
TRANSFORMERS_CACHE
HF 模型缓存路径
/workspace/hf-cache
使用完整配置运行
文档摄取流水线
构建一个单独的索引流水线来摄取文档:
使用向量数据库(生产环境)
对于生产工作负载,请用持久化向量数据库替换内存存储:
GPU 加速
Haystack 主要在两种场景下使用 GPU 加速:
1. 嵌入生成(Sentence Transformers)
GPU 对于为大型文档集合生成嵌入非常有帮助:
2. 本地 LLM 推理(Hugging Face Transformers)
对于无需 Ollama、直接在 Haystack 中运行 LLM:
3. 与 Ollama 搭配(推荐方案)
为了兼顾易用性和性能,建议使用 Ollama 进行 LLM 推理,使用 Haystack 进行编排:
监控两个容器的 GPU 使用情况:
提示与最佳实践
选择合适的嵌入模型
BAAI/bge-small-en-v1.5
约 0.5 GB
最快
好
高吞吐量索引
BAAI/bge-base-en-v1.5
约 1 GB
快
更好
通用 RAG
BAAI/bge-large-en-v1.5
约 2 GB
中等
最佳
最高准确率
nomic-ai/nomic-embed-text-v1
约 1.5 GB
快
优秀
长文档
流水线设计技巧
明智地拆分文档 ——200–400 词的块,重叠 10–15%,适用于大多数 RAG 用例
缓存嵌入 ——将文档存储持久化到磁盘;重新嵌入的成本很高
使用
warm_up()——调用component.warm_up()在生产使用前,以便将模型加载到 GPU 内存中批量索引 ——以 32–64 的批次处理文档,以获得最佳 GPU 利用率
使用元数据过滤 ——使用 Haystack 的元数据过滤来限定检索范围(例如按日期、来源、类别)
成本优化
为外部访问保护 Hayhooks
故障排查
ModuleNotFoundError: haystack
未安装包
重建 Docker 镜像;检查 pip install haystack-ai 成功
CUDA 内存不足
嵌入模型过大
使用 bge-small-en-v1.5 或减小批量大小
Hayhooks 在管道上返回 404
未找到 YAML 文件
检查卷挂载;管道文件必须位于 /app/pipelines/
CPU 上嵌入速度慢
未检测到 GPU
验证 --gpus all 标志;检查 torch.cuda.is_available()
Ollama 拒绝连接
主机名错误
使用 --add-host=host.docker.internal:host-gateway;将 URL 设置为 http://host.docker.internal:11434
HuggingFace 下载失败
缺少令牌或达到速率限制
设置 HF_TOKEN 环境变量;确保模型未受门控
管道 YAML 解析错误
无效语法
验证 YAML;使用 python3 -c "import yaml; yaml.safe_load(open('pipeline.yml'))"
容器立即退出
启动错误
查看 docker logs haystack;确保 Dockerfile 的 CMD 正确
端口 1416 无法从外部访问
防火墙 / 端口转发
在 Clore.ai 订单设置中暴露端口;检查服务器开放的端口
调试命令
延伸阅读
Haystack 文档 — 官方 v2 文档
Hayhooks GitHub — 面向管道的 REST API 服务
Haystack 食谱 — 端到端教程(RAG、代理、搜索)
GitHub 上的 deepset-ai/haystack — 源码、问题、发布版本
Haystack 集成 — 支持的向量存储、LLM 和工具完整列表
Clore.ai 上的 Ollama — 将 Haystack 与 Ollama 配合用于本地 LLM 推理
Clore.ai 上的 vLLM — 面向 Haystack 的高吞吐量 LLM 服务后端
GPU 比较指南 — 为你的工作负载选择合适的 Clore.ai GPU
CLORE.AI 市场 — 租用 GPU 服务器
最后更新于
这有帮助吗?