MAISON CODE .
/ Tech · AI · Search · Vectors · Database

Database vettoriali: la memoria dell'intelligenza artificiale

SQL utilizza la corrispondenza esatta delle parole chiave. I database vettoriali utilizzano la ricerca semantica. Come costruire motori di ricerca che comprendano che "Scarlet" è simile a "Rosso".

AB
Alex B.
Database vettoriali: la memoria dell'intelligenza artificiale

La storia della ricerca: da SQL ai vettori

Per capire perché sono necessari i database vettoriali, dobbiamo guardare alla storia dell’Information Retrieval.

Generazione 1: Corrispondenza esatta (anni ‘70) L’operatore SQL “LIKE”. Query: SELECT * FROM prodotti DOVE descrizione LIKE '%dress%'. Questo è binario. Può contenere la stringa “dress” oppure no. Se l’utente digita “abbigliamento”, ottiene zero risultati. Ciò ha costretto gli utenti a imparare “Search-Speak” (digitando parole chiave specifiche che sapevano avrebbero funzionato).

Generazione 2: indici invertiti (anni ‘90) Lucene, Elasticsearch, Algolia. Questi dividono il testo in token (["blue", "dress"]), rimuovono le stop word ("the", "a") ed eseguono la radice ("running" -> "run"). Quindi assegnano un punteggio ai documenti utilizzando TF-IDF (frequenza del documento inversa alla frequenza dei termini) o BM25. Ciò ha consentito la corrispondenza fuzzy e la tolleranza agli errori di battitura. Ma ancora falliva nel significato. “Cappotto caldo” non corrisponde a “Giacca invernale” in un motore di parole chiave a meno che non venga sinonimizzato manualmente.

