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:
- Trasformi ogni documento (o chunk) in embedding via modello (es. OpenAI text-embedding-3, BGE, ecc.).
- Salvi l'embedding nel vector database insieme ai metadati.
- A query time, calcoli embedding della query.
- Il vector database restituisce i top-K embedding più "vicini" (similarità coseno o euclidea).
- 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.