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

:::note[Sparse Embedding Support]

희소 임베딩 지원을 쓰려면 QdrantDocumentStoreuse_sparse_embeddings=True로 초기화해야 해요. 기본값은 False예요.

이 기능을 비활성화한 채 만든 Document Store나 컬렉션을 쓰려면 기존 데이터를 마이그레이션해야 해요. migrate_to_sparse_embeddings_support 유틸리티 함수를 이용하면 됩니다. :::

추가 자료 (Additional References)

🧑‍🍳 쿡북: Sparse Embedding Retrieval with Qdrant and FastEmbed

출처: 공식문서