Generazione 3: ricerca semantica (anni 2020) Vettori. Non guardiamo più le parole. Consideriamo i Concetti. La parola “King” non è più una stringa di 4 caratteri (“K-i-n-g`). È un punto in uno spazio di 1.536 dimensioni. E indovina un po’? Il punto per “Regina” è proprio accanto ad esso. Usando la somiglianza del coseno, possiamo trovare documenti concettualmente simili, anche se non condividono parole chiave.

Perché Maison Code ne parla

Non creiamo barre di ricerca; costruiamo Motori di scoperta. Per i nostri clienti con cataloghi >1.000 SKU, la ricerca standard è un killer di conversione. Recentemente abbiamo implementato la ricerca vettoriale ibrida per un marchio di mobili di lusso:

  • Sfida: gli utenti hanno cercato “Vibes” (“Estetica accogliente per angolo lettura”), non parole chiave (“Poltrona di velluto”).
  • Azione: abbiamo vettorializzato l’intero catalogo utilizzando OpenAI Embeddings.
  • Risultato: la frequenza di rimbalzo sulle pagine di ricerca è diminuita del 35%. Crediamo che nel 2026 la ricerca debba essere semantica, non sintattica.

Comprendere gli incorporamenti (la matematica)

Come fa un computer a comprendere il “significato”? Converte il testo in numeri. Questo processo è chiamato Incorporamento.

Immagina un semplice grafico 2D di tutti i concetti.

  • Asse X: Realtà (Quanto è reale?)
  • Asse Y: Genere (maschile vs femminile)

Ora mappiamo alcune parole:

  • “Re”: [0.9, 0.9] (Molto reale, maschile)
  • “Regina”: [0.9, 0.1] (Molto reale, femminile)
  • “Uomo”: [0.1, 0.9] (Non reale, maschile)
  • “Donna”: [0.1, 0.1] (Non reale, femminile)

Ecco la magia. Puoi fare matematica con queste parole. Re - Uomo + Donna = ?

  • [0,9, 0,9] - [0,1, 0,9] + [0,1, 0,1]
  • = [0,9, 0,1]
  • = Regina.

Questo è letteralmente il modo in cui “pensano” gli LLM. Capiscono le relazioni tramite l’aritmetica vettoriale. I modelli moderni come “text-embedding-3-small” di OpenAI utilizzano 1.536 dimensioni (non solo 2) per catturare sfumature come Sentiment, Colore, Urgenza, Formalità e centinaia di altre caratteristiche linguistiche che non possiamo nemmeno nominare.

Lo stack del database vettoriale

Non è possibile archiviare in modo efficiente questi vettori in un normale database MySQL. I database standard sono ottimizzati per l’indicizzazione B-Tree (ordinamento alfanumerico). I database dei vettori di ricerca sono ottimizzati per la ricerca Approximate Nearest Neighbor (ANN). La scansione di 1 milione di vettori per trovare quello più vicino richiederebbe pochi secondi (scansione lineare). I DB vettoriali utilizzano i grafici HNSW (Hierarchical Navigable Small World) per farlo in millisecondi.

Migliori giocatori:

  1. Pinecone: gestito, nativo del cloud. Lo standard del settore. Facile da iniziare.
  2. Weaviate: open source, modulare. Consente di memorizzare oggetti insieme ai vettori. Buono per l’hosting autonomo.
  3. Milvus: Scala alta, Zilliz. Costruito per miliardi di vettori.
  4. pgvettor: un plugin per PostgreSQL. Ottimo se vuoi tenere tutto in un unico posto (Supabase lo supporta).

Matrice di confronto

CaratteristicaPignapgvettoreTessitura
TipoSaaS gestitoEstensione PostgresOSS / Gestito
LatenzaUltra bassoMedioBasso
ComplessitàBassoBassoMedio
Costo€€€€ (gratuito se ospitato autonomamente)€€
Filtro dei metadatiEccellenteBuono (SQL)Eccellente

Implementazione: costruzione di un motore di ricerca semantico

Ecco come creare “Ricerca per significato” utilizzando Node.js e Pinecone.

“dattiloscritto”. importa {Pigna} da ‘@pinecone-database/pinecone’; importa OpenAI da ‘openai’;

// Inizializza i client const pigna = new Pigna({ apiKey: process.env.PINECONE_KEY }); const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY });

const indice = pigna.index(‘prodotti-maison’);

funzione asincrona searchProducts(userQuery: string) { console.log(Ricerca di: €{userQuery});

// 1. Converti la query utente in vettore const embedding = attendono openai.embeddings.create({ modello: “text-embedding-3-small”, input: queryutente, }); vettore const = embedding.data[0].embedding;

// 2. Interroga il DB vettoriale per i vicini più vicini const risultati = attendono indice.query({ vettore: vettore, topK: 5, // Ottieni le prime 5 corrispondenze includeMetadata: vero, // Facoltativo: filtra per categoria filtro: { prezzo: { €lt: 200 } // Solo articoli economici } });

// 3. Visualizza i risultati risultati.matches.forEach(partita => { console.log(Trovato: €{match.metadata.title} (Punteggio: €{match.score})); }); }

// Utilizzo searchProducts(“Qualcosa di elegante per un matrimonio estivo sotto i 200 dollari”);


**Cosa succede**:
1. OpenAI trasforma "Qualcosa di elegante..." in un vettore.
2. Pigna calcola la distanza tra quel vettore e ogni prodotto nel tuo catalogo.
3. Trova "Abito floreale in seta" e "Abito in lino".
4. Anche se nella descrizione del prodotto non compare mai la parola "Matrimonio"!
Il modello di incorporamento sa che "Seta" e "Lino" sono associati a "Matrimoni estivi".

## La sfida: ricerca ibrida

La ricerca vettoriale è magica, ma non è perfetta.
A volte ha allucinazioni o non rileva corrispondenze evidenti di parole chiave.
* **Query**: "ID prodotto 1234".
* **Ricerca vettoriale**: potrebbe restituire "ID prodotto 1235" perché i numeri sono matematicamente vicini nello spazio vettoriale. Tratta l'ID come caratteristiche distinte.
* **Utente**: "Ho digitato l'ID esatto, perché mi hai dato quello sbagliato?"

**Soluzione: ricerca ibrida**.
Combina la ricerca per parole chiave (BM25) con la ricerca vettoriale (densa).
* **Punteggio parola chiave**: 1,0 (corrispondenza esatta)
* **Punteggio vettore**: 0,2 (corrispondenza bassa)
* **Somma ponderata**: vince la corrispondenza della parola chiave.

Pinecone e Weaviate ora supportano immediatamente la ricerca ibrida (vettori "Sparse-Dense").
Si passano alla query sia il vettore denso (incorporamento) che il vettore sparso (parole chiave). Questo è il **Gold Standard** per la ricerca nell'e-commerce.

## RAG: Recupero generazione aumentata

I database vettoriali sono anche la spina dorsale dell'Enterprise AI (RAG).
(Vedi [Perfezionamento LLM](/it/blog/tech-llm-fine-tuning-it)).
Quando chiedi a ChatGPT una domanda sui tuoi documenti, utilizza rigorosamente un passaggio di ricerca vettoriale dietro le quinte per trovare il "Numero di pagina" prima di rispondere.
Senza i DB vettoriali, l’intelligenza artificiale aziendale è impossibile. Non è possibile inserire 10.000 pagine in un prompt. Alimenti le 3 pagine più rilevanti. La ricerca vettoriale trova quelle 3 pagine.

## Il punto di vista dello scettico: quando NON usare i vettori

I vettori sono una moda in questo momento, ma sono costosi e complessi.
**NON utilizzare la ricerca vettoriale se:**
1. **Hai <100 elementi**: usa semplicemente `Array.filter()`.
2. **I tuoi utenti effettuano ricerche in base allo SKU esatto**: la ricerca vettoriale è pessima con i codici esatti.
3. **Il tuo budget è $ 0**: gli incorporamenti costano denaro (API OpenAI). I DB vettoriali costano denaro. L'Algolia è spesso più economica e "abbastanza buona".

## Domande frequenti

**D: Posso utilizzare i vettori per la ricerca di immagini?**
R: Sì! Modelli come **CLIP** (Contrastive Language-Image Pre-Training) possono incorporare immagini nello stesso spazio vettoriale del testo. Puoi cercare "Cane" e trovare l'immagine di un cane.

**D: Con quale frequenza devo aggiornare l'indice?**
R: In tempo reale. Se un prodotto esaurisce le scorte, dovresti aggiornare immediatamente i metadati in Pinecone in modo che la ricerca non restituisca articoli OOS.

## 10. Quantizzazione: riduzione dei costi

I vettori sono pesanti (Float32).
1 milione di vettori * 1536 dim * 4 byte = 6 GB di RAM.
È costoso.
**Quantizzazione** comprime i vettori in Int8 o Binary.
Perdiamo un po' di precisione (la PRECISIONE scende dell'1%), ma le dimensioni diminuiscono di 4x-32x.
Per un catalogo di 100 milioni di prodotti, la quantizzazione è obbligatoria.
Pinecone lo gestisce automaticamente.

## 11. Riclassificazione: il secondo passaggio

La ricerca vettoriale trova elementi "concettualmente simili".
Ma non conosce le "regole aziendali".
Potrebbe restituire un articolo esaurito perché ha una corrispondenza semantica perfetta.
Utilizziamo un **Re-ranker** (modello Cross-Encoder come Cohere).
1. **Recupera**: ottieni i primi 100 candidati da Vector DB (veloce).
2. **Riclassifica**: passali attraverso un modello pesante che controlla lo stato delle scorte, il margine e l'esatta sovrapposizione delle parole chiave.
3. **Restituisci**: i primi 10 all'utente.
Questo "recupero in due fasi" offre il miglior equilibrio tra velocità e precisione.

## 13. Sotto il cofano: l'algoritmo HNSW

In che modo Pinecone ricerca 1 miliardo di vettori in 10 ms?
Utilizza grafici **Hierarchical Navigable Small World**.
Immagina una mappa multistrato.
* **Livello superiore**: autostrade ad alta velocità che collegano città lontane.
* **Livello inferiore**: strade locali.
La query inizia dall'alto, si ingrandisce nel quartiere generale del vettore, quindi scende nelle strade per trovare la casa esatta.
Questa è la complessità $O(log(N))$.
Una scansione lineare è $O(N)$.
Questa è la svolta informatica che ha reso la ricerca vettoriale utilizzabile nella produzione.

## 14. Il costo degli incorporamenti

I vettori non appaiono dal nulla. Paghi OpenAI per generarli.
Il prezzo è economico: $ 0,00013 / 1.000 token.
Incorporare l'intera serie di Harry Potter (1 milione di token) costa $ 0,13.
Tuttavia, per un sito con contenuti generati dagli utenti (milioni di commenti al giorno), questo si somma.
**Ottimizzazione**: utilizza modelli open source (Hugging Face) in esecuzione sulla tua GPU/CPU (ONNX Runtime) per generare incorporamenti gratuitamente.
La qualità è pari al 95% di OpenAI, il costo è 0.

## 15. Conclusione

Se la ricerca sul tuo sito restituisce "Nessun risultato trovato", stai lasciando soldi sul tavolo.
Gli utenti non conoscono la tua terminologia esatta.
Parlano con intenzioni ("cappotto caldo", "regalo economico", "qualcosa per papà").
La ricerca vettoriale colma il divario tra **Intento umano** e **Inventario del database**.
È l'aggiornamento da "Recupero dati" a "Recupero conoscenza".

---


<hr style="margin: 1rem 0" />

### Nessun risultato trovato?
Implementiamo ecosistemi di ricerca vettoriale ibrida per garantire che i tuoi clienti trovino sempre ciò di cui hanno bisogno.


**[Assumi i nostri architetti](/contact)**.