Keyword search fa match esatto. Cerchi "attacco di cuore", non trova "infarto miocardico". Stesso concetto, parole diverse. I database tradizionali non capiscono il significato.
I vector database risolvono questo. Convertono testo (o immagini, audio) in liste di numeri chiamate embeddings. Questi numeri rappresentano il "significato" del contenuto. Concetti simili hanno numeri simili. La ricerca diventa: trova i vettori più vicini.
Come funziona
Prendi un testo. Lo passi a un modello (OpenAI, sentence-transformers, altri). Ottieni un vettore, tipo 1536 numeri. Lo salvi nel database. Quando cerchi, la tua query diventa un vettore. Il database trova i vettori più simili.
Non è magia. È geometria in 1536 dimensioni. "Attacco di cuore" e "infarto miocardico" finiscono vicini nello spazio vettoriale perché i modelli hanno imparato che significano la stessa cosa.
Use case: archivio giornali
Ho testato la ricerca semantica su un archivio di giornali storici. Query in linguaggio naturale su documenti di decenni fa. Keyword search non avrebbe funzionato: il linguaggio cambia, i termini tecnici evolvono. Con gli embeddings, cerchi il concetto, non la parola esatta.
RAG in 30 secondi
RAG = Retrieval Augmented Generation. Il pattern è semplice:
- L'utente fa una domanda
- Cerchi documenti rilevanti nel vector DB
- Passi domanda + documenti all'LLM
- L'LLM risponde basandosi sui documenti reali
Risultato: meno allucinazioni. Il modello non inventa, cita. Funziona per documentazione interna, knowledge base, qualsiasi cosa dove vuoi risposte basate su fatti, non su probabilità.
Quale scegliere
pgvector - estensione Postgres. Se già usi Postgres, non aggiungi infrastruttura. Ma non è plug-and-play: serve tuning, capire HNSW, configurare indici. Non ideale per un MVP veloce.
Qdrant - database dedicato, API pulita, defaults migliori out of the box. Se parti da zero e vuoi qualcosa che funziona subito, è più pratico.
Performance? A piccola scala (milioni di vettori) sono comparabili. La differenza vera è operativa: pgvector è un servizio in meno da gestire se già hai Postgres. Qdrant è più semplice da configurare se non ti interessa l'integrazione SQL.


