Haystack 是什么?
Haystack 是一个功能强大的开源 Python 框架,由 deepset 开发,用于构建利用大型语言模型(LLM)的生产级应用程序。它擅长创建复杂的语义搜索、问答系统和检索增强生成(RAG)管道。通过专注于模块化和可组合的架构,Haystack 允许开发人员连接各种组件——如文档存储、检索器和生成器——来构建复杂的系统,这些系统可以对私有数据进行推理,并提供准确、具有上下文感知的答案。
主要特点
- 模块化管道: 通过组合各种节点来构建灵活的数据和查询管道,以执行复杂的任务,如索引、检索和答案生成。
- LLM 无关性: 与各种 LLM 无缝集成,包括来自 OpenAI、Cohere、Hugging Face 等的模型。
- 多功能文档存储: 连接到众多数据库以存储您的数据,从 Pinecone、Weaviate 和 Milvus 等矢量数据库到 Elasticsearch 和 OpenSearch 等传统搜索系统。
- 强大的节点: 利用一组丰富的预构建组件(节点)来检索文档、提取答案、生成文本和路由查询。
- 可扩展且生产就绪: 专为实际应用而设计,具有 REST API 用于服务模型和评估脚本以衡量性能等功能。
- 代理系统: 构建能够使用工具与数据交互、执行操作并做出决策以满足复杂用户请求的自主代理。
使用案例
- 高级问答: 创建能够从大量文档中为用户问题找到精确答案的系统。
- 语义文档搜索: 实现能够理解查询含义和上下文的搜索功能,而不仅仅是关键字。
- 检索增强生成(RAG): 构建聊天机器人和应用程序,使其响应基于您自己的数据,从而减少幻觉并提高准确性。
- 自动化 FAQ 系统: 开发能够根据您的知识库即时回答客户问题的智能机器人。
- 文档摘要: 生成长文档或文本集合的简洁摘要。
入门指南
这是一个简单的“Hello World”风格的示例,用于演示 Haystack 中的基本问答管道。
首先,安装 Haystack 及其核心依赖项: ```bash pip install farm-haystack[all]
接下来,使用以下 Python 脚本索引文档并提出问题: ```python from haystack.document_stores import InMemoryDocumentStore from haystack.nodes import BM25Retriever, FARMReader from haystack.pipelines import ExtractiveQAPipeline from haystack.utils import print_answers
1. 初始化一个 DocumentStore
document_store = InMemoryDocumentStore(use_bm25=True)
2. 向 DocumentStore 添加一些文档
docs = [ {“content”: “Haystack 是一个用于构建 LLM 应用的开源框架。”}, {“content”: “它由一家名为 deepset 的公司开发。”}, {“content”: “Haystack 允许您构建强大的问答系统。”} ] document_store.write_documents(docs)
3. 初始化一个 Retriever 和一个 Reader
retriever = BM25Retriever(document_store=document_store) reader = FARMReader(model_name_or_path=”deepset/roberta-base-squad2”, use_gpu=True)
4. 创建一个抽取式问答管道
pipe = ExtractiveQAPipeline(reader, retriever)
5. 提问!
prediction = pipe.run( query=”Haystack 是什么?”, params={“Retriever”: {“top_k”: 10}, “Reader”: {“top_k”: 5}} )
打印结果
print_answers(prediction, details=”minimum”)
定价
Haystack 是一个在 Apache 2.0 许可下分发的免费开源项目。对于企业需求,其创建者 deepset 提供了 deepset Cloud,这是一个商业平台,提供托管服务、企业级支持以及用于构建和部署大规模 Haystack 应用程序的高级功能。