要在 Python 环境中设置 Haystack,首先安装软件包并验证依赖项。 Haystack 需要 Python 3.7+,可以通过 pip 安装,命令为 pip install farm-haystack
。对于特定的用例,例如使用数据库或机器学习模型,您可能需要额外的依赖项。例如,pip install "farm-haystack[all]"
安装所有可选依赖项,包括对 Elasticsearch、Hugging Face 模型和云服务的支持。如果您计划使用 Elasticsearch 作为文档存储,请确保它在本地运行(例如,通过 Docker 运行,命令为 docker run -d -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.9.0
),或者配置远程实例的连接详细信息。
接下来,配置您的文档存储和处理管道。Haystack 使用文档存储(例如 InMemoryDocumentStore
、ElasticsearchDocumentStore
或 PostgreSQLDocumentStore
)来管理数据。例如,初始化一个基于 Elasticsearch 的存储
from haystack.document_stores import ElasticsearchDocumentStore
document_store = ElasticsearchDocumentStore(host="localhost", index="my_docs")
要导入文件,请使用 FileTypeClassifier
、TextConverter
或 PDFConverter
将它们转换为 Haystack Document
对象。创建一个预处理管道来清理和分割文本
from haystack.nodes import PreProcessor
processor = PreProcessor(split_length=200, split_overlap=20)
docs = processor.process([Document(content="...")])
document_store.write_documents(docs)
最后,设置检索或问答管道。对于语义搜索,使用 Retriever
(例如,BM25Retriever
用于基于关键字的搜索,或 EmbeddingRetriever
与诸如 sentence-transformers/all-MiniLM-L6-v2
等模型一起使用)。添加一个 Reader
(例如 TransformersReader
)用于抽取式 QA
from haystack.pipelines import ExtractiveQAPipeline
from haystack.nodes import BM25Retriever, TransformersReader
retriever = BM25Retriever(document_store=document_store)
reader = TransformersReader(model_name_or_path="deepset/bert-base-cased-squad2")
pipeline = ExtractiveQAPipeline(retriever, reader)
results = pipeline.run(query="What is Haystack?", params={"Retriever": {"top_k": 3}, "Reader": {"top_k": 1}})
通过运行查询并验证输出来测试您的设置。为了可扩展性,考虑使用 Haystack 的 REST API 或云集成来进行分布式工作负载。