
Qdrant Vector Search
Configure Qdrant cluster deployments, sharding, and Python client collection setup for production vector search.
Overview
Qdrant Vector Search is an agent skill for the Build phase that guides distributed Qdrant cluster setup and Python client sharding configuration.
Install
npx skills add https://github.com/davila7/claude-code-templates --skill qdrant-vector-searchWhat is this skill?
- 3-node Qdrant cluster docker-compose with Raft P2P ports and bootstrap URLs
- Per-node HTTP, gRPC, and P2P port mapping pattern for local distributed testing
- Sharding configuration via QdrantClient VectorParams, Distance, and ShardingMethod
- Cluster enablement through QDRANT__CLUSTER__ENABLED and bootstrap environment variables
- Python qdrant-client examples for collection creation on clustered hosts
- 3-node cluster example in docker-compose
Adoption & trust: 729 installs on skills.sh; 27.8k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent or RAG app outgrew single-node Qdrant and you lack a copy-paste cluster and sharding recipe.
Who is it for?
Solo builders shipping semantic search or agent memory on self-hosted Qdrant who need Raft cluster wiring.
Skip if: Beginners who only need embedded in-memory vectors or managed vector DB with zero ops.
When should I use this skill?
When deploying distributed Qdrant, enabling cluster mode, or configuring collection sharding for vector search.
What do I get? / Deliverables
You deploy a multi-node Qdrant cluster with Docker Compose and create sharded collections using qdrant-client patterns from the skill.
- Multi-node Qdrant docker-compose
- Cluster environment configuration
- Python collection setup with sharding options
Recommended Skills
Journey fit
Build integrations is the shelf because the skill wires Qdrant distributed nodes, Docker Compose, and client APIs—not launch SEO or growth analytics. Integrations captures external vector DB topology (Raft cluster, bootstrap peers, sharding method) agents embed in RAG and semantic search stacks.
How it compares
Skill package for self-hosted Qdrant topology—not an MCP server and not a managed Pinecone-style offering.
Common Questions / FAQ
Who is qdrant-vector-search for?
Indie AI and SaaS builders integrating Qdrant for embeddings who need distributed deployment and sharding configuration guidance.
When should I use qdrant-vector-search?
During Build when standing up Qdrant clusters, configuring Raft peers, or defining sharded collections for RAG and agent retrieval.
Is qdrant-vector-search safe to install?
Check the Security Audits panel on this Prism page; cluster configs expose ports and require you to harden network access and secrets in production.
SKILL.md
READMESKILL.md - Qdrant Vector Search
# Qdrant Advanced Usage Guide ## Distributed Deployment ### Cluster Setup Qdrant uses Raft consensus for distributed coordination. ```yaml # docker-compose.yml for 3-node cluster version: '3.8' services: qdrant-node-1: image: qdrant/qdrant:latest ports: - "6333:6333" - "6334:6334" - "6335:6335" volumes: - ./node1_storage:/qdrant/storage environment: - QDRANT__CLUSTER__ENABLED=true - QDRANT__CLUSTER__P2P__PORT=6335 - QDRANT__SERVICE__HTTP_PORT=6333 - QDRANT__SERVICE__GRPC_PORT=6334 qdrant-node-2: image: qdrant/qdrant:latest ports: - "6343:6333" - "6344:6334" - "6345:6335" volumes: - ./node2_storage:/qdrant/storage environment: - QDRANT__CLUSTER__ENABLED=true - QDRANT__CLUSTER__P2P__PORT=6335 - QDRANT__CLUSTER__BOOTSTRAP=http://qdrant-node-1:6335 depends_on: - qdrant-node-1 qdrant-node-3: image: qdrant/qdrant:latest ports: - "6353:6333" - "6354:6334" - "6355:6335" volumes: - ./node3_storage:/qdrant/storage environment: - QDRANT__CLUSTER__ENABLED=true - QDRANT__CLUSTER__P2P__PORT=6335 - QDRANT__CLUSTER__BOOTSTRAP=http://qdrant-node-1:6335 depends_on: - qdrant-node-1 ``` ### Sharding Configuration ```python from qdrant_client import QdrantClient from qdrant_client.models import VectorParams, Distance, ShardingMethod client = QdrantClient(host="localhost", port=6333) # Create sharded collection client.create_collection( collection_name="large_collection", vectors_config=VectorParams(size=384, distance=Distance.COSINE), shard_number=6, # Number of shards replication_factor=2, # Replicas per shard write_consistency_factor=1 # Required acks for write ) # Check cluster status cluster_info = client.get_cluster_info() print(f"Peers: {cluster_info.peers}") print(f"Raft state: {cluster_info.raft_info}") ``` ### Replication and Consistency ```python from qdrant_client.models import WriteOrdering # Strong consistency write client.upsert( collection_name="critical_data", points=points, ordering=WriteOrdering.STRONG # Wait for all replicas ) # Eventual consistency (faster) client.upsert( collection_name="logs", points=points, ordering=WriteOrdering.WEAK # Return after primary ack ) # Read from specific shard results = client.search( collection_name="documents", query_vector=query, consistency="majority" # Read from majority of replicas ) ``` ## Hybrid Search ### Dense + Sparse Vectors Combine semantic (dense) and keyword (sparse) search: ```python from qdrant_client.models import ( VectorParams, SparseVectorParams, SparseIndexParams, Distance, PointStruct, SparseVector, Prefetch, Query ) # Create hybrid collection client.create_collection( collection_name="hybrid", vectors_config={ "dense": VectorParams(size=384, distance=Distance.COSINE) }, sparse_vectors_config={ "sparse": SparseVectorParams( index=SparseIndexParams(on_disk=False) ) } ) # Insert with both vector types def encode_sparse(text: str) -> SparseVector: """Simple BM25-like sparse encoding""" from collections import Counter tokens = text.lower().split() counts = Counter(tokens) # Map tokens to indices (use vocabulary in production) indices = [hash(t) % 30000 for t in counts.keys()] values = list(counts.values()) return SparseVector(indices=indices, values=values) client.upsert( collection_name="hybrid", points=[ PointStruct( id=1, vector={ "dense": dense_encoder.encode("Python programming").tolist(), "sparse": encode_sparse("Python programming language code") }, payload={"text": "Python programming language code"} ) ] ) # Hybrid search with Reciprocal Rank Fusion (RRF) from qdrant_client.models i