0Pricing
AI Engineering Academy · Lezione

Perché serve un database vettoriale

Comprenderà i limiti della ricerca di similarità brute force, il funzionamento degli algoritmi approximate nearest neighbor come HNSW e quali problemi risolvano i database vettoriali in produzione.

Perché serve un database vettoriale è una lezione AI Engineering Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Engineering Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Engineering Academy include 4 lezioni in totale.

I limiti della ricerca in memoria

La ricerca semantica con NumPy funziona bene per corpus di piccole dimensioni, ma presenta un problema fondamentale di scalabilità: ogni ricerca analizza ogni vettore. Con 1 milione di documenti, ogni query richiede 1,5 miliardi di moltiplicazioni in virgola mobile e richiede centinaia di millisecondi. Inoltre, tutti i vettori devono entrare nella RAM.

I sistemi di IA in produzione devono cercare tra milioni di documenti in meno di 50 ms. È proprio questo il risultato che i database vettoriali sono progettati per offrire.

Ricerca approssimata del vicino più prossimo

Gli algoritmi di Approximate Nearest Neighbor (ANN) sacrificano una piccola parte della precisione in cambio di notevoli miglioramenti della velocità. Invece di controllare ogni vettore, gli algoritmi ANN utilizzano strutture di indicizzazione intelligenti per saltare ampie porzioni dello spazio di ricerca.

Nella pratica, ANN restituisce il vero vicino più prossimo oltre il 95% delle volte, risultando da 100 a 1000 volte più veloce della ricerca esatta. Per la RAG, questo compromesso vale quasi sempre la pena.

Come funziona HNSW

HNSW (Hierarchical Navigable Small World) è l'algoritmo ANN dominante utilizzato da Pinecone, Weaviate, Qdrant e pgvector. Costruisce un grafo multilivello in cui ogni nodo è collegato ai suoi vicini più prossimi. La ricerca inizia dal livello superiore, più rado, si sposta verso la regione approssimata e poi scende al livello inferiore, più denso, per ottenere maggiore precisione.

HNSW offre un'eccellente velocità delle query (logaritmica rispetto alle dimensioni del dataset) e un recall elevato, ma richiede la costruzione preventiva dell'indice.

Cosa aggiungono i database vettoriali

Un database vettoriale è più di un indice ANN. Offre anche:

  • Filtraggio dei metadati — recuperare solo i vettori per i quali category='finance' o date > '2024-01-01'
  • Archiviazione persistente — i dati sopravvivono ai riavvii e possono superare i limiti della RAM
  • Operazioni CRUD — inserire, aggiornare ed eliminare singoli vettori
  • Isolamento tramite namespace — separare le raccolte per clienti o ambienti diversi
  • Scalabilità orizzontale — distribuire milioni di vettori tra più shard

Il filtraggio dei metadati nella pratica

Il filtraggio dei metadati consente di limitare il recupero a un sottoinsieme pertinente prima di eseguire la ricerca ANN. Ad esempio, in un sistema RAG multi-tenant, filtrerebbe in base a tenant_id, in modo che gli utenti vedano solo i propri documenti. Senza il filtraggio dei metadati, sarebbe necessario un indice separato per ogni tenant.

Questa è una delle funzionalità più importanti che distinguono i database vettoriali dalle semplici librerie ANN come FAISS.

# Conceptual example — Pinecone query with metadata filter
results = index.query(
    vector=query_embedding,
    top_k=5,
    filter={
        'tenant_id': {'$eq': 'acme_corp'},
        'document_type': {'$in': ['invoice', 'contract']},
        'date': {'$gte': '2024-01-01'}
    },
    include_metadata=True
)

FAISS: libreria ANN ad alte prestazioni

FAISS (Facebook AI Similarity Search) è una libreria ANN open source di Meta, l'opzione più veloce per la ricerca accelerata tramite GPU. Non è un database completo: non offre persistenza, metadati né un servizio integrato.

FAISS è ideale quando serve il massimo throughput su una singola macchina e si gestisce autonomamente la persistenza. Chroma, Weaviate e pgvector utilizzano FAISS o HNSW internamente.

import faiss
import numpy as np

d = 1536  # dimension
n = 10000  # number of vectors

# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d)  # Inner Product = dot product

# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors)  # normalize for cosine sim
index.add(vectors)

query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)

scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])

Database vettoriali e database tradizionali a confronto

