Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In una pipeline standard di generazione aumentata dal recupero (RAG), l'orchestratore segue una sequenza fissa. Accetta una query utente, esegue una ricerca, assembla il contesto e chiama il modello linguistico. L'agente di orchestrazione non decide se eseguire la ricerca, gli indici da eseguire o il numero di passaggi di recupero da eseguire. Queste decisioni vengono prese quando si progetta la soluzione.
Il RAG agentico cambia questo modello. Anziché una pipeline fissa, un agente di intelligenza artificiale considera il recupero come uno strumento che può richiamare su richiesta. L'agente analizza la query dell'utente, decide quali strumenti invocare, valuta i risultati intermedi e itera finché non dispone di un contesto sufficiente per produrre una risposta fondata. Questo approccio consente il ragionamento a più passaggi, la pianificazione dinamica delle query e il coordinamento tra origini dati eterogenee.
Questo articolo descrive quando il RAG agentico offre un valore aggiunto che il RAG standard non può fornire, come strutturare il recupero delle informazioni come chiamate a strumenti e come implementare questo modello usando Microsoft Agent Framework e Foundry Agent Service.
Questo articolo fa parte di una serie. Leggi l'introduzione .
Quando usare il RAG agentico
Standard RAG funziona bene per le query che corrispondono a una singola ricerca in un singolo indice. Tuttavia, alcuni scenari superano ciò che una pipeline fissa può gestire. Considera il RAG agentico quando il tuo carico di lavoro presenta:
Ragionamento a più passaggi. La query utente richiede all'agente di raccogliere informazioni da un'origine, analizzare il risultato e quindi eseguire query su un'origine diversa in base a tale analisi. Ad esempio, un utente chiede "Quale dei nostri SKU di prodotto hanno richiami aperti negli ultimi 90 giorni?" L'agente recupera prima l'elenco di SKU da un catalogo interno e quindi cerca in un database normativo ogni SKU.
Selezione di origine dinamica. L'agente deve scegliere in fase di esecuzione quale origine dati interrogare. La domanda di un analista finanziario potrebbe richiedere dati di mercato da un'API, report interni sugli utili da un indice di ricerca e documenti depositati presso le autorità di regolamentazione da un archivio di documenti. L'agente decide quali fonti sono rilevanti anziché interrogarle tutte.
Scomposizione della query. Le domande complesse devono essere suddivise in query successive. Una richiesta come "Confronto dello SLA di affidabilità delle nostre distribuzioni in East US e West Europe" richiede due ricerche indipendenti e un confronto. L'agente scompone la query ed esegue ciascuna parte separatamente.
Perfezionamento iterativo. Il primo passaggio di recupero potrebbe non restituire un contesto sufficiente. L'agente valuta i risultati, identifica le lacune ed esegue più query con termini o filtri perfezionati.
Azione e recupero nello stesso flusso di lavoro. L'agente raccoglie informazioni e agisce. Ad esempio, un agente di supporto recupera la cronologia degli ordini di un cliente e quindi avvia una restituzione tramite un'API separata.
Se le query sono sufficientemente semplici da poter risolvere una singola ricerca su un singolo indice, rag standard è la scelta migliore. Ogni passaggio di ragionamento dell'agente aggiunge latenza, consumo di token e complessità. Usare rag agentic quando il ragionamento e la flessibilità giustificano questi costi.
Architettura
I diagrammi seguenti confrontano una pipeline RAG standard e un'architettura RAG agente.
RAG standard:
Agentec RAG:
Scaricare un file di Visio di questa architettura.
In RAG agentic il modello linguistico funge da motore di ragionamento. Riceve la query dell'utente, controlla gli strumenti disponibili e genera una chiamata di funzione che richiede dati specifici. Il runtime dell'agente esegue la funzione e restituisce il risultato al modello. Il modello decide se chiamare un altro strumento o produrre una risposta finale. Questo ciclo viene talvolta definito modello Reason + Act (ReAct).
Componenti di base
Un sistema RAG agentico ha i componenti seguenti:
Gli agenti sono entità che orchestrano il flusso di lavoro. L'agente è definito dalle istruzioni o dal prompt del sistema, da un modello linguistico assegnato e da un set di strumenti disponibili.
Gli strumenti sono funzioni o API che l'agente può richiamare. In un sistema RAG agentico, almeno uno strumento esegue il recupero. Altri strumenti possono eseguire calcoli, chiamare API esterne o attivare azioni aziendali.
I cicli di ragionamento sono cicli iterativi in cui l'agente pianifica l'azione successiva, chiama uno strumento e valuta il risultato. L'agente controlla quando arrestare l'iterazione e produrre una risposta finale.
Progettare il recupero come strumento
La principale decisione progettuale nel RAG agentico è come esporre il recupero delle informazioni come uno strumento che l'agente può invocare. Ogni strumento di recupero deve avere una descrizione chiara in modo che il modello linguistico comprenda quando e come usarlo.
Definire le descrizioni degli strumenti
La qualità delle descrizioni degli strumenti influisce direttamente sul modo in cui l'agente seleziona e chiama gli strumenti. Segui queste linee guida:
Specificare l'origine dati. Descrivere i dati a cui accede lo strumento. Ad esempio, "Cerca nella base di conoscenza delle politiche interne delle risorse umane informazioni su benefit per i dipendenti, politiche relative ai congedi e procedure di conformità" è più utile di "Cerca nei documenti".
Specificare i parametri obbligatori e facoltativi. Utilizza parametri tipizzati corredati di descrizioni. Uno strumento di ricerca può accettare una
querystringa (obbligatoria), untop_knumero intero (facoltativo, il valore predefinito è 5) e unfilteroggetto (facoltativo) per il filtro dei metadati.Descrivi lo schema di ritorno. Indicare al modello la forma di dati che potrebbe ricevere. I dati possono essere formattati come un elenco di blocchi di testo con punteggi di pertinenza o un oggetto strutturato con campi specifici. Queste informazioni aiutano l'agente a ragionare sui risultati.
Confronto tra uno strumento singolo e più strumenti
Decidere se esporre un singolo strumento di recupero generico o più strumenti specializzati.
| Avvicinarsi | Quando utilizzare | Considerazioni |
|---|---|---|
| Strumento di recupero singolo | Un indice, modelli di query uniformi, filtro semplice | Limita il carico di routing del modello. Ideale quando le query sono simili per struttura. |
| Più strumenti di recupero | Indici diversi, origini dati eterogenee o strategie di query diverse per ogni origine | L'agente può selezionare l'origine corretta per ogni domanda successiva. Mantenere il numero totale degli strumenti inferiore a 20 per mantenere l'accuratezza del modello. |
Ad esempio, un agente del supporto tecnico clienti potrebbe avere tre strumenti di recupero. Uno strumento esegue una ricerca nella Knowledge Base del prodotto. Un altro strumento esegue una query sull'API di gestione degli ordini in base all'ID ordine. Il terzo strumento cerca i runbook interni per la risoluzione dei problemi. L'agente decide quale strumento chiamare in base alla domanda dell'utente.
Modelli di implementazione degli strumenti
Quando si implementano gli strumenti di recupero, considerare i modelli seguenti:
Racchiudi la logica di ricerca esistente. Se si dispone già di una pipeline RAG con una configurazione di ricerca ottimizzata, ad esempio ricerca ibrida, reranking o filtri, eseguire il wrapping di tale logica in una funzione. L'agente chiama la funzione e la funzione gestisce i meccanismi di ricerca. Per indicazioni su come configurare queste funzionalità di ricerca, vedere Recupero delle informazioni.
Restituisci la giusta quantità di contesto. Restituisce i primi N blocchi più rilevanti con i relativi metadati. La restituzione di troppi risultati utilizza token e può diluire il segnale. Iniziare con tre-cinque risultati per chiamata di strumento e regolare in base alla valutazione.
Includere i metadati nei risultati. Restituisce titoli di origine, date, ID documento e punteggi di pertinenza insieme al testo. L'agente può usare questi metadati per valutare la qualità dei risultati e cita le origini nella risposta.
Supportare il filtro. Esporre filtri di metadati come intervallo di date, categoria di documenti e linea prodotto come parametri degli strumenti. Questa progettazione consente all'agente di restringere le ricerche senza basarsi solo sulla comprensione semantica del motore di ricerca.
Implementare l'agente RAG tramite il servizio Agent
Il servizio Agent offre una piattaforma gestita per la creazione, la distribuzione e il ridimensionamento degli agenti di intelligenza artificiale. È possibile usare gli strumenti integrati per il reperimento oppure registrare strumenti funzione personalizzati che incapsulano la propria logica di ricerca.
Usare gli strumenti di ricerca predefiniti
Il servizio Agent offre gli strumenti predefiniti seguenti che gestiscono il recupero senza codice personalizzato:
Ricerca file: Caricare documenti in un archivio vettoriale e l'agente li cerca automaticamente. Adatto per raccolte di documenti da piccole a medie per le quali si vuole eseguire la ricerca di vettori di infrastruttura zero. Per altre informazioni, vedere Strumento ricerca file per gli agenti.
Azure AI Search: Connetti un indice AI Search esistente al tuo agente. Usa questo approccio quando disponi di una pipeline di ricerca consolidata che usa analizzatori personalizzati, profili di punteggio o filtri di sicurezza. Per altre informazioni, vedere Strumento di ricerca di intelligenza artificiale.
Usa il function calling per il recupero personalizzato
Quando la logica di recupero è più complessa di quella supportata da uno strumento predefinito, definire uno strumento per le funzioni. Descrivere il nome, i parametri e lo scopo della funzione. L'agente chiama la funzione quando necessita di dati e l'applicazione esegue la ricerca e restituisce i risultati.
Usare questo approccio quando è necessario eseguire le attività seguenti:
- Eseguire query su più indici o archivi dati in una singola funzione.
- Applicare la pre-elaborazione personalizzata alla query dell'utente prima della ricerca.
- Post-elabora o riordina i risultati di ricerca prima di restituirli all'agente.
- Chiamare API non di ricerca come database o endpoint REST come parte del passaggio di recupero.
Controllare il ciclo di ragionamento
L’Agentic RAG introduce un ciclo di ragionamento che non è presente nel RAG standard. Esegui le seguenti azioni per gestire questo loop ed evitare costi fuori controllo e latenza:
Impostare i limiti di iterazione. Limitare il numero di chiamate degli strumenti per ogni richiesta utente. Un limite compreso tra 5 e 10 iterazioni è tipico. Se l'agente non converge a quel punto, la query potrebbe richiedere l'intervento umano o un approccio diverso.
Monitorare l'utilizzo dei token. Ogni chiamata di strumento aggiunge token di input e output. Tenere traccia dell'utilizzo cumulativo dei token per richiesta e impostare le soglie di budget.
Usare le istruzioni dell'agente per guidare il comportamento. Il prompt di sistema o le istruzioni dell'agente devono indicare all'agente quando interrompere le iterazioni. Un prompt di esempio potrebbe leggere "Se si raccolgono informazioni rilevanti da almeno due origini, sintetizzare una risposta. Non cercare più di tre volte per la stessa domanda successiva".
Implementa RAG agentico usando Agent Framework
Agent Framework è il successore di Kernel semantico e AutoGen. Combina astrazioni di agenti semplici con funzionalità aziendali, ad esempio la gestione dello stato basata su sessione, il middleware, i dati di telemetria e i flussi di lavoro basati su grafo. È possibile definire il recupero come strumento di funzione che l'agente chiama durante il ciclo di ragionamento.
Definire uno strumento per le funzioni di recupero (C#)
Usare AIFunctionFactory.Create per trasformare qualsiasi metodo in uno strumento funzione. L'attributo Description indica al modello quando chiamare la funzione e il significato di ogni parametro.
using System.ComponentModel;
using System.Text;
using Azure.AI.Projects;
using Azure.Identity;
using Azure.Search.Documents;
using Azure.Search.Documents.Models;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
[Description("Search the product documentation knowledge base for technical specifications, user guides, and troubleshooting articles.")]
static async Task<string> SearchProductDocs(
[Description("The search query that describes what information to find")] string query,
[Description("Maximum number of results to return")] int topK = 5)
{
// searchClient is your configured Azure AI Search client. Replace the
// placeholders with your search endpoint and index name.
var searchClient = new SearchClient(
new Uri("<your-search-endpoint>"),
"<your-index-name>",
new DefaultAzureCredential());
// Your search logic: hybrid search, reranking, filtering
var results = await searchClient.SearchAsync<SearchDocument>(
query, new SearchOptions { Size = topK });
var formatted = new StringBuilder();
await foreach (var result in results.Value.GetResultsAsync())
{
formatted.AppendLine($"Source: {result.Document["title"]}");
formatted.AppendLine($"Content: {result.Document["chunk"]}");
formatted.AppendLine();
}
return formatted.ToString();
}
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You are a product support agent. Use search tools to find relevant docs before answering. Cite your sources.",
tools: new[] { AIFunctionFactory.Create(SearchProductDocs) });
Console.WriteLine(await agent.RunAsync(
"How do I configure high availability for the gateway appliance?"));
Quando l'agente rileva una domanda effettiva, chiama SearchProductDocs per recuperare il contesto pertinente. Per saluti o chiarimenti, risponde direttamente senza chiamate agli strumenti.
Definire uno strumento per le funzioni di recupero (Python)
In Python, definire una funzione semplice con Annotated annotazioni di tipo e passarla al costruttore Agent. Le annotazioni docstring e parametri della funzione indicano al modello quando e come chiamare la funzione.
from typing import Annotated
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential
search_client = SearchClient(
endpoint="<your-search-service-endpoint>",
index_name="product-docs",
credential=DefaultAzureCredential(),
)
async def search_product_docs(
query: Annotated[str, "The search query that describes what information to find"],
top_k: Annotated[int, "Maximum number of results to return"] = 5,
) -> str:
"""Search the product documentation knowledge base for technical
specifications, user guides, and troubleshooting articles."""
# Your search logic: call Azure AI Search, a vector database, or another index
results = await search_client.search(query, top=top_k)
formatted = []
async for result in results:
formatted.append(f"Source: {result['title']}\nContent: {result['chunk']}")
return "\n\n".join(formatted)
agent = Agent(
client=FoundryChatClient(
project_endpoint="<your-foundry-project-endpoint>",
model="gpt-4o-mini",
credential=DefaultAzureCredential(),
),
name="ProductSupportAgent",
instructions="You are a product support agent. Use search tools to find relevant docs before answering. Cite your sources.",
tools=[search_product_docs],
)
response = await agent.run("How do I configure high availability for the gateway appliance?")
Combina più strumenti funzionali
È possibile passare più strumenti di recupero allo stesso agente. L'agente seleziona la funzione appropriata in base alla domanda dell'utente:
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You are a support agent. Use the appropriate search tool for each question.",
tools: new[] {
AIFunctionFactory.Create(SearchProductDocs),
AIFunctionFactory.Create(SearchOrderHistory),
AIFunctionFactory.Create(SearchRunbooks)] });
Distribuisci come agente ospitato
È possibile distribuire un agente di Agent Framework nel servizio Agent come agente ospitato. Crea un'immagine del contenitore per il codice dell'agente, esegui il push in Registro Azure Container e registrala tramite Foundry SDK o Azure Developer CLI. L'adattatore host, azure-ai-agentserver-agentframework, espone l'agente come API REST compatibile con il protocollo Foundry Responses.
Valutare il RAG agentico
L’Agentic RAG introduce dimensioni di valutazione che vanno oltre quelle del RAG standard. Oltre alle metriche che la fase di valutazione end-to-end del modello linguistico comprende, valuta i seguenti aspetti della tua soluzione:
Accuratezza della selezione degli strumenti
Misurare la frequenza con cui l'agente seleziona lo strumento corretto per una query specifica. Creare un set di test di query con le selezioni degli strumenti previste e confrontare le chiamate effettive dell'agente rispetto alle chiamate previste. Bassa accuratezza della selezione degli strumenti indica che le descrizioni degli strumenti necessitano di miglioramenti.
Efficienza del recupero
Tenere traccia del numero di chiamate agli strumenti per richiesta. Se l'agente effettua ripetutamente molte chiamate per domande che dovrebbero richiederne una o due, il problema potrebbe essere dovuto a descrizioni degli strumenti poco chiare, a risultati insufficienti per chiamata o a un prompt di sistema eccessivamente prudente.
Latenza da un'estremità all'altra
Ogni chiamata a uno strumento aggiunge un tempo di andata e ritorno al servizio di ricerca, oltre al tempo necessario al modello per ragionare sui risultati. Misurare la latenza totale delle richieste e suddividerla in base al componente, inclusi il tempo di ragionamento del modello, il tempo di esecuzione degli strumenti e il tempo di elaborazione dei risultati.
Costo per richiesta
Calcolare il costo totale per richiesta, incluse tutte le chiamate al modello (ogni passaggio di ragionamento e la generazione finale) e tutte le chiamate al servizio di ricerca. Confrontare questo costo con una baseline RAG standard per garantire che il ragionamento aggiuntivo fornisca un valore sufficiente.
Considerazioni relative alla progettazione
Esamina le seguenti considerazioni quando decidi se adottare il RAG agentico:
Latenza. Ogni passaggio di ragionamento aggiunge una chiamata di modello. Una richiesta RAG standard con una ricerca e una generazione possono richiedere da 2 a 3 secondi. Una richiesta RAG agentica con da tre a cinque chiamate agli strumenti potrebbe richiedere da 8 a 15 secondi. Valutare se questa latenza è accettabile per l'esperienza utente.
Costo. Più chiamate di modello e più token utilizzati per ogni richiesta significano costi più elevati. Valutare se il miglioramento della qualità della risposta giustifica l'aumento.
Affidabilità. L'agente potrebbe effettuare selezioni non ottimali degli strumenti, immettere cicli di ragionamento o non raggiungere una risposta. Imposta vincoli di sicurezza come limiti di iterazione, limiti di tempo e meccanismi di fallback quando l'agente non riesce a gestire una richiesta.
Osservabilità. Monitora ogni passaggio del ciclo di ragionamento. Registrare gli strumenti che l'agente chiama, i parametri usati, i risultati ricevuti e il relativo motivo. Il tracciamento degli agenti di Microsoft Foundry fornisce supporto integrato per questa strumentazione.
Sicurezza. Ogni strumento che l'agente può chiamare è una superficie di attacco. Convalidare i parametri degli strumenti, purificare gli input e applicare l'accesso con privilegi minimi a qualsiasi origine dati a cui si connettono gli strumenti. Non includere credenziali negli output dei tool.
Passaggi successivi
- Panoramica di Agent Framework
- Strumenti per le funzioni in Agent Framework
- Panoramica del servizio Agent
- Agenti ospitati nel servizio Agent
- Invocazione di funzioni negli agenti Foundry
- Panoramica degli strumenti per Agent per Agent Service