文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

ElasticsearchDocumentStore

在 Haystack 中使用 Elasticsearch 数据库。

如果您想评估不同检索选项(密集 vs. 稀疏)的性能,并希望从概念验证 (PoC) 平稳过渡到生产环境,那么 ElasticsearchDocumentStore 是一个极佳的选择。

它具有近似最近邻 (ANN) 搜索功能。

初始化

安装 Elasticsearch,然后启动一个实例。Haystack 支持 Elasticsearch 8。

如果您已设置 Docker,我们建议拉取 Docker 镜像并运行它。

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.1
docker run -p 9200:9200 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" -e "xpack.security.enabled=false" elasticsearch:8.11.1

作为替代方案,您可以前往 Elasticsearch 集成 GitHub,并使用提供的文件启动一个运行 Elasticsearch 的 Docker 容器。docker-compose.yml:

docker compose up

启动 Elasticsearch 实例后,安装elasticsearch-haystack 集成。

pip install elasticsearch-haystack

然后,初始化一个ElasticsearchDocumentStore 对象,该对象连接到 Elasticsearch 实例并向其写入文档。

from haystack_integrations.document_stores.elasticsearch import ElasticsearchDocumentStore
from haystack import Document

document_store = ElasticsearchDocumentStore(hosts = "https://:9200")
document_store.write_documents([
    Document(content="This is first"),
    Document(content="This is second")
    ])
print(document_store.count_documents())

支持的 Retrievers

ElasticsearchBM25Retriever:一个基于关键词的 Retriever,用于从 Document Store 中获取与查询匹配的文档。

ElasticsearchEmbeddingRetriever:比较查询和文档的嵌入,并获取与查询最相关的文档。