RAG o MCP? Il modo in cui il tuo agente IA recupera le informazioni cambia tutto

La maggior parte degli agenti vocali AI recupera le informazioni nel modo sbagliato — e non te ne accorgeresti mai finché un cliente non si presenta con aspettative sbagliate. Questo articolo spiega la vera differenza tra RAG e MCP, con esempi concreti nei settori immobiliare, sanitario, dell’e-commerce, legale e bancario.

Immagine del blog

Un agente immobiliare mi ha raccontato questa storia: la sua agenzia aveva appena integrato un agente vocale IA per gestire le richieste in arrivo fuori orario. Una sera, un potenziale acquirente chiama e dice solo una cosa: "Vorrei informazioni sull'annuncio A7X-4821."

L'agente IA risponde. Con sicurezza, in modo fluente, con tutti i dettagli giusti. Solo che i dettagli erano sbagliati. Metratura, piano, orientamento, prezzo — tutti leggermente ma significativamente diversi dall'annuncio reale. L'acquirente si presenta all'appuntamento del giorno dopo con aspettative molto precise. L'agente umano passa i primi dieci minuti a ricondurlo alla realtà.

Non era un problema di LLM. Era un problema di architettura. L'agente non stava davvero cercando l'immobile A7X-4821 nel database. Stava cercando qualcosa semanticamente simile a quella stringa di caratteri. E sono cose del tutto diverse.

Il problema nascosto: come un agente "cerca" davvero le informazioni

Quando costruiamo un agente vocale IA per un'azienda, una delle decisioni più critiche è questa: come accede l'agente alle informazioni specifiche di quell'azienda?

Un LLM, da solo, non sa nulla degli annunci di un'agenzia immobiliare, del sistema di gestione pazienti di una clinica o del magazzino di un e-commerce. Quella conoscenza deve arrivare dall'esterno.

Ma come? Esistono due approcci fondamentalmente diversi: RAG e MCP. Scegliere quello sbagliato per il compito sbagliato produce esattamente il tipo di errore descritto sopra.

RAG: quando l'IA "legge" prima di rispondere

RAG — Retrieval-Augmented Generation — è la tecnica più adottata per collegare un LLM a una base di conoscenza esterna. In modo semplificato, funziona così:

  1. I documenti di un'azienda (schede prodotto, FAQ, manuali, policy) vengono convertiti in vettori numerici — i cosiddetti embedding — e salvati in un database vettoriale.

  2. Quando arriva la domanda di un utente, il sistema cerca nel database i documenti semanticamente più vicini alla query.

  3. Quei frammenti vengono inseriti nel prompt del LLM come contesto aggiuntivo.

  4. Il LLM genera una risposta basandosi su quel contesto recuperato.

È un approccio potente, maturo, ed eccellente per alcuni casi d'uso. Se un cliente chiede "qual è la vostra politica sui resi?", RAG recupera il documento giusto e l'agente risponde in modo preciso. Funziona bene con contenuti testuali relativamente stabili, e quando la domanda è semantica — stai cercando un concetto, non un valore esatto.

Il problema emerge quando la ricerca non è semantica ma esatta. Quando l'utente non chiede "parlami degli appartamenti in centro", ma specificamente: "A7X-4821."

Un codice alfanumerico non ha semantica. Non è vicino né lontano da altri codici in uno spazio vettoriale. In questo caso, una ricerca per similarità recupera il documento più simile — che potrebbe essere un immobile con caratteristiche comparabili, ma non proprio quello specifico. Il rischio di restituire informazioni errate è strutturalmente alto.

Come osserva LlamaIndex in un'analisi tecnica dettagliata: la ricerca semantica tramite un database vettoriale eccelle nel trovare documenti o passaggi pertinenti, ma fatica con query strutturate che richiedono la comprensione di relazioni, vincoli e logiche complesse — e con qualsiasi scenario text-to-SQL in cui è necessario un filtraggio preciso dei dati.LlamaIndex: MCP uccide la ricerca vettoriale?

MCP: quando l'IA interroga direttamente i sistemi

MCP — Model Context Protocol — è un protocollo aperto introdotto da Anthropic alla fine del 2024 che cambia radicalmente il paradigma. Invece di inserire frammenti di testo in un prompt, MCP consente al LLM di interrogare direttamente sistemi esterni tramite interfacce strutturate: database, API, CRM, piattaforme di gestione, calendari.

La differenza concettuale è chiara:

  • Con RAG, l'agente riceve testo e ragiona su di esso.

  • Con MCP, l'agente effettua una chiamata a un sistema reale e riceve dati strutturati e verificati.

Tornando all'esempio immobiliare: con un'integrazione MCP, quando l'utente dice "A7X-4821", l'agente non esegue una ricerca semantica. Esegue una query precisa sul database degli annunci: GET /listings?code=A7X-4821. Riceve un oggetto JSON con tutti i campi di quell'immobile — metratura, piano, orientamento, prezzo, stato — esattamente come esistono nel sistema di gestione, in tempo reale. Nessuna interpretazione. Nessuna somiglianza approssimativa. Nessun rischio di confondere quell'immobile con un altro.

