Skip to content

Vector DBs comparaison — pgvector, Qdrant, Milvus, Weaviate #261

Description

@khalilbenaz

lede: Vector DBs pour RAG : pgvector pour démarrer, Qdrant pour scale OSS, Weaviate pour hybrid search, Milvus pour très massif.
lede_en: Vector DBs for RAG: pgvector to start, Qdrant for OSS scale, Weaviate for hybrid search, Milvus for very massive.
title_en: Vector DBs comparison — pgvector, Qdrant, Milvus, Weaviate

Le marché vector DB

  • pgvector : extension Postgres, simple.
  • Qdrant : OSS, Rust, performant.
  • Weaviate : OSS, hybrid search natif.
  • Milvus : OSS, scale massif.
  • Pinecone : managed, cher.
  • Chroma : dev/prototypes.

pgvector — démarrer

CREATE EXTENSION vector;

CREATE TABLE docs (
  id serial primary key,
  embedding vector(1536),
  content text
);

CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);

SELECT content FROM docs
ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 10;

Sweet spot : moins de 10M vecteurs, déjà Postgres en stack. Pas de service séparé à opérer.

Qdrant — quand pgvector ne suffit plus

OSS, Rust. Performances excellentes. Cloud ou self-host.

from qdrant_client import QdrantClient
client = QdrantClient("localhost", port=6333)
client.search(collection_name="docs", query_vector=embedding, limit=10)

Sweet spot : 10M-1B vecteurs, vous voulez OSS sans dépendre d'un cloud.

Weaviate — hybrid search

Combine vector + BM25 + filters dans une seule query.

client.query.get("Doc", ["content"]).with_hybrid(
    query="red shoes",
    vector=embedding,
    alpha=0.5  # 0 = pure BM25, 1 = pure vector
).do()

Sweet spot : RAG qui veut combine sémantique + lexical (souvent meilleur que vector seul).

Milvus — scale massif

Pour >1B vecteurs. Architecture distributed sérieuse.

Sweet spot : Spotify-scale, vous gérez vraiment des volumes massifs.

Pinecone — managed cher

Service managed. Pas de self-host.

Pricing : à partir de $70/mois pour 10M vecteurs, escalade vite.

Sweet spot : vous voulez zéro ops, budget cloud.

Chroma — dev / prototypes

Python embedded vector store. Rapide à démarrer.

Sweet spot : prototypes, demos, MVPs. Pas pour prod sérieuse.

Decision tree

Déjà Postgres + <10M vecteurs ?
  → pgvector.

OSS + 10M-1B vecteurs ?
  → Qdrant.

Hybrid search important ?
  → Weaviate.

>1B vecteurs ?
  → Milvus.

Cloud managed, budget ok ?
  → Pinecone.

Prototype Python ?
  → Chroma.

Verdict

Pour 90 % des RAG en 2026 : pgvector suffit. Pas de raison de complexifier.

Migrer vers Qdrant/Weaviate quand mesurer limite. Pinecone si budget illimité et zéro ops.

The vector DB market

  • pgvector: Postgres extension, simple.
  • Qdrant: OSS, Rust, performant.
  • Weaviate: OSS, native hybrid search.
  • Milvus: OSS, massive scale.
  • Pinecone: managed, expensive.
  • Chroma: dev/prototypes.

pgvector — start

CREATE EXTENSION vector;

CREATE TABLE docs (
  id serial primary key,
  embedding vector(1536),
  content text
);

CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);

SELECT content FROM docs
ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 10;

Sweet spot: less than 10M vectors, Postgres already in stack. No separate service to operate.

Qdrant — when pgvector isn't enough

OSS, Rust. Excellent performance. Cloud or self-host.

from qdrant_client import QdrantClient
client = QdrantClient("localhost", port=6333)
client.search(collection_name="docs", query_vector=embedding, limit=10)

Sweet spot: 10M-1B vectors, you want OSS without cloud dependency.

Weaviate — hybrid search

Combines vector + BM25 + filters in a single query.

client.query.get("Doc", ["content"]).with_hybrid(
    query="red shoes",
    vector=embedding,
    alpha=0.5  # 0 = pure BM25, 1 = pure vector
).do()

Sweet spot: RAG wanting combined semantic + lexical (often better than vector alone).

Milvus — massive scale

For >1B vectors. Serious distributed architecture.

Sweet spot: Spotify-scale, you really handle massive volumes.

Pinecone — expensive managed

Managed service. No self-host.

Pricing: from $70/month for 10M vectors, escalates fast.

Sweet spot: you want zero ops, cloud budget.

Chroma — dev / prototypes

Python embedded vector store. Fast to start.

Sweet spot: prototypes, demos, MVPs. Not for serious prod.

Decision tree

Already Postgres + <10M vectors?
  → pgvector.

OSS + 10M-1B vectors?
  → Qdrant.

Hybrid search important?
  → Weaviate.

>1B vectors?
  → Milvus.

Cloud managed, budget OK?
  → Pinecone.

Python prototype?
  → Chroma.

Verdict

For 90% of RAG in 2026: pgvector suffices. No reason to complexify.

Migrate to Qdrant/Weaviate when measure limit. Pinecone if unlimited budget and zero ops.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions