Pinecone, Weaviate, Qdrant: Comparison
Three production vector DBs compared on hosting model, query speed, filtering, and developer experience.
Pinecone, Weaviate, Qdrant: Comparison is a free AI Agents lesson on CoddyKit. This is lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the AI Agents learning path, and your progress syncs across the web and the CoddyKit app. The AI Agents course includes 4 lessons in total.
Why Pick a Vector DB?
FAISS and Chroma are great for prototypes but production demands more: persistent storage, replication, metadata indexing, multi-tenancy, auth, monitoring.
Three top managed vector DBs: Pinecone, Weaviate, Qdrant.
Pinecone
Fully managed, serverless, easiest to start:
- + Zero ops, SaaS-only
- + Strong p99 latency guarantees
- + Hybrid search (vector + sparse)
- - Cloud-only, no self-host
- - Pricing per pod or per dimension
Weaviate
Self-host or managed, ML-native features:
- + Built-in vectorisation modules (call OpenAI from inside Weaviate)
- + GraphQL query language
- + Multi-tenancy primitives
- + OSS Apache 2.0
- - More moving parts than Pinecone
Qdrant
OSS-first, written in Rust, very fast:
- + Best-in-class self-hosted performance
- + Strong filtering (rich payload language)
- + Quantization options for memory savings
- + gRPC and REST APIs
- - Smaller ecosystem than Pinecone
Pinecone Code Example
from pinecone import Pinecone
pc = Pinecone(api_key='...')
index = pc.Index('docs')
index.upsert([
('id-1', vec1, {'source': 'a.pdf'}),
('id-2', vec2, {'source': 'b.pdf'})
])
results = index.query(
vector=query_vec,
top_k=5,
filter={'source': 'a.pdf'}
)Weaviate Code Example
import weaviate
client = weaviate.Client('http://localhost:8080')
client.batch.add_data_object(
{'text': '...', 'source': 'a.pdf'},
class_name='Doc',
vector=vec1
)
results = (
client.query.get('Doc', ['text', 'source'])
.with_near_vector({'vector': query_vec})
.with_limit(5)
.do()
)Qdrant Code Example
from qdrant_client import QdrantClient
from qdrant_client.models import PointStruct
client = QdrantClient('http://localhost:6333')
client.upsert(
collection_name='docs',
points=[PointStruct(id=1, vector=vec1, payload={'source': 'a.pdf'})]
)
results = client.search(
collection_name='docs',
query_vector=query_vec,
limit=5
)When to Choose Pinecone
- You want zero ops
- Multi-region replication
- Mature integrations (LangChain, LlamaIndex)
When to Choose Weaviate
- You need hybrid (BM25 + vector) out of the box
- Strict data-residency / on-prem
- You like GraphQL
When to Choose Qdrant
- You self-host and need top performance
- Heavy metadata filtering
- You want the simplest deployment
Don't Forget pgvector
If you already run Postgres, the pgvector extension lets you store vectors alongside relational data:
CREATE EXTENSION vector;
CREATE TABLE docs (id SERIAL PRIMARY KEY, text TEXT, embedding vector(1536));
CREATE INDEX ON docs USING ivfflat (embedding vector_cosine_ops);
SELECT text FROM docs ORDER BY embedding <=> $1 LIMIT 5;Other Options
- Milvus — popular at scale, distributed
- Chroma — local-first, simple
- LanceDB — local, columnar, fast
- Elasticsearch — vectors + classical search in one
- Redis Vector — Redis + vector indexing
Migration Pain
Switching vector DBs after launch is painful — re-embedding millions of docs is expensive and slow. Choose carefully or build an abstraction layer (LangChain VectorStore interface).
Which Is Self-Hosted-First?
Which vector DB is written in Rust and oriented toward self-hosting?
Recap
Pinecone for ease, Weaviate for hybrid + GraphQL, Qdrant for performance, pgvector for "we already have Postgres". Pick early, evaluate honestly.
Frequently Asked Questions
Is the “Pinecone, Weaviate, Qdrant: Comparison” lesson free?
Yes — the full text of “Pinecone, Weaviate, Qdrant: Comparison” is free to read here on the web. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the AI Agents course, upgrade to CoddyKit PRO. The AI Agents course includes 4 lessons in total.
What will I learn in “Pinecone, Weaviate, Qdrant: Comparison”?
Three production vector DBs compared on hosting model, query speed, filtering, and developer experience. You practise AI Agents with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start AI Agents?
No prior experience is required. AI Agents on CoddyKit is structured for beginners through advanced learners, so you can start here or from the beginning and move at your own pace. This is lesson 1 of 4.
How long does the “Pinecone, Weaviate, Qdrant: Comparison” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this AI Agents lesson?
Yes. Every AI Agents lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Pinecone, Weaviate, Qdrant: Comparison
- Metadata Filtering for Hybrid Search
- Updating and Deleting Vectors
- Choosing Distance Metrics (cosine, L2, dot)