Come dice Contentful: RAG recupera frammenti di testo non strutturati per dare al LLM contesto aggiuntivo su cui ragionare. MCP recupera dati strutturati e in tempo reale — tipicamente specifici dell'utente o dell'applicazione.Contentful: MCP vs RAG

Il confronto diretto: non "meglio o peggio" — "giusto o sbagliato per il compito"

Questa è la trappola in cui cadono molti team tecnici: cercare di stabilire quale approccio sia superiore in termini assoluti. La risposta corretta è che RAG e MCP risolvono problemi diversi. Usarli in modo intercambiabile è come usare un cacciavite invece di una chiave inglese — tecnicamente appartengono alla stessa famiglia di strumenti, ma i risultati sono molto diversi.


Dimensione

RAG

MCP

Tipo di dati ideale

Testo, documenti, PDF, FAQ

Database, API, CRM, sistemi di gestione

Tipo di ricerca

Semantica, per similitudine

Strutturata, per chiave esatta

Dati in tempo reale

No (dati indicizzati, possono essere obsoleti)

Sì (query live al sistema)

Ricerca per codice/ID

Rischiosa

Nativa e precisa

Ampia conoscenza del dominio

Eccellente

Non ottimale

Complessità di configurazione

Moderata

Più alta — richiede integrazione con i sistemi

Latenza

Bassa (ricerca vettoriale veloce)

Variabile (dipende dall'API esterna)

Per chi vuole approfondire i confronti tecnici e i benchmark, ecco alcuni dei riferimenti più solidi nel settore:

Casi reali: dove RAG fallisce e dove MCP eccelle

Abbastanza teoria. Ecco come questa differenza si manifesta nella pratica, settore per settore.

🏠 Settore immobiliare: la trappola del codice alfanumerico

Abbiamo già visto l'esempio. Ma vale la pena capire perché RAG fallisce in modo così sistematico in questo contesto.

Un'agenzia immobiliare può avere migliaia di annunci nel proprio database. Molti sono simili: appartamenti in città, tre camere, stessa fascia di prezzo. Quando l'utente dice "A7X-4821", il sistema RAG cerca nello spazio vettoriale la corrispondenza più vicina. Trova qualcosa di simile — un documento che menziona in parte quel codice, oppure un annuncio con caratteristiche comparabili. Il margine di errore è reale e ricorrente.

Con MCP, l'agente esegue una query diretta: codice uguale A7X-4821. Un risultato. Dati aggiornati. Se quell'immobile è stato venduto ieri sera, l'agente lo sa e lo dice all'utente. Con RAG, avrebbe continuato a "ricordare" quell'immobile come disponibile fino al successivo aggiornamento dell'indice vettoriale.

🏥 Sanità: ricerca tramite ID nazionale o numero paziente

Una clinica privata usa un agente IA per gestire le chiamate dei pazienti: prenotazioni, risultati degli esami, accesso alle cartelle cliniche.

Il paziente chiama e dice: "Sono John Smith, nato il 12 marzo 1980, vorrei sapere quando è il mio prossimo appuntamento."

Con RAG, il sistema dovrebbe avere una copia indicizzata dei dati del paziente — il che solleva immediatamente seri problemi di conformità al GDPR e di accuratezza in tempo reale. E anche con quei dati indicizzati, cercare tramite un identificativo del paziente in uno spazio vettoriale è tutt'altro che affidabile: due ID diversi sono equidistanti l'uno dall'altro in un embedding — non c'è semantica su cui lavorare.

Con MCP, l'agente chiama direttamente il sistema di gestione della clinica usando l'identificativo del paziente come chiave di ricerca. Recupera la pianificazione del paziente, aggiornata al secondo. Può rispondere con precisione, modificare gli appuntamenti, inviare promemoria — tutto tramite lo stesso canale, in modo sicuro e con un audit trail completo.

🛒 E-commerce: l'SKU che non appare mai correttamente

Un'azienda di elettronica riceve centinaia di chiamate ogni giorno su prodotti specifici: "Ho l'articolo SKU-887-BLK nel carrello — è ancora disponibile? Quanto tempo serve per la spedizione espressa?"

RAG può aver indicizzato le schede prodotto, ma quelle schede non riflettono l'inventario in tempo reale. "Disponibile" in un documento statico non significa nulla se la scorta è finita questa mattina. E cercare per codice SKU, come abbiamo stabilito, è strutturalmente inaffidabile in un modello vettoriale.

Con MCP, l'agente interroga direttamente il sistema del magazzino con lo SKU esatto. Ottiene disponibilità reale, tempi di consegna attuali, eventuali varianti disponibili. La risposta è precisa, utile e non richiede alcuna interpretazione semantica.

⚖️ Legale e conformità: numeri di fascicolo e riferimenti normativi precisi

Uno studio legale integra un agente IA per gestire le richieste dei clienti fuori orario. Il cliente chiede: "Qual è lo stato del fascicolo 2024-NY-004417?"

I fascicoli sono documenti complessi e riservati, aggiornati frequentemente. Un sistema RAG che li indicizza crea un doppio problema: la riservatezza dei dati viene compromessa dal processo di indicizzazione e gli aggiornamenti restano sempre indietro rispetto all'evoluzione reale del caso.

MCP consente all'agente di interrogare il sistema di gestione dello studio con il numero di fascicolo come chiave primaria, restituendo solo le informazioni che quel cliente specifico è autorizzato a vedere — in tempo reale, senza che una copia dei dati esca mai dal perimetro del sistema.

🏦 Banking: saldo, transazioni, operazioni in tempo reale

Una banca o una fintech vuole che il proprio agente vocale risponda a domande come "Qual è il mio saldo attuale?" oppure "C'è stato un addebito di 47,90 $ il 9 maggio?"

Questi dati cambiano continuamente. RAG sui dati bancari semplicemente non è praticabile: il tempo tra gli aggiornamenti dell'indice e la risposta alla query è già sufficiente per rendere i dati obsoleti. E la ricerca semantica su numeri di conto e importi delle transazioni è, ancora una volta, l'approccio sbagliato per un problema strutturato.

MCP, in questo contesto, è l'unica architettura che abbia senso: una query diretta al sistema bancario, con autenticazione e autorizzazione gestite a livello di protocollo, che restituisce dati in tempo reale accurati al millisecondo.

La conclusione: RAG e MCP non competono — si completano a vicenda

Dopo tutti questi esempi, potrebbe sembrare che MCP sia sempre la scelta migliore. Non è così.

RAG resta lo strumento ideale per tutto ciò che è testuale, stabile e basato su conoscenza semantica — FAQ di prodotto, policy aziendali, manuali tecnici, contenuti del sito web. Tutto ciò che un utente potrebbe chiedere in cento modi diversi, e per cui non esiste una "query esatta" da eseguire su un database strutturato.

La vera abilità — quella che distingue un'architettura IA ben progettata da una mediocre — sta nel sapere quale approccio usare per ogni tipo di richiesta, in modo dinamico, durante la conversazione.

Come osservano gli analisti di Airbyte: RAG eccelle nel fondare le risposte su conoscenza statica e non strutturata, mentre MCP consente un accesso sicuro a dati strutturati e dinamici. Insieme, combinano un basso overhead di token per il contesto storico con garanzie di freschezza per i dati operativi.

Come gestiamo questo aspetto in callin.io

In callin.io, la scelta tra RAG e MCP non è una decisione architetturale presa una sola volta durante la configurazione. È una decisione dinamica, presa dall'agente a ogni turno conversazionale, in base al tipo di richiesta ricevuta.

Quando un utente pone una domanda aperta — "come funziona il piano premium?", "quali sono i vostri orari?", "qual è la differenza tra il modello A e il modello B?" — l'agente accede alla knowledge base RAG, ottimizzata per la ricerca semantica sui contenuti documentali.

Quando la richiesta diventa precisa — un codice, un ID, uno stato, una disponibilità in tempo reale — l'agente passa a una chiamata MCP verso il sistema giusto: CRM, piattaforma di gestione, database prodotti, calendario, sistema di ticketing.

Questa orchestrazione intelligente tra RAG e MCP si integra con la nostra tecnologia LLM Switcher (descritta nel nostro articolo precedente): non solo il modello si adatta al compito, ma anche la fonte di conoscenza si adatta al tipo di query. Il risultato è un agente che non "indovina" mai quando può sapere con certezza — e che non spreca risorse interrogando un database strutturato quando basterebbe una ricerca semantica.

Il principio finale: la precisione non è un lusso

Nel mondo degli agenti vocali IA applicati a casi d'uso aziendali reali, la precisione non è un dettaglio tecnico. È la differenza tra un cliente che si fida del sistema e uno che impara a non fidarsi mai più di una risposta automatica.

Un agente che confonde A7X-4821 con un altro immobile non commette un errore tollerabile. Genera sfiducia. E una volta che la sfiducia prende piede, è quasi impossibile eliminarla — indipendentemente da quanti dialoghi successivi vadano perfettamente.

Costruire agenti vocali IA precisi significa fare le scelte architetturali giuste, non solo scegliere il modello giusto. RAG e MCP sono entrambi strumenti fondamentali, ciascuno nel proprio dominio. Saperli usare insieme, in modo dinamico, è ciò che trasforma un agente IA da un chatbot glorificato in un sistema su cui un'azienda può davvero fare affidamento.

callin.io è una piattaforma di agenti vocali IA pensata per le aziende che non possono permettersi di sbagliare. Se vuoi scoprire come integriamo RAG e MCP nella nostra architettura, o testare un agente sul tuo stack, contattaci.