DocumentationAPI Reference📓 Tutorials🧑‍🍳 Cookbook🤝 Integrations💜 Discord🎨 Studio
Documentation

QdrantDocumentStore

Use the Qdrant vector database with Haystack.

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

📘

Sparse Embedding Support

To use Sparse Embedding support, you need to initialize the QdrantDocumentStore with use_sparse_embeddings=True, which is False 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