ElasticsearchDocumentStore

ElasticsearchDocumentStore

Haystack에서 Elasticsearch 데이터베이스를 문서 저장소로 쓰고 싶을 때 ElasticsearchDocumentStore를 이용해요.

이 저장소는 여러 검색 옵션(dense vs. sparse)의 성능을 비교 평가하고, PoC(개념 증명)에서 운영 환경으로 자연스럽게 넘어가려는 목표가 있을 때 특히 좋아요.

Elasticsearch가 제공하는 근사 최근접 이웃(ANN, Approximate Nearest Neighbours) 검색을 지원해요.

초기화 (Initialization)

먼저 Elasticsearch를 설치하고 시작해요. Haystack은 Elasticsearch 8을 지원해요.

Docker가 설정돼 있다면, Docker 이미지를 받아 실행하는 걸 권해요.

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

또는 Elasticsearch 통합 GitHub에서 제공하는 docker-compose.yml을 이용해 Elasticsearch를 띄운 Docker 컨테이너를 시작할 수도 있어요.

docker compose up

Elasticsearch 인스턴스가 실행되고 나면, elasticsearch-haystack 통합을 설치해요.

pip install elasticsearch-haystack

그리고 Elasticsearch 인스턴스에 연결된 ElasticsearchDocumentStore 객체를 초기화하고 문서를 써 넣어요.

from haystack_integrations.document_stores.elasticsearch import (
    ElasticsearchDocumentStore,
)
from haystack import Document

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

지원하는 Retriever

출처: 공식문서