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:

  1. Carica gli embedding esistenti
  2. Confronta le chiavi delle query (testo + metadati)
  3. Crea l'embedding solo per le query nuove o modificate
  4. 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:

  1. Pipeline Batch: Genera gli embedding da query e prodotti
  2. Servizio di Ricerca: Carica gli embedding per l'API di ricerca correlata
  3. 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:

  1. Fase 0: Embedding dei Dati Sorgente - Prodotti, componenti, articoli
  2. Fase 3b: Embedding delle Query - Tutte le query di ricerca
  3. Fase 4: Espansione Mappature Frasi - Trova frasi simili
  4. Fase 5: Clustering delle Query - Raggruppa in pagine di query
  5. Fase 6: Associazione Prodotto - Associazione query-prodotto
  6. Fase 8: Generazione Ricerche Correlate - Trova query correlate

Vedi Panoramica della Pipeline SEO per il flusso completo.

Riferimenti

Documentazione del Modello

Concetti Tecnici

Articoli Correlati

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.


← Torna all'Indice della Documentazione