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:比较查询和文档的嵌入,并获取与查询最相关的文档。
更新于 大约 1 年前
