{"id":2144,"date":"2026-05-06T10:47:47","date_gmt":"2026-05-06T08:47:47","guid":{"rendered":"https:\/\/userbot.ai\/blog\/?p=2144"},"modified":"2026-05-06T10:47:49","modified_gmt":"2026-05-06T08:47:49","slug":"hybrid-search-rag-agente-ai-significato-precisione","status":"publish","type":"post","link":"https:\/\/userbot.ai\/blog\/hybrid-search-rag-agente-ai-significato-precisione\/","title":{"rendered":"Hybrid Search nel RAG: come migliorare precisione e affidabilit\u00e0 negli Agenti AI"},"content":{"rendered":"\n<p><em>Nel <strong>Retrieval-Augmented Generation (RAG)<\/strong>, la qualit\u00e0 della risposta dipende prima di tutto dalla qualit\u00e0 del recupero delle informazioni. Quando i dati aziendali includono codici, sigle, procedure e linguaggio naturale, la ricerca solo semantica non <\/em>\u00e8 sufficiente. <\/p>\n\n\n\n<p><em>Qui entra in gioco la <strong>Hybrid Search<\/strong>, una strategia fondamentale per migliorare <strong>precisione, recall e affidabilit\u00e0 negli Agenti AI<\/strong>.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Quando l&#8217;AI capisce la domanda ma recupera il documento sbagliato<\/h2>\n\n\n\n<p>Immagina un cliente che scrive: <\/p>\n\n\n\n<p style=\"border-style:none;border-width:0px;margin-top:var(--wp--preset--spacing--50);margin-right:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--50);margin-left:var(--wp--preset--spacing--60)\"><em>&#8220;Ho un problema con il codice ERR-7421 dopo l&#8217;attivazione del piano Business&#8221;<\/em><\/p>\n\n\n\n<p>Un Agente AI ben progettato comprende perfettamente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>il contesto (attivazione)<\/li>\n\n\n\n<li>l\u2019intento (risolvere un errore)<\/li>\n\n\n\n<li>il dominio (piano Business)<\/li>\n<\/ul>\n\n\n\n<p>Eppure pu\u00f2 restituire una risposta generica.<\/p>\n\n\n\n<p><strong>Perch\u00e9 succede?<\/strong><\/p>\n\n\n\n<p>Il problema non \u00e8 nel modello generativo, ma del <strong>retrieval<\/strong>. <\/p>\n\n\n\n<p>In un sistema RAG, la qualit\u00e0 della risposta dipende dalla qualit\u00e0 dei documenti che il retrieval seleziona e passa al modello. Se il retrieval recupera documenti sbagliati, anche il miglior modello linguistico al mondo produrr\u00e0 una risposta imprecisa.<\/p>\n\n\n\n<p>L&#8217;architettura RAG \u00e8 proprio questo: combinare un modello generativo con una memoria esterna recuperata tramite retrieval, per migliorare la factualit\u00e0 e l&#8217;accesso alla conoscenza aggiornata. Ma quella memoria esterna va cercata nel modo giusto.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cos&#8217;\u00e8 il RAG e perch\u00e9 il retrieval \u00e8 il punto critico<\/h2>\n\n\n\n<p>Prima di parlare di Hybrid Search, vale la pena capire come funziona la pipeline di un sistema RAG. <\/p>\n\n\n\n<p>I passaggi fondamentali sono quattro:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>L&#8217;utente fa una domanda.<\/li>\n\n\n\n<li>Il sistema cerca i contenuti pi\u00f9 rilevanti nella knowledge base.<\/li>\n\n\n\n<li>I contenuti recuperati vengono passati al modello.<\/li>\n\n\n\n<li>Il modello genera una risposta basata su quei contenuti.<\/li>\n<\/ol>\n\n\n\n<p><strong>Il modello, quindi, non risponde &#8220;da solo&#8221;. Risponde sulla base dei documenti che riceve.<\/strong> <\/p>\n\n\n\n<p>Se il retrieval recupera documenti sbagliati, parziali o troppo generici, il modello produrr\u00e0 risposte sbagliate, parziali o generiche. <strong>Il retrieval \u00e8 il punto pi\u00f9 critico dell&#8217;intera catena.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cos&#8217;\u00e8 la Hybrid Search<\/h2>\n\n\n\n<p>La Hybrid Search \u00e8 una strategia di retrieval che combina due modi diversi di cercare: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>la <strong>ricerca semantica<\/strong> (dense vectors), che capisce il significato<\/li>\n\n\n\n<li>la <strong>ricerca lessicale<\/strong> (sparse vectors come BM25) che trova match esatti<\/li>\n<\/ul>\n\n\n\n<p>La prima trova contenuti simili per significato. La seconda trova corrispondenze precise su parole, codici, sigle e termini specifici.<\/p>\n\n\n\n<p>L&#8217;obiettivo \u00e8 semplice: <strong>unire comprensione + precisione<\/strong>.<\/p>\n\n\n\n<p>Nessuno dei due approcci, da solo, copre tutti i casi. Combinandoli, il sistema riesce a recuperare documenti rilevanti sia quando l&#8217;utente parafrasa un concetto sia quando inserisce un identificativo esatto.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Come funziona la Hybrid Search<\/h2>\n\n\n\n<p>La Hybrid Search si basa su tre componenti: dense vectors,  sparse vectors e un meccanismo di <em>fusion<\/em> che combina i risultati.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dense vectors<\/strong><\/h3>\n\n\n\n<p>I dense vectors sono rappresentazioni numeriche compatte generate da un modello di embedding. <strong>Servono a catturare il significato<\/strong> di una frase o di un documento.<\/p>\n\n\n\n<p>Prendiamo due frasi: <em>&#8220;Come posso annullare il contratto?&#8221;<\/em> e <em>&#8220;Qual \u00e8 la procedura di recesso?&#8221;<\/em>. Le parole sono diverse, ma il significato \u00e8 vicino. La ricerca vettoriale basata su dense vectors pu\u00f2 quindi recuperare documenti pertinenti anche senza un match lessicale diretto. OpenAI descrive gli embeddings come rappresentazioni che misurano la relatedness tra stringhe di testo e abilitano casi d&#8217;uso come search e clustering.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sparse vectors<\/strong><\/h3>\n\n\n\n<p>Gli sparse vectors rappresentano la presenza e il peso di parole specifiche. Sono &#8220;sparse&#8221; perch\u00e9, su un vocabolario molto grande, ogni documento attiva solo alcune dimensioni: quelle relative ai termini presenti o rilevanti. Quindi, in parole pi\u00f9 semplici, <strong>trova parole esatte<\/strong>.<\/p>\n\n\n\n<p>Sono fondamentali per recuperare:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>codici prodotto<\/li>\n\n\n\n<li>codici errore<\/li>\n\n\n\n<li>numeri di pratica<\/li>\n\n\n\n<li>sigle e acronimi<\/li>\n\n\n\n<li>nomi di moduli o parametri<\/li>\n\n\n\n<li>riferimenti normativi<\/li>\n\n\n\n<li>SKU e URL<\/li>\n\n\n\n<li>termini tecnici molto specifici<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fusion<\/strong><\/h3>\n\n\n\n<p>Dopo aver eseguito entrambe le ricerche, il sistema deve unire i risultati. Questa fase si chiama <em>fusion<\/em>.<\/p>\n\n\n\n<p>I metodi pi\u00f9 comuni sono:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Somma pesata dei punteggi<\/strong>: i risultati delle due ricerche ricevono un peso relativo.<\/li>\n\n\n\n<li><strong>Normalizzazione degli score<\/strong>: gli score vengono portati su una scala comune prima di combinarli.<\/li>\n\n\n\n<li><strong>Reciprocal Rank Fusion (RRF)<\/strong>: combina i ranking senza bisogno di normalizzare i punteggi, basandosi sulla posizione dei risultati.<\/li>\n\n\n\n<li><strong>Reranking finale<\/strong>: un modello dedicato riordina i risultati combinati per massimizzare la rilevanza.<\/li>\n<\/ul>\n\n\n\n<p>In pratica, quando arriva una query il flusso \u00e8 lineare: la domanda dell&#8217;utente viene trasformata in un embedding (dense vectors) e, contemporaneamente, analizzata come testo per la ricerca keyword (sparse vectors). <strong>Le due ricerche partono in parallelo sulla knowledge base.<\/strong> I risultati vengono poi unificati tramite fusion, i documenti pi\u00f9 promettenti vengono selezionati e passati al modello generativo, che produce la risposta finale. <strong>Tutto avviene in pochi istanti, ma la qualit\u00e0 di ogni passaggio si riflette direttamente sulla risposta.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Dense vectors vs sparse vectors: la differenza in sintesi<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Aspetto<\/strong><\/th><th><strong>Dense vectors<\/strong><\/th><th><strong>Sparse vectors<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Cosa catturano<\/td><td>Significato, contesto, similarit\u00e0 semantica<\/td><td>Parole esatte, codici, termini specifici<\/td><\/tr><tr><td>Esempio<\/td><td>&#8220;disdire contratto&#8221; \u2248 &#8220;fare recesso&#8221;<\/td><td>ERR_403, AB-1290, webhook_retry_limit<\/td><\/tr><tr><td>Punto di forza<\/td><td>Comprende parafrasi e sinonimi<\/td><td>Non perde identificativi precisi<\/td><\/tr><tr><td>Limite<\/td><td>Pu\u00f2 ignorare dettagli esatti<\/td><td>Non capisce il significato se cambiano le parole<\/td><\/tr><tr><td>Ruolo nel RAG<\/td><td>Aumenta la comprensione<\/td><td>Aumenta la precisione<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 \u00e8 fondamentale negli Agente AI aziendali<\/h2>\n\n\n\n<p>In un contesto aziendale, le informazioni non sono fatte solo di concetti. Sono fatte anche di codici, procedure, versioni, prodotti, nomi interni, condizioni contrattuali e abbreviazioni.<\/p>\n\n\n\n<p>Un Agente AI deve saper gestire entrambe le dimensioni.<\/p>\n\n\n\n<p>La ricerca solo semantica \u00e8 molto forte quando l&#8217;utente usa parole diverse da quelle presenti nei documenti. Ma pu\u00f2 essere fragile quando la domanda contiene identificativi precisi. La ricerca keyword \u00e8 forte sugli identificativi, ma pu\u00f2 fallire quando l&#8217;utente parafrasa o usa linguaggio naturale.<\/p>\n\n\n\n<p>La Hybrid Search serve proprio a compensare questi due limiti. Pinecone descrive l&#8217;obiettivo della hybrid search come fusione tra vector search e traditional search, per combinare la performance semantica con l&#8217;adattabilit\u00e0 della ricerca tradizionale.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Hybrid Search: come migliora recall e precision<\/h2>\n\n\n\n<p>Per capire perch\u00e9 la combinazione funziona, \u00e8 utile ragionare in termini di recall e precision: due concetti fondamentali nell&#8217;information retrieval.<\/p>\n\n\n\n<p>Il <strong>recall<\/strong> misura la capacit\u00e0 di recuperare tutti i documenti potenzialmente utili. <\/p>\n\n\n\n<p>La <strong>precision<\/strong> misura la capacit\u00e0 di mettere in alto quelli davvero corretti. <\/p>\n\n\n\n<p>In un sistema RAG, servono entrambe: se il recall \u00e8 basso, il documento giusto non arriva nemmeno al modello; se la precision \u00e8 bassa, il modello riceve troppo rumore e produce risposte vaghe o fuorvianti.<\/p>\n\n\n\n<p>La <strong>dense search<\/strong> contribuisce soprattutto al recall semantico: riesce a trovare contenuti rilevanti anche quando le parole della query non compaiono nel documento. La <strong>sparse search <\/strong>contribuisce alla precision lessicale: quando la query contiene un codice, una sigla o un termine esatto, lo valorizza come segnale forte. La <strong><em>fusion<\/em><\/strong> prova a ottenere il meglio da entrambe, costruendo una lista di risultati che sia al tempo stesso ampia e precisa.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa succede senza Hybrid Search<\/h2>\n\n\n\n<p>Vediamo quattro scenari concreti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Codici errore<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Mi compare ERR_AUTH_403 quando provo ad accedere all&#8217;area riservata.<\/p>\n<\/blockquote>\n\n\n\n<p>Con solo dense search, il sistema potrebbe recuperare contenuti generici su &#8220;problemi di accesso&#8221; o &#8220;credenziali non valide&#8221;, perch\u00e9 semanticamente vicini. Con hybrid search, il codice ERR_AUTH_403 pesa come match esatto e porta in alto la procedura specifica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Versioni prodotto<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Cosa include il piano PRO-2025 rispetto al piano PRO-2024?<\/p>\n<\/blockquote>\n\n\n\n<p>Senza sparse retrieval, il sistema potrebbe concentrarsi sul concetto di &#8220;piano pro&#8221; e perdere la differenza tra le versioni. Con hybrid search, i codici PRO-2025 e PRO-2024 diventano segnali forti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Parametri tecnic<\/strong>i<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Come configuro il parametro webhook_retry_limit?<\/p>\n<\/blockquote>\n\n\n\n<p>La ricerca semantica pu\u00f2 capire &#8220;configurazione webhook&#8221;, ma non sempre valorizza abbastanza il nome esatto del parametro. La ricerca sparse, invece, trova il parametro preciso. La parte dense aiuta poi a recuperare anche spiegazioni correlate, esempi e procedure equivalenti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Sigle interne o acronimi<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Qual \u00e8 la procedura per escalation L2 su ticket NDD?<\/p>\n<\/blockquote>\n\n\n\n<p>Se L2 o NDD sono sigle interne, un modello dense potrebbe non interpretarle correttamente. La componente sparse permette di agganciare il documento esatto anche quando il significato semantico non \u00e8 evidente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Il ruolo del modello di embedding<\/h2>\n\n\n\n<p>La componente dense della Hybrid Search \u00e8 tanto buona quanto il modello di embedding che la genera.<\/p>\n\n\n\n<p>Un buon embedding model deve essere scelto considerando prima di tutto la lingua dei contenuti e il dominio aziendale: un modello ottimizzato per l&#8217;inglese potrebbe non rappresentare bene l&#8217;italiano, e una terminologia specifica richiede modelli capaci di comprenderla. Conta anche la lunghezza dei documenti, alcuni modelli gestiscono meglio testi lunghi, altri sono ottimizzati per frasi brevi, e la presenza di termini tecnici come codici, sigle e abbreviazioni, che possono essere mal rappresentati da modelli generalisti.<\/p>\n\n\n\n<p>Se i contenuti sono in pi\u00f9 lingue, serve un modello multilingua. In produzione, costo e latenza diventano vincoli concreti. E c&#8217;\u00e8 un aspetto spesso sottovalutato: la capacit\u00e0 di rappresentare query brevi e documenti lunghi nello stesso spazio semantico, che influisce direttamente sulla qualit\u00e0 del matching.<\/p>\n\n\n\n<p>Per esempio, MTEB, uno dei benchmark pi\u00f9 citati per valutare embedding models, copre molti task, lingue e domini proprio perch\u00e9 nessun modello \u00e8 universalmente migliore in ogni scenario.<\/p>\n\n\n\n<p>Scegliere un embedding model non significa scegliere &#8220;il pi\u00f9 famoso&#8221;, ma quello pi\u00f9 adatto al tipo di conoscenza che l&#8217;Agente AI deve recuperare. Un sistema customer care in italiano, con procedure, codici e documenti aziendali, ha esigenze diverse da un motore di ricerca per articoli scientifici o da un assistente per codice sorgente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Oltre la Hybrid Search: cosa serve davvero<\/h2>\n\n\n\n<p>La Hybrid Search \u00e8 importante, ma per essere efficace deve essere accompagnata da altri componenti.<\/p>\n\n\n\n<p>Il primo \u00e8 il <strong>chunking corretto<\/strong>: i documenti vanno divisi in blocchi sensati, non casuali. Un chunk troppo grande diluisce il segnale; uno troppo piccolo perde il contesto. Trovare la granularit\u00e0 giusta \u00e8 un lavoro di design, non un dettaglio implementativo. <a href=\"https:\/\/userbot.ai\/blog\/chunking-la-decisione-che-cambia-tutto\/\" data-type=\"post\" data-id=\"1999\">Approfondisci con il nostro articolo.<\/a><\/p>\n\n\n\n<p>Poi c&#8217;\u00e8 il <strong>metadata filtering<\/strong>. Filtri per lingua, prodotto, mercato, versione, data o canale permettono di restringere la ricerca prima ancora di eseguirla, riducendo il rumore e velocizzando il retrieval.<\/p>\n\n\n\n<p>Un altro passaggio fondamentale \u00e8 il <strong>reranking<\/strong>: dopo aver raccolto i candidati migliori, un modello dedicato li riordina per massimizzare la rilevanza. <\/p>\n\n\n\n<p>Infine, servono <strong>valutazione continua e monitoraggio delle risposte<\/strong>. Testare su query reali e casi limite, analizzare le conversazioni in cui il retrieval non ha trovato il documento corretto: \u00e8 cos\u00ec che un sistema RAG migliora nel tempo, non solo al momento del lancio.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Come Userbot affronta il retrieval negli Agenti AI<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"716\" style=\"aspect-ratio: 1384 \/ 716;\" width=\"1384\" autoplay controls loop muted preload=\"auto\" src=\"https:\/\/userbot.ai\/blog\/wp-content\/uploads\/2026\/05\/VideoHybridSearch.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p>In Userbot trattiamo il retrieval come una parte centrale del Retriever Agent, non come un dettaglio tecnico nascosto. L&#8217;obiettivo non \u00e8 solo generare una risposta fluida, ma recuperare il contenuto giusto, nel momento giusto, dal documento giusto.<\/p>\n\n\n\n<p>Questo significa lavorare su pi\u00f9 livelli.<\/p>\n\n\n\n<p>Il recupero semantico consente di comprendere richieste formulate in linguaggio naturale, anche quando le parole non coincidono con quelle dei documenti. Il recupero lessicale, in parallelo, garantisce che codici, sigle, identificativi e parole chiave vengano trovati con precisione. I risultati delle due ricerche vengono poi combinati tramite ranking e fusion, per portare in alto i documenti pi\u00f9 rilevanti.<\/p>\n\n\n\n<p>Ma la pipeline non finisce qui. La scelta del modello di embedding \u00e8 il fondamento della componente semantica, e va calibrata sul dominio e sulla lingua dei contenuti. Il monitoraggio delle query reali serve a capire dove il sistema funziona e dove serve intervenire. E il miglioramento \u00e8 progressivo: ogni caso in cui la risposta richiede precisione documentale diventa un&#8217;opportunit\u00e0 per affinare il retrieval.<\/p>\n\n\n\n<p>Questo miglioramento \u00e8 particolarmente evidente nelle richieste che contengono codici specifici, sigle, identificativi di prodotto o nomi tecnici. In questi casi, la sola similarit\u00e0 semantica pu\u00f2 recuperare contenuti plausibili ma non esatti. La Hybrid Search riduce concretamente il rischio che l&#8217;Agente AI risponda con un contenuto &#8220;semanticamente simile&#8221; ma non corretto, aumentando la probabilit\u00e0 che il documento giusto venga selezionato gi\u00e0 nella fase di retrieval.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e8 la Hybrid Search \u00e8 cruciale nel RAG<\/h2>\n\n\n\n<p>Nel RAG, la generazione \u00e8 solo l&#8217;ultimo passaggio. Prima c&#8217;\u00e8 una domanda pi\u00f9 importante: quali informazioni stiamo dando al modello?<\/p>\n\n\n\n<p>La Hybrid Search nasce per rispondere a questa domanda con un approccio pi\u00f9 robusto: cercare per significato, ma anche per precisione. Perch\u00e9 in un contesto aziendale, la differenza tra una risposta utile e una risposta sbagliata pu\u00f2 stare in un codice, in una sigla o in una singola parola.<\/p>\n\n\n\n<p>Un Agente AI affidabile non deve solo parlare bene. Deve cercare bene.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group has-background\" style=\"background-color:#5a8acc6e;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--70)\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-container-core-group-is-layout-8a886889 wp-block-group-is-layout-constrained\">\n<p><em>Per approfondire: <\/em><\/p>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><em><a href=\"https:\/\/docs.weaviate.io\/weaviate\/search\/hybrid\" target=\"_blank\" rel=\"noopener\">Weaviate<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><em><a href=\"https:\/\/docs.opensearch.org\/latest\/search-plugins\/hybrid-search\/\" target=\"_blank\" rel=\"noopener\">OpenSearch<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><a href=\"https:\/\/docs.pinecone.io\/guides\/search\/hybrid-search\" target=\"_blank\" rel=\"noopener\">Pinecone<\/a><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><em><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/hybrid-search-ranking\" target=\"_blank\" rel=\"noopener\">Azure AI Search<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><em><a href=\"https:\/\/qdrant.tech\/documentation\/search\/hybrid-queries\/\" target=\"_blank\" rel=\"noopener\">Qdrant<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><em><a href=\"https:\/\/docs.cohere.com\/docs\/reranking\" target=\"_blank\" rel=\"noopener\">Cohere<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<ul style=\"margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\" class=\"wp-block-list has-small-font-size\">\n<li><a href=\"https:\/\/developers.openai.com\/api\/docs\/guides\/embeddings\" target=\"_blank\" rel=\"noopener\">OpenAI<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<style>\n  .ub4 {\n    font-family: 'Inter', -apple-system, sans-serif;\n    background: #0d1b3e;\n    background-image: radial-gradient(ellipse at 70% 30%, #122b6b 0%, #0d1b3e 70%);\n    border-radius: 16px;\n    padding: 44px 48px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n    position: relative;\n    overflow: hidden;\n    max-width: 520px;\n    margin: 8px auto;\n  }\n  .ub4-deco1 {\n    position: absolute; top: -80px; right: -80px;\n    width: 260px; height: 260px; border-radius: 50%;\n    background: rgba(62,174,255,0.07); pointer-events: none;\n  }\n  .ub4-deco2 {\n    position: absolute; bottom: -60px; left: -60px;\n    width: 200px; height: 200px; border-radius: 50%;\n    background: rgba(62,174,255,0.05); pointer-events: none;\n  }\n  .ub4-icon {\n    width: 48px; height: 48px;\n    background: rgba(62,174,255,0.12);\n    border: 1.5px solid rgba(62,174,255,0.28);\n    border-radius: 12px;\n    display: flex; align-items: center; justify-content: center;\n    margin-bottom: 20px;\n    position: relative;\n  }\n  .ub4-eyebrow {\n    font-size: 11px; font-weight: 600;\n    letter-spacing: 0.13em; text-transform: uppercase;\n    color: #3EAEFF;\n    margin-bottom: 10px;\n    position: relative;\n  }\n  .ub4-title {\n    font-size: 24px; font-weight: 700;\n    color: #ffffff;\n    line-height: 1.3; margin-bottom: 10px;\n    position: relative;\n  }\n  .ub4-sub {\n    font-size: 15px;\n    color: rgba(255,255,255,0.62);\n    line-height: 1.6;\n    margin-bottom: 28px;\n    position: relative;\n  }\n  .ub4-btn {\n    display: inline-flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    align-items: center;\n    gap: 8px;\n    background: #3EAEFF !important;\n    color: #ffffff !important;\n    font-size: 15px;\n    font-weight: 700;\n    padding: 15px 36px;\n    border-radius: 10px;\n    border: none;\n    cursor: pointer;\n    white-space: nowrap;\n    font-family: inherit;\n    position: relative;\n    z-index: 10;\n    box-shadow: 0 0 0 3px rgba(62,174,255,0.3);\n  }\n  .ub4-btn:hover {\n    background: #2298f0 !important;\n    transform: translateY(-1px);\n  }\n  .ub4-btn:active { transform: scale(0.98); }\n<\/style>\n\n<div class=\"ub4\" role=\"complementary\" aria-label=\"Banner demo Userbot\">\n  <div class=\"ub4-deco1\"><\/div>\n  <div class=\"ub4-deco2\"><\/div>\n\n  <div class=\"ub4-icon\">\n    <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\n      <rect x=\"2\" y=\"5\" width=\"18\" height=\"13\" rx=\"3\" stroke=\"#3EAEFF\" stroke-width=\"1.6\"\/>\n      <path d=\"M7 9h8M7 12.5h5\" stroke=\"#3EAEFF\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/>\n      <circle cx=\"17\" cy=\"4\" r=\"3\" fill=\"#3EAEFF\"\/>\n    <\/svg>\n  <\/div>\n\n  <div class=\"ub4-eyebrow\">Scopri Userbot<\/div>\n  <div class=\"ub4-title\">Pronto a scoprire come<br>possiamo aiutarti?<\/div>\n  <div class=\"ub4-sub\">Richiedi una demo gratuita o contattaci:<br>il nostro team \u00e8 a tua disposizione.<\/div>\n\n  <a href=\"https:\/\/userbot.typeform.com\/to\/ctnyuoTq?_gl=1*jrn3dk*_gcl_au*NDU3NjU4NTAwLjE3NzI3MTc1Mzg.&#038;typeform-embed=popup-classic&#038;typeform-source=userbot.ai&#038;typeform-medium=embed-sdk&#038;embed-hide-headers=true&#038;typeform-embed-id=qjr2w\" target=\"_blank\" class=\"ub4-btn\">\n\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n\n    <path d=\"M2 8h10M8 4l4 4-4 4\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n\n  <\/svg>\n\n  Contattaci\n\n<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"Un Agente AI affidabile non deve solo generare buone risposte: deve prima recuperare le informazioni giuste. La Hybrid Search nasce per questo: unire comprensione semantica e precisione lessicale, cos\u00ec da trovare sia documenti simili per significato sia contenuti che contengono codici, sigle o termini esatti.","protected":false},"author":1,"featured_media":2147,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"csco_display_header_overlay":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_reading_time":"","csco_page_toc_navigation":"","csco_post_video_location":[],"csco_post_video_location_hash":"","csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0,"csco_post_video_bg_volume":false,"footnotes":""},"categories":[109,29,41,24],"tags":[100,28,141],"class_list":{"0":"post-2144","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ai-business","8":"category-curiosita","9":"category-intelligenza-artificiale","10":"category-tecnologia","11":"tag-ai","12":"tag-intelligenza-artificiale","13":"tag-lavoro","14":"cs-entry","15":"cs-video-wrap"},"_links":{"self":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/comments?post=2144"}],"version-history":[{"count":13,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2144\/revisions"}],"predecessor-version":[{"id":2172,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/posts\/2144\/revisions\/2172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/media\/2147"}],"wp:attachment":[{"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/media?parent=2144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/categories?post=2144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/userbot.ai\/blog\/wp-json\/wp\/v2\/tags?post=2144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}