I database SQL tradizionali, come PostgreSQL, sono ottimizzati per ricerche esatte e query per intervalli su dati strutturati. Non sono progettati per la ricerca del vicino più prossimo in alta dimensionalità. Anche con l'estensione pgvector, PostgreSQL puro è più lento dei database vettoriali progettati appositamente per corpus di grandi dimensioni.

Tuttavia, pgvector è un'ottima scelta quando l'applicazione utilizza già PostgreSQL e il corpus contiene meno di qualche milione di documenti, perché evita di aggiungere un altro componente all'infrastruttura.

Opzioni gestite e autogestite

Le opzioni per i database vettoriali rientrano in due categorie:

  • Gestite (serverless): Pinecone, Weaviate Cloud — nessuna infrastruttura da gestire, pagamento in base alle query e allo spazio di archiviazione, scalabilità immediata
  • Autogestite: Qdrant, Chroma, Weaviate open source, pgvector — controllo completo e costi inferiori su larga scala, ma backup, aggiornamenti e scalabilità sono a Suo carico

Per i progetti nelle prime fasi, inizi con un servizio gestito per procedere rapidamente. Valuti l'autogestione quando i costi mensili superano i 200-300 $.

Tipi di indice: Flat, IVF e HNSW

I diversi tipi di indice offrono compromessi differenti:

  • Flat: ricerca esatta, senza approssimazioni; lenta su larga scala, ma senza alcuna perdita di accuratezza — ideale per i benchmark di riferimento
  • IVF (Inverted File): suddivide i vettori in cluster e cerca solo nei cluster più vicini — veloce, ma richiede la regolazione di nlist e nprobe
  • HNSW: basato su grafi, offre il miglior compromesso tra recall e velocità per la maggior parte dei carichi di lavoro ed è l'impostazione predefinita nella maggior parte dei database di produzione

Quantizzazione per ridurre l'uso della memoria

La quantizzazione dei vettori comprime ogni numero float a 32 bit di un vettore in un numero inferiore di bit, riducendo notevolmente l'uso della memoria al costo di una lieve perdita di accuratezza:

  • FP32: 1536 dimensioni × 4 byte = 6 KB per vettore
  • FP16: 3 KB per vettore — compressione 2x, perdita di accuratezza trascurabile
  • INT8: 1,5 KB per vettore — compressione 4x, calo del recall di circa l'1%

Con 10 milioni di vettori, la quantizzazione INT8 riduce la memoria da 60 GB a 15 GB, facendo la differenza tra riuscire o meno a caricare i dati nella RAM.

Quando passare da NumPy a un database vettoriale

Valuti il passaggio dalla ricerca NumPy in memoria a un database vettoriale quando:

  • Il corpus supera i 50.000 documenti e la latenza delle query peggiora
  • Ha bisogno del filtraggio dei metadati (per data, utente, categoria e così via)
  • Ha bisogno della persistenza dei dati, che deve sopravvivere ai riavvii dell'applicazione
  • Più servizi o utenti devono condividere lo stesso indice
  • Ha bisogno di aggiornare o eliminare singoli documenti senza indicizzare nuovamente tutto

Verifica rapida

Metta alla prova la Sua comprensione dei concetti di AI Engineering trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato: la ricerca NumPy a forza bruta non è scalabile oltre qualche decina di migliaia di documenti, HNSW consente una ricerca rapida e approssimata del vicino più prossimo spostandosi attraverso un grafo gerarchico e i database vettoriali aggiungono filtraggio dei metadati, persistenza e operazioni CRUD agli indici ANN. Ora configureremo Pinecone, il database vettoriale gestito più diffuso, e indicizzeremo i nostri primi documenti.

Domande Frequenti

La lezione «Perché serve un database vettoriale» è gratuita?

Sì — il testo completo di «Perché serve un database vettoriale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Engineering Academy, passa a CoddyKit PRO. Il corso AI Engineering Academy include 4 lezioni in totale.

Cosa imparerò in «Perché serve un database vettoriale»?

Comprenderà i limiti della ricerca di similarità brute force, il funzionamento degli algoritmi approximate nearest neighbor come HNSW e quali problemi risolvano i database vettoriali in produzione. Eserciti AI Engineering Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Engineering Academy?

Non è richiesta alcuna esperienza precedente. AI Engineering Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Perché serve un database vettoriale»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Engineering Academy?

Sì. Ogni lezione AI Engineering Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché serve un database vettoriale
  2. Iniziare con Pinecone
  3. pgvector: embeddings in PostgreSQL
  4. Scegliere e valutare i vector store
← Torna a AI Engineering Academy