Guardate, ci hanno venduto il sogno: butta su degli embedding OpenAI nel tuo catalogo prodotti, lancia una query Supabase veloce e zac – il tuo chatbot è un genio dello shopping, azzecca ogni desiderio vago del cliente.
Ma Ali, che sgobba su Provia da Gaza (sì, sta costruendo una piattaforma AI per vendite in mezzo al caos vero), si è scontrato con il muro. Il cliente digita ‘fammi vedere qualcosa per una serata romantica’ e il top result? ‘Cozy Night Deluxe Loungewear Set’. Pigiami. Perché nel brodo dimensionale 1536 del text-embedding-3-small, ‘serata romantica’ e ‘night loungewear’ sono cugini stretti.
Perché la ricerca vettoriale fa flop con le intenzioni d’acquisto
Ricerca semantica? Piuttosto ricerca schifosa. Misura distanze cosmiche tra nuvole di parole, non vibrazioni umane da shopping. ‘Outfit per serata fuori’ – pigiami. ‘Crema buona notte’ – ancora pigiami. Quel buco nero del loungewear ha inghiottito tutto ciò che puzzava di ‘notte’, grazie al nome e descrizione zeppi di keyword.
Ecco il resoconto crudo di Ali:
Un cliente ha digitato “fammi vedere qualcosa per una serata romantica” e il mio chatbot AI ha restituito il “Cozy Night Deluxe Loungewear Set” — pigiami — come top result. Perché “night” in “date night” è semanticamente vicino a “night” in “loungewear set”.
Spietato. E questo in un cataloghino di 15 prodotti. Scala a milioni di Shopify? Incubo puro.
Il setup era da manuale: embed dei prodotti col modello OpenAI, query embed, similarità coseno via pgvector su Supabase. Soglia a 0.1 – ridicolmente lassista. Passava qualsiasi cosa vagamente english.
Primo fix? Alza a 0.3. Addio pigiami. Ma anche addio a ‘fammi vedere giacche’ – 0.28 su ‘Classic Cool Denim Jacket’. Troppo stretto per query secche.
Hack a due livelli: match forti oltre 0.3, vicini 0.2-0.3 come ‘suggerimenti’. Peggio. Il bot proponeva pigiami come ‘potrebbe andar bene’, stessa UX schifosa.
A 0.25, tira 10 risultati. Esplosione di rumore. Pigiami in coda, bot a volte li spinge.
Gli embedding OpenAI sono inutili per l’e-commerce?
Non inutili. Solo ciechi al contesto. Lo spazio vettoriale raggruppa concetti per statistiche di co-occorrenza, non psicologia dell’acquirente. Serata romantica con abito sexy? No, vincono i pigiami cozy per vicinanza ‘night’. È ricerca keyword anni ‘90 su steroidi – stessi tranelli, matematica figa.
La mia opinione hot, non detta da Ali: riecheggia il crollo di AltaVista. Vi ricordate? La ricerca web iniziale affogava in pagine spam gonfie di keyword calde. Google le ha polverizzate con PageRank e i suoi segnali di intento. Gli shop vettoriali di oggi hanno bisogno di quello – rank ibridi che mischiano embedding con regole, categorie, persino velocità di vendita. Senza? Paghi le fee OpenAI per embedding mentre i clienti scappano.
La vincitrice di Ali: catena di fallback. Nessun match a 0.3? Niente panico.
Step 1: Semantica stretta (soglia 0.3).
Step 2: Fallback keyword – ricerca full-text su nome/desc.
Step 3: Scansione categoria larga – se la query sa di ‘outfit’, scansiona abbigliamento.
Step 4: Zero risultati? Prompt ‘dimmi di più’.
Il codice è evoluto furbo. Func default a 0.3, app aggiunge layer fallback:
// Pseudo-ish
if (semanticResults.length === 0) {
keywordResults = await supabase.rpc('keyword_search', {query});
if (keywordResults.length === 0) {
catResults = await get_category_products(extract_category(query));
}
}
Risultato? Serata romantica ora tira su abiti, top. Niente più seduzione sleepwear.
Ma il cinismo: chi ci guadagna? OpenAI, fattura per embed. Supabase, per query. Dev come Ali bruciano notti a tweakare. Clienti? Sempre diffidenti sui rec AI. Cataloghi piccoli schivano il peggio, ma e-comm enterprise? Serviranno eserciti di ingegneri – o molleranno i vector puri per catene agentic (care).