QdrantDocumentStore
QdrantDocumentStore
Haystack에서 Qdrant 벡터 데이터베이스를 문서 저장소로 쓰려면 QdrantDocumentStore를 이용해요.
Qdrant는 강력하고 고성능이며 대규모 확장이 가능한 벡터 데이터베이스예요. QdrantDocumentStore는 모든 Qdrant 인스턴스와 함께 쓸 수 있어요 — 인메모리, 로컬 영속(persisted), 호스팅, 공식 Qdrant Cloud 모두요.
설치 (Installation)
Qdrant Haystack 통합은 아래처럼 간단히 설치할 수 있어요.
pip install qdrant-haystack
초기화 (Initialization)
QdrantDocumentStore를 가장 빠르게 쓰는 방법은 인메모리 인스턴스를 만드는 거예요.
from haystack.dataclasses.document import Document
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
document_store = QdrantDocumentStore(
":memory:",
recreate_index=True,
return_embedding=True,
wait_result_from_api=True,
)
document_store.write_documents(
[
Document(content="This is first", embedding=[0.0] * 768),
Document(content="This is second", embedding=[0.1] * 768),
],
)
print(document_store.count_documents())
:::warning[Collections Created Outside Haystack]
QdrantDocumentStore 인스턴스를 만들면 Haystack이 컬렉션 생성을 처리해요. 일반적으로 Haystack을 거치지 않고 만든 Qdrant 컬렉션은 Haystack과 함께 쓸 수 없어요. 기존 컬렉션을 마이그레이션하려면 https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/qdrant/src/haystack_integrations/document_stores/qdrant/migrate_to_sparse.py 의 샘플 스크립트를 참고하세요.
:::
Qdrant Cloud에 직접 연결할 수도 있어요. Qdrant 대시보드에서 API 키와 클러스터 URL을 확보한 뒤 아래처럼 연결하면 돼요.
from haystack.dataclasses.document import Document
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
from haystack.utils import Secret
document_store = QdrantDocumentStore(
url="https://XXXXXXXXX.us-east4-0.gcp.cloud.qdrant.io:6333",
index="your_index_name",
embedding_dim=5, # based on the embedding model
recreate_index=True, # enable only to recreate the index and not connect to the existing one
api_key=Secret.from_token("YOUR_TOKEN"),
)
document_store.write_documents(
[
Document(content="This is first", embedding=[0.0] * 5),
Document(content="This is second", embedding=[0.1, 0.2, 0.3, 0.4, 0.5]),
],
)
print(document_store.count_documents())
:::tip[More information]
QdrantDocumentStore를 초기화하고 사용하는 더 다양한 방법은 통합 페이지에서 찾아볼 수 있어요. :::
지원하는 Retriever
QdrantEmbeddingRetriever: 밀집 임베딩(벡터)을 기준으로QdrantDocumentStore에서 문서를 가져와요.QdrantSparseEmbeddingRetriever: 희소 임베딩을 기준으로QdrantDocumentStore에서 문서를 가져와요.QdrantHybridRetriever: 밀집 임베딩과 희소 임베딩을 모두 기준으로QdrantDocumentStore에서 문서를 가져와요.
:::note[Sparse Embedding Support]
희소 임베딩 지원을 쓰려면 QdrantDocumentStore를 use_sparse_embeddings=True로 초기화해야 해요. 기본값은 False예요.
이 기능을 비활성화한 채 만든 Document Store나 컬렉션을 쓰려면 기존 데이터를 마이그레이션해야 해요. migrate_to_sparse_embeddings_support 유틸리티 함수를 이용하면 됩니다.
:::
추가 자료 (Additional References)
🧑🍳 쿡북: Sparse Embedding Retrieval with Qdrant and FastEmbed
출처: 공식문서