Clustering delle Query: Similarità Tutto-su-Tutto con Elaborazione in Batch

Questo articolo spiega come raggruppiamo le query di ricerca in gruppi semantici utilizzando un confronto di similarità del coseno tutto-su-tutto con elaborazione in batch per l'efficienza della memoria.

Il Problema: Raggruppare Query Simili

Gli utenti cercano la stessa cosa in molti modi:

  • "mini pc"

  • "small computer"

  • "compact desktop"

  • "tiny pc"

Queste query dovrebbero portare alla stessa pagina. Dobbiamo raggruppare insieme query semanticamente simili per poter:

  • Creare una pagina di query per cluster

  • Consolidare il traffico tra ricerche simili

  • Evitare contenuti duplicati

  • Migliorare la SEO concentrandosi sui cluster ad alto traffico

Con grandi volumi di query, abbiamo bisogno di un algoritmo di clustering efficiente che trovi le corrispondenze migliori senza esaurire la memoria.

L'Algoritmo: Confronto Tutto-su-Tutto in Batch

Utilizziamo un confronto di similarità tutto-su-tutto in cui ogni query viene confrontata con tutte le altre per trovare la sua migliore corrispondenza. Per evitare l'esaurimento della memoria con un gran numero di query, processiamo il tutto in batch.

Passo 1: Caricare gli Embedding

Carichiamo in memoria gli embedding pre-calcolati. Ogni query è rappresentata come un vettore a dimensione fissa da un modello sentence transformer.

Passo 2: Elaborazione in Batch

Elaboriamo le query in batch per evitare l'overflow di memoria. Ogni batch calcola i punteggi di similarità del coseno tra le sue query e tutte le query disponibili. Iterando attraverso i batch, ogni query viene confrontata con tutte le altre senza caricare tutte le similarità in memoria contemporaneamente.

Passo 3: Trovare la Migliore Corrispondenza

Per ogni query nel batch, identifichiamo la sua migliore corrispondenza tra tutte le query. La query con il punteggio di similarità più alto diventa il centro del cluster. Se la similarità è al di sotto della soglia configurata, la query rimane per ora non clusterizzata.

Passo 4: Cluster Singleton

Dopo che tutti i batch sono completati, qualsiasi query che non è stata assegnata a un cluster diventa un cluster singleton (un cluster contenente solo se stessa). Ciò garantisce che ogni query appartenga esattamente a un cluster.

Soglia Configurabile

La soglia di similarità determina quanto è rigoroso il clustering:

  • Soglia più alta: Solo le query con una similarità del coseno superiore a questo valore si uniscono allo stesso cluster; risultato in più cluster con un raggruppamento semantico più stretto.

  • Soglia più bassa: Le query con punteggi di similarità più bassi vengono raggruppate insieme; risultato in meno cluster, più grandi, con una copertura semantica più ampia.

La soglia è configurata nel file di configurazione dell'applicazione e può essere modificata senza cambiare il codice.

Classifica dei Cluster

I cluster sono classificati in base al punteggio totale del traffico derivato dalle impression e dai clic di Google Search Console. Per ogni cluster, la somma dei punteggi di traffico di tutte le query membro determina la sua classifica. I cluster ad alto traffico ricevono priorità per la generazione delle pagine di query.

Formato di Output

Il clustering produce un file JSON con statistiche e dati dei cluster:

