Strategia di Embedding: all-mpnet-base-v2 per la Ricerca Semantica
Questo articolo spiega come utilizziamo il modello sentence transformer all-mpnet-base-v2 per alimentare la ricerca semantica all'interno della nostra pipeline SEO.
Il Problema: Associare le Query ai Prodotti
Quando gli utenti cercano "mini pc" o "small computer", intendono la stessa cosa nonostante non condividano parole chiave. Il tradizionale abbinamento per parole chiave fallisce qui. Abbiamo bisogno di embedding semantici - rappresentazioni vettoriali dense che catturano il significato, non solo le parole.
La nostra pipeline SEO elabora oltre 65.000 query di ricerca e deve:
-
Raggruppare query simili insieme per le pagine di query
-
Associare le query ai prodotti in base al significato
-
Trovare ricerche correlate
-
Espandere le mappature frase-filtro
Il Modello: all-mpnet-base-v2
Utilizziamo all-mpnet-base-v2, un modello sentence transformer che:
-
Restituisce vettori a 768 dimensioni
-
È addestrato su oltre 1 miliardo di coppie di frasi
-
Gestisce sequenze fino a 384 token
Il modello mappa il testo in uno spazio vettoriale denso dove testi semanticamente simili hanno un'elevata similarità del coseno.
Come Lo Utilizziamo
1. Embedding delle Query
Trasformiamo tutte le query di ricerca in vettori a 768 dimensioni:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-mpnet-base-v2")
embeddings = model.encode(queries)
Ogni query diventa un vettore di 768 float (3.072 byte). Per 65.000 query, si tratta di ~190 MB di embedding.
2. Clustering delle Query
Raggruppiamo le query per similarità:
-
Selezioniamo le prime 1.000 query per traffico come centri dei cluster
-
Calcoliamo la similarità del coseno tra tutte le 65K query e questi 1K centri
-
Le query con similarità ≥ 0.85 si uniscono a quel cluster
-
Le query non raggruppate diventano cluster singoli
Questo crea pagine di query dove ogni pagina rappresenta un cluster di ricerche simili.
Vedi Algoritmo di Clustering delle Query per i dettagli.
3. Associazione dei Prodotti
Trasformiamo in embedding i nomi e le caratteristiche dei prodotti, quindi associamo le query ai prodotti utilizzando la similarità del coseno. I prodotti con la similarità più alta rispetto alla query compaiono su quella pagina di query.
Vedi Algoritmo di Associazione Prodotto per i dettagli.
4. Espansione delle Mappature Frasi
Utilizziamo gli embedding per trovare frasi simili per l'estrazione dei filtri. Ad esempio, se "mini pc" è mappato a un filtro per dimensione, possiamo scoprire che anche "small computer" dovrebbe esserlo.
Vedi Espansione Mappatura Frasi per i dettagli.
Archiviazione: Array NumPy
Archiviamo gli embedding come file NumPy .npy:
import numpy as np
# Salvataggio
np.save("embeddings.npy", embeddings)
# Caricamento (memory-mapped)
embeddings = np.load("embeddings.npy", mmap_mode='r')
Perché NumPy?
-
Caricamento veloce con memory mapping
-
Operazioni native sugli array per il calcolo della similarità
-
Formato binario compatto (~190 MB per 65K query)
Embedding Incrementale
Non ri-creiamo l'embedding di tutte le query ogni volta. Il nostro embedding incrementale:
- Carica gli embedding esistenti
- Confronta le chiavi delle query (testo + metadati)
- Crea l'embedding solo per le query nuove o modificate
- Le aggiunge all'array esistente
Questo riduce significativamente il tempo di elaborazione quando cambiano solo poche query.
Architettura Multi-Server
Gli embedding sono utilizzati su più server:
- Pipeline Batch: Genera gli embedding da query e prodotti
- Servizio di Ricerca: Carica gli embedding per l'API di ricerca correlata
- Server Web Principale: Utilizza gli embedding per l'associazione prodotto
L'archiviazione varia a seconda del server:
-
File NumPy: Pipeline batch (accesso locale veloce)
-
Valkey RediSearch: Servizio di ricerca (ricerca per similarità vettoriale)
Vedi Architettura del Servizio di Ricerca per i dettagli sull'integrazione con Valkey.
Integrazione con la Pipeline SEO
Gli embedding alimentano più fasi della pipeline:
- Fase 0: Embedding dei Dati Sorgente - Prodotti, componenti, articoli
- Fase 3b: Embedding delle Query - Tutte le query di ricerca
- Fase 4: Espansione Mappature Frasi - Trova frasi simili
- Fase 5: Clustering delle Query - Raggruppa in pagine di query
- Fase 6: Associazione Prodotto - Associazione query-prodotto
- Fase 8: Generazione Ricerche Correlate - Trova query correlate
Vedi Panoramica della Pipeline SEO per il flusso completo.
Riferimenti
Documentazione del Modello
-
Scheda del Modello all-mpnet-base-v2 - Hugging Face
-
Documentazione di Sentence Transformers - Documentazione ufficiale
-
Articolo su Sentence Transformers - Reimers & Gurevych, 2019
Concetti Tecnici
-
Word Embeddings - Wikipedia
-
Similarità del Coseno - Wikipedia
-
File Memory-Mapped di NumPy - Documentazione NumPy
Articoli Correlati
-
Panoramica della Pipeline SEO - Architettura completa della pipeline
-
Algoritmo di Clustering delle Query - Come raggruppiamo 65K query
-
Architettura del Servizio di Ricerca - Integrazione con Valkey RediSearch
-
Algoritmo di Associazione Prodotto - Associazione semantica
-
Espansione Mappatura Frasi - Utilizzo degli embedding per i filtri
Riepilogo
Utilizziamo all-mpnet-base-v2 per convertire il testo in vettori a 768 dimensioni che catturano il significato semantico. Questi embedding alimentano l'intera nostra pipeline SEO:
-
Clustering delle query: Raggruppa 65K query in pagine utilizzando una soglia di similarità di 0.85
-
Associazione prodotto: Associa semanticamente le query ai prodotti
-
Ricerche correlate: Trova query simili per la navigazione
-
Espansione frasi: Scopre nuove frasi per i filtri
Gli embedding sono archiviati come array NumPy per un caricamento veloce e vengono elaborati in modo incrementale per evitare di ri-creare l'embedding di dati immutati. Gli stessi embedding sono utilizzati su più server tramite file NumPy e Valkey RediSearch.