Vector Database

[vètor dèitabeis]

Database specializzato per memorizzare embedding (vettori numerici) e cercare per similarità semantica. Cuore di qualsiasi RAG serio.

Un vector database è un tipo speciale di database progettato per memorizzare e cercare velocemente embedding (vettori numerici di centinaia o migliaia di dimensioni). È il pezzo fondamentale di qualunque sistema RAG serio.

Differenza con database normali:

  • Database SQL/NoSQL: cerchi per match esatto o filtri.
  • Vector database: cerchi per similarità semantica. "Trova i documenti più simili a questa query" misurata in spazio vettoriale.

Funzionamento:

  1. Trasformi ogni documento (o chunk) in embedding via modello (es. OpenAI text-embedding-3, BGE, ecc.).
  2. Salvi l'embedding nel vector database insieme ai metadati.
  3. A query time, calcoli embedding della query.
  4. Il vector database restituisce i top-K embedding più "vicini" (similarità coseno o euclidea).
  5. Ricostruisci i documenti corrispondenti.

Vector database principali:

  • Pinecone: cloud, leader, costoso.
  • Qdrant: open source, self-hosted o cloud.
  • Weaviate: open source, multi-modale.
  • ChromaDB: leggero, in-process Python, ottimo per prototipi.
  • Milvus: open source, scalabile per enterprise.
  • pgvector: estensione PostgreSQL. Comodo se hai già Postgres.
  • Redis: con Redis Stack supporta vector search.

Caratteristiche da valutare:

  • Performance su milioni/miliardi di vettori.
  • Filtering combinato con ricerca vettoriale.
  • Costi (hosted vs self-hosted).
  • Indici disponibili (HNSW, IVF, ecc.).
  • Aggiornamenti real-time.

Per progetti piccoli/medi: pgvector o Chroma. Per produzione enterprise: Pinecone, Qdrant, Weaviate.