Qdrant 5 min read

Qdrant Not Working? Fix Common Errors

Troubleshoot Qdrant vector database — connection refused, vector dimension mismatch, 401 auth on Qdrant Cloud, gRPC unavailable, and empty search results.

Qdrant live status

Qdrant — live status

Updated every 5 minutes · Full incident history →

Full status →

Common errors and fixes

Connection refused / Cannot connect to Qdrant

Qdrant exposes two ports: 6333 (REST/HTTP) and 6334 (gRPC). Both must be exposed in Docker:

docker run -p 6333:6333 -p 6334:6334 \
  -v $(pwd)/qdrant_storage:/qdrant/storage \
  qdrant/qdrant

Verify Qdrant is responding:

curl http://localhost:6333/healthz
# Expected: "healthz check passed"

Wrong input: Vector dimension error

Error: Wrong input: Vector dimension error: expected dim: 768, got 1536

The vector you're trying to upsert has a different dimension than the collection was created with. You cannot resize an existing collection — delete and recreate it:

from qdrant_client import QdrantClient
from qdrant_client.models import VectorParams, Distance

client = QdrantClient("localhost", port=6333)

# Delete the existing collection
client.delete_collection("my_collection")

# Recreate with the correct dimension
# OpenAI text-embedding-3-small → 1536
# text-embedding-3-large → 3072
# BGE-base-en-v1.5 → 768
# all-MiniLM-L6-v2 → 384
client.create_collection(
    collection_name="my_collection",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)

Qdrant Cloud — 401 Unauthorized

Qdrant Cloud requires an API key. There are two accepted header formats:

# Python client
from qdrant_client import QdrantClient

client = QdrantClient(
    url="https://your-cluster.cloud.qdrant.io:6333",
    api_key="your_api_key_here",
)

# curl
curl -H "api-key: your_api_key_here" \
  "https://your-cluster.cloud.qdrant.io:6333/collections"

Get your API key at cloud.qdrant.io → Clusters → Data Access Control → Create API key. Self-hosted Qdrant has no auth by default.

gRPC UNAVAILABLE / gRPC transport error

The Qdrant Python client uses gRPC (port 6334) by default. If port 6334 is blocked or not exposed in Docker, you'll get StatusCode.UNAVAILABLE. Switch to REST mode:

# Force REST mode (port 6333 only)
client = QdrantClient(
    "localhost",
    port=6333,
    prefer_grpc=False,  # default is True
)

Search returns empty results

  1. 1 Check points exist: GET /collections/{name}/info and look at points_count. If 0, no data was upserted.
  2. 2 Named vectors: if your collection uses named vectors, the search query must specify the vector name: search(collection_name, query_vector=("my_vector_name", [...])).
  3. 3 Filter payload field names are case-sensitive and must match exactly what was stored at upsert time.
  4. 4 HNSW index not built yet: immediately after a large batch upsert, the index may still be optimizing. Check /collections/{name}/info for optimizer_status.

Out of memory on self-hosted Qdrant

Qdrant keeps all vector data in memory (mmap by default). Rough memory estimate: 1M vectors × 1536 dims × 4 bytes = ~6GB. For large datasets, use quantization:

from qdrant_client.models import ScalarQuantizationConfig, ScalarType

# Scalar quantization: 4x memory reduction, ~5% accuracy loss
client.create_collection(
    collection_name="my_collection",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
    quantization_config=ScalarQuantizationConfig(
        type=ScalarType.INT8,
        quantile=0.99,
        always_ram=True,
    ),
)

Alternatively, set on_disk=True in VectorParams to use mmap instead of RAM — slower but much lower memory usage.

Collection not found error

UnexpectedResponse: Status 404, reason: Not Found: Collection `my_collection` doesn't exist!
  • List existing collections to check the name: client.get_collections()
  • If using Docker and restarted without a volume mount, all data is lost on restart. Always use -v $(pwd)/qdrant_storage:/qdrant/storage.
  • Collection names are case-sensitive: MyCollectionmycollection.
🔔

Know when Qdrant Cloud has an outage

Free email alerts. Star Qdrant on Prismix — no credit card needed.

FAQ

Qdrant vs Weaviate vs Pinecone — which is more reliable?

All three are production-grade vector databases. Qdrant is fully open-source and can be self-hosted for free. For managed cloud reliability comparison, check prismix.dev/service/qdrant and prismix.dev/service/weaviate for live incident history.

Can I use Qdrant for free?

Yes. Self-hosted Qdrant is free forever (Apache 2 license). Qdrant Cloud offers a free tier with 1GB storage per cluster. Run locally with docker run -p 6333:6333 qdrant/qdrant or install the Python binary.

Slow upsert performance

For bulk inserts, use upsert() with batches of 100–500 points rather than one-by-one. For very large datasets (>1M vectors), use the upload_collection() method which buffers and uploads in parallel. Also temporarily disable indexing during bulk upload: set hnsw_config.m=0 while loading, then re-enable.

Monitor related services