OpenSearchDocumentStore
OpenSearchDocumentStore
OpenSearch에서 문서를 저장하고 검색하고 싶을 때 쓰는 OpenSearchDocumentStore를 소개할게요.
OpenSearch는 로그 분석, 실시간 애플리케이션 모니터링, 클릭스트림 분석 같은 사용 사례를 위한 완전 오픈소스 검색·분석 엔진이에요. 자세한 내용은 OpenSearch 문서를 참고하세요.
이 Document Store는 서로 다른 검색 옵션(dense vs. sparse)의 성능을 평가하고 싶을 때 특히 좋아요. Amazon OpenSearch Service와도 호환돼요.
OpenSearch는 벡터 유사도 비교와 근사 최근접 이웃 알고리즘을 지원해요.
초기화 (Initialization)
OpenSearch 인스턴스를 설치하고 실행해요.
Docker가 설정돼 있다면, Docker 이미지를 받아 실행하는 걸 권해요.
docker pull opensearchproject/opensearch:3.5.0
docker run \
-p 9200:9200 \
-p 9600:9600 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
-e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=SecureHaystack*2026" \
opensearchproject/opensearch:3.5.0
또는 OpenSearch 통합 GitHub에서 제공하는 docker-compose.yml을 이용해 OpenSearch를 띄운 Docker 컨테이너를 시작할 수도 있어요.
docker compose up
OpenSearch 인스턴스가 실행되고 나면, opensearch-haystack 통합을 설치해요.
pip install opensearch-haystack
그리고 OpenSearch 인스턴스에 연결된 OpenSearchDocumentStore 객체를 초기화하고 문서를 써 넣어요.
from haystack_integrations.document_stores.opensearch import OpenSearchDocumentStore
from haystack import Document
document_store = OpenSearchDocumentStore(
hosts="http://localhost:9200",
use_ssl=True,
verify_certs=False,
http_auth=("admin", "SecureHaystack*2026"),
)
document_store.write_documents(
[Document(content="This is first"), Document(content="This is second")],
)
print(document_store.count_documents())
지원하는 Retriever
OpenSearchBM25Retriever: 키워드 기반 Retriever로, Document Store에서 쿼리와 매칭되는 문서를 가져와요.OpenSearchEmbeddingRetriever: 쿼리와 문서 임베딩을 비교해 쿼리와 가장 관련 있는 문서를 가져와요.
추가 자료 (Additional References)
🧑🍳 쿡북: PDF-Based Question Answering with Amazon Bedrock and Haystack
출처: 공식문서