{
  "stats": {
    "threshold": "configured_value",
# ... (dettagli implementativi omessi)

I cluster sono ordinati per punteggio totale (prima il traffico più alto).

Efficienza della Memoria

L'approccio in batch mantiene l'uso della memoria gestibile elaborando le query in blocchi piuttosto che calcolando tutte le similarità in una volta. Ciò riduce le strutture dati intermedie necessarie durante il calcolo.

Invece di creare una matrice di similarità completa (num_queries × num_queries), calcoliamo un batch alla volta:

  • Memoria per batch: Solo il batch corrente più l'array completo degli embedding sono in memoria

  • Riduzione della memoria: Il batching riduce le dimensioni delle matrici temporanee elaborando un sottoinsieme più piccolo per iterazione

  • Trade-off: Leggermente più calcolo (lettura degli embedding più volte) ma un utilizzo di memoria di picco significativamente più basso

La dimensione del batch è configurabile, permettendo di regolarla in base alla memoria di sistema disponibile. Batch più grandi riducono il numero di iterazioni ma aumentano l'uso della memoria; batch più piccoli usano meno memoria ma richiedono più iterazioni.

Filtraggio Blacklist

Prima del clustering, filtriamo le query nella blacklist (nomi di marchi, concorrenti, termini irrilevanti). Ciò riduce il rumore e migliora la qualità del cluster.

La blacklist è mantenuta separatamente e controllata durante il caricamento delle query.

Clustering Incrementale

Quando arrivano nuove query, non riclassifichiamo tutto:

  1. Carica i cluster esistenti
  2. Crea gli embedding per le nuove query
  3. Confronta le nuove query con i centri dei cluster esistenti
  4. Assegna al cluster con la migliore corrispondenza o crea un nuovo cluster
  5. Ri-classifica i cluster in base ai punteggi aggiornati

Questo approccio incrementale elabora solo i nuovi dati, risparmiando tempo di calcolo.

Integrazione con la Pipeline SEO

Il clustering delle query è il Passo 5 nella pipeline SEO:

  1. Passo 0: Embed dei Dati di Origine - Prodotti, parti, articoli
  2. Passo 1: Recupero delle Query - GSC, Google Ads, live, Algolia
  3. Passo 2: Combinazione delle Query - Unisci tutte le fonti
  4. Passo 3a: Generazione delle Mappature delle Frasi Base - Filtri iniziali
  5. Passo 3b: Embed delle Query - Conversione in vettori
  6. Passo 4: Espansione delle Mappature delle Frasi - Trova frasi simili
  7. Passo 5: Clustering delle Query ← Tu sei qui
  8. Passo 6: Abbinamento Prodotti - Abbinamento query-prodotto
  9. Passo 7: Costruzione delle Pagine di Query - Genera HTML
  10. Passo 8: Generazione delle Ricerche Correlate - Trova query correlate
  11. Passo 11: Migrazione a Valkey - Carica nel servizio di ricerca

Vedi Panoramica della Pipeline SEO per il flusso completo.

Perché Tutto-su-Tutto Invece di K-Means?

In precedenza utilizzavamo il clustering k-means con centri cluster pre-selezionati. L'approccio tutto-su-tutto ha vantaggi:

  • Corrispondenze migliori: Ogni query trova la sua vera migliore corrispondenza, non solo la più vicina tra alcuni centri pre-selezionati

  • Nessun bias di pre-selezione: I centri dei cluster emergono naturalmente dai dati

  • Conteggio cluster adattivo: Il numero di cluster si adatta alla distribuzione dei dati

  • Qualità superiore: Le query si raggruppano con la loro corrispondenza più simile, non un compromesso

Il trade-off è un aumento del tempo di calcolo, ma il miglioramento della qualità lo giustifica.

Caratteristiche delle Prestazioni

Il processo di clustering ha queste caratteristiche:

  • Tempo di elaborazione: Scala con il volume delle query e la soglia di similarità; batch più grandi riducono le iterazioni

  • Utilizzo della memoria: Matrice degli embedding + batch attivo + spazio di lavoro temporaneo; configurabile tramite dimensione del batch

  • I/O su disco: Singola lettura sequenziale dell'array completo degli embedding all'inizio; I/O minimo durante l'elaborazione

  • Utilizzo della CPU: Dominato dai calcoli di similarità del coseno in tutti i confronti batch-su-tutti

Il processo è limitato dalla CPU. L'uso di NumPy con accelerazione BLAS accelera significativamente le operazioni matriciali.

Riferimenti

Concetti Tecnici

Documentazione del Modello

Articoli Correlati

Riepilogo

Raggruppiamo le query utilizzando un confronto di similarità del coseno tutto-su-tutto con elaborazione in batch:

  • Calcolo in batch: Le similarità vengono calcolate in dimensioni di batch configurabili

  • Selezione della migliore corrispondenza: Ogni query si unisce al cluster della sua corrispondenza più simile

  • Soglia configurabile: Soglia di similarità regolabile senza cambiare il codice

  • Efficiente in memoria: Il batching previene l'overflow di memoria per grandi dataset

  • Output classificato per traffico: Cluster ordinati per punteggio totale di impression/clic

  • Gestione dei singleton: Le query non clusterizzate diventano cluster a membro singolo

Questo approccio produce cluster di qualità superiore rispetto al k-means trovando le vere migliori corrispondenze invece dei centri pre-selezionati più vicini. Il risultato sono pagine di query migliori con un consolidamento del traffico più rilevante.


← Torna all'Indice della Documentazione