Introduzione ai database vettoriali
Perché esistono i database vettoriali, FAISS per la ricerca locale per similarità e archiviazione degli embedding per il recupero nell’IA.
Introduzione ai database vettoriali è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 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 Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Oltre le corrispondenze esatte
I database tradizionali trovano le righe tramite valori esatti (WHERE name = "x"). L'IA, invece, lavora con gli embedding — vettori che catturano il significato — e spesso si desiderano gli elementi più simili a una query, non corrispondenze esatte.
I database vettoriali servono a rendere veloce questa ricerca per similarità.
Che cos'è un embedding
Un embedding è un elenco di numeri (un vettore) che rappresenta testo, un'immagine o un audio, in modo che gli elementi simili si trovino vicini nello spazio vettoriale.
La ricerca semantica, i sistemi di raccomandazione e la generazione aumentata dal recupero (RAG) si basano tutti sugli embedding.
import numpy as np
# A toy 4-dim embedding for a sentence
vec = np.array([0.12, -0.43, 0.88, 0.05], dtype="float32")
print(vec.shape) # (4,)Perché non un database tradizionale
Confrontare una query con milioni di vettori tramite un ciclo a forza bruta è lento. I database vettoriali usano indici specializzati e calcoli delle distanze per restituire i vicini più prossimi in pochi millisecondi.
Inoltre, scalano, supportano la persistenza e gestiscono i metadati insieme ai vettori.
Misurare la similarità
La vicinanza si misura con una metrica di distanza:
- L2 (euclidea) — distanza in linea retta; minore significa più vicino
- Coseno — angolo tra i vettori; adatto al testo
FAISS ne supporta diverse; useremo L2.
Introduzione a FAISS
FAISS (Facebook AI Similarity Search) è una libreria gratuita e veloce per la ricerca vettoriale. Funziona localmente senza server: è ideale per imparare e realizzare prototipi.
import faiss
import numpy as np
# pip install faiss-cpuCreare un indice con IndexFlatL2
IndexFlatL2(dim) costruisce un indice flat (a forza bruta, esatto) usando la distanza L2. È necessario specificare la dimensione dei vettori.
"Flat" indica risultati esatti: è perfetto per raccolte di dimensioni piccole o medie.
import faiss
dim = 4
index = faiss.IndexFlatL2(dim)
print(index.is_trained) # True (flat index needs no training)Aggiungere vettori con index.add
Passi gli embedding come un array NumPy 2D di float32 con forma (n, dim). index.add li memorizza; index.ntotal restituisce il conteggio.
import numpy as np
embeddings = np.random.random((100, dim)).astype("float32")
index.add(embeddings)
print(index.ntotal) # 100Cercare con index.search
index.search(query, k) restituisce i k vettori più vicini. Fornisce due array: le distanze D e gli indici I (le posizioni nell'ordine in cui sono stati aggiunti).
query = np.random.random((1, dim)).astype("float32")
D, I = index.search(query, k=5)
print("nearest ids:", I[0])
print("distances:", D[0])Dagli indici agli elementi
FAISS restituisce posizioni, non i dati originali. Mantenga un elenco parallelo (o un database) che associ la posizione nell'indice all'elemento reale, così da poter recuperare i risultati.
docs = ["doc about cats", "doc about dogs", "doc about cars"]
# after search:
for pos in I[0]:
print(docs[pos]) # map id -> original documentUna piccola pipeline di ricerca semantica
Il procedimento completo consiste nel generare gli embedding dei documenti, aggiungerli a un indice, generare l'embedding della query, eseguire la ricerca e restituire i documenti corrispondenti. (I modelli di embedding come sentence-transformers producono i vettori.)
import faiss, numpy as np
# doc_vectors: (n, dim) from an embedding model
index = faiss.IndexFlatL2(doc_vectors.shape[1])
index.add(doc_vectors)
# query_vec: (1, dim) embedding of the user query
D, I = index.search(query_vec, k=3)
results = [docs[i] for i in I[0]]
print(results)Quando usare un database vettoriale
Utilizzi un database vettoriale quando ha bisogno di:
- Ricerca semantica su testo o immagini
- Raccomandazioni basate sulla similarità
- RAG: recupero del contesto pertinente per un LLM
FAISS è ottimo localmente; le soluzioni gestite (Pinecone, Weaviate, pgvector) aggiungono persistenza e scalabilità.
Verifica rapida: ricerca con FAISS
Chiama index.search(query, k=5) su un indice FAISS.
Riepilogo: database vettoriali
Ha appreso i fondamenti della ricerca per similarità:
- Gli embedding avvicinano gli elementi simili nello spazio vettoriale
- I database vettoriali rendono veloce la ricerca dei vicini più prossimi su larga scala
- FAISS
IndexFlatL2(dim)costruisce un indice L2 esatto index.add(embeddings)memorizza i vettori;index.search(query, k)restituisce distanze e indici- Associ gli indici restituiti agli elementi originali
Il modulo dei database è completato. Prossimo argomento: strutturare i progetti di IA con Git.
Domande Frequenti
La lezione «Introduzione ai database vettoriali» è gratuita?
Sì — il testo completo di «Introduzione ai database vettoriali» è 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 Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Introduzione ai database vettoriali»?
Perché esistono i database vettoriali, FAISS per la ricerca locale per similarità e archiviazione degli embedding per il recupero nell’IA. Eserciti Learn AI with Python 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 Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Introduzione ai database vettoriali»?
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 Learn AI with Python?
Sì. Ogni lezione Learn AI with Python 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
- SQLite con il modulo sqlite3 di Python
- Integrazione tra Pandas e SQL
- Archiviazione e interrogazione dei risultati del machine learning
- Introduzione ai database vettoriali