For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 能显著降低延迟。

本指南涵盖 Haystack v2.x (haystack-ai 包)。v2 API 与 v1(farm-haystack)有很大不同。如果你已有现成的 v1 流水线,请参阅 迁移指南.

概览

属性
详情

许可证

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 流水线暴露为端点

需求

硬件要求

使用场景
GPU
显存
内存
磁盘
Clore.ai 价格

仅 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/小时

大型本地 LLM (70B,量化)

A100 80GB

80 GB

64 GB

150 GB

对于大多数 RAG 用例, RTX 3090 是最佳选择,价格为 $0.07–0.21/小时——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.8.1-devel-ubuntu22.04pytorch/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 订单设置中暴露端口;检查服务器开放的端口

调试命令

延伸阅读

最后更新于

这有帮助吗?