QdrantDocumentStore
Use the Qdrant vector database with Haystack.
API reference | Qdrant |
GitHub link | https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/qdrant |
Qdrant is a powerful high-performance, massive-scale vector database. The QdrantDocumentStore
can be used with any Qdrant instance, in-memory, locally persisted, hosted, and the official Qdrant Cloud.
Installation
You can simply install the Qdrant Haystack integration with:
pip install qdrant-haystack
Initialization
The quickest way to use QdrantDocumentStore
is to create an in-memory instance of it:
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]*5),
Document(content="This is second", embedding=[0.1, 0.2, 0.3, 0.4, 0.5])
])
print(document_store.count_documents())
You can also connect directly to Qdrant Cloud directly. Once you have your API key and your cluster URL from the Qdrant dashboard, you can connect like this:
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=1024, # 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())
More information
You can find more ways to initialize and use QdrantDocumentStore on our integration page.
Supported Retrievers
QdrantEmbeddingRetriever
: Retrieves documents from theQdrantDocumentStore
based on their dense embeddings (vectors).QdrantSparseEmbeddingRetriever
: Retrieves documents from theQdrantDocumentStore
based on their sparse embeddings.QdrantHybridRetriever
: Retrieves documents from theQdrantDocumentStore
based on both dense and sparse embeddings.
Sparse Embedding Support
To use Sparse Embedding support, you need to initialize the
QdrantDocumentStore
withuse_sparse_embeddings=True
, which isFalse
by default.If you want to use Document Store or collection previously created with this feature disabled, you must migrate the existing data. You can do this by taking advantage of the
migrate_to_sparse_embeddings_support
utility function.
Additional References
🧑🍳 Cookbook: Sparse Embedding Retrieval with Qdrant and FastEmbed
Updated 23 days ago