Haystack AI 框架
在 Clore.ai 部署 deepset 的 Haystack —— 在经济型 GPU 基础设施上构建生产级 RAG 管道、语义搜索和 LLM 代理工作流。
Haystack 是 deepset 的开源 AI 编排框架,用于构建生产级别的 LLM 应用。凭借 18K+ 的 GitHub 星标,它提供了一个灵活的 基于管道的架构 将文档存储、检索器、阅读器、生成器和智能体连接在一起——全部使用简洁、可组合的 Python。无论你需要对私有文档的 RAG、语义搜索,还是多步智能体工作流,Haystack 都会处理底层 plumbing,让你可以专注于应用逻辑。
在 Clore.ai 上,当你需要通过 Hugging Face Transformers 或 sentence-transformers 在本地进行模型推理时,Haystack 的优势尤为明显。如果你完全依赖外部 API(OpenAI、Anthropic),可以在仅 CPU 的实例上运行——但对于嵌入生成和本地 LLM,GPU 会显著降低延迟。
所有示例均在通过以下方式租用的 GPU 服务器上运行: CLORE.AI 市场.
本指南涵盖 Haystack v2.x (haystack-ai 软件包)。v2 的 API 与 v1(有很大差异farm-haystack)。如果你有现有的 v1 管道,请参阅 迁移指南.
概览
许可
Apache 2.0
GitHub 星标
18K+
版本
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)
按小时费率
8 GB
16 GB
30 GB
≈ $0.10–0.15/小时
本地嵌入 + 小型 LLM (7B)
速度
24 GB
16 GB
50 GB
≈ $0.20–0.25/小时
本地 LLM (13B–34B)
512x512
24 GB
32 GB
80 GB
≈ $0.35–0.50/小时
大型本地 LLM (70B,量化)
4 小时会话
80 GB
64 GB
150 GB
≈ $1.10–1.50/小时
对于大多数 RAG 用例, 速度 在约 $0.20/小时 的配置是最合适的 —— 24 GB VRAM 可同时处理 sentence-transformer 嵌入和 7B–13B 的本地 LLM。
软件要求
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.1-devel-ubuntu22.04或pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime
从中注意服务器的公网 IP 和 SSH 端口 我的订单.
2. 连接并验证 GPU
3. 构建 Haystack Docker 镜像
Haystack v2 推荐通过 pip 安装。创建自定义 Dockerfile:
4. 使用 Hayhooks 运行 Haystack
Hayhooks 会将任何 Haystack 管道自动转换为 REST API:
预期响应:
5. 创建你的第一个 RAG 管道
编写一个 Hayhooks 将作为端点提供的管道 YAML:
Hayhooks 会自动发现并提供此管道。测试它:
配置
使用环境变量进行 SSH 和 Jupyter 访问:
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)
用于在 Haystack 中直接运行 LLM(不使用 Ollama):
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
快速
优秀
长文档
管道设计建议
明智地拆分文档 — 对于大多数 RAG 用例,200–400 字的块且有 10–15% 的重叠效果良好
缓存嵌入 — 将文档存储持久化到磁盘;重新生成嵌入成本很高
使用
warm_up()— 在生产使用前调用component.warm_up()将模型加载到 GPU 内存中批量索引 — 以 32–64 的批次处理文档以获得最佳 GPU 利用率
使用元数据过滤 — 使用 Haystack 的元数据过滤来限定检索范围(例如按日期、来源、类别)
成本优化
为外部访问保护 Hayhooks
# 使用固定种子以获得一致结果
ModuleNotFoundError: haystack
未安装该包
重建 Docker 镜像;检查 pip install haystack-ai 是否成功
CUDA 内存不足(out of memory)
嵌入模型过大
使用 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 Cookbook — 端到端教程(RAG、智能体、搜索)
deepset-ai/haystack 在 GitHub 上 — 源代码、问题、发布记录
Haystack 集成 — 支持的向量存储、LLM 和工具的完整列表
Clore.ai 上的 Ollama — 将 Haystack 与 Ollama 配对以进行本地 LLM 推理
Clore.ai 上的 vLLM — 为 Haystack 提供的高吞吐量 LLM 提供后端
GPU 比较指南 — 为你的工作负载选择合适的 Clore.ai GPU
CLORE.AI 市场 — 租用 GPU 服务器
最后更新于
这有帮助吗?