Impostare lo sforzo di ragionamento per il recupero (anteprima)

Nota

Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.

Importante

Le funzionalità, le funzionalità o le proprietà contrassegnate (anteprima) non sono coperte da un contratto di servizio, non sono consigliate per i carichi di lavoro di produzione e potrebbero cambiare o essere vincolate prima che diventino disponibili a livello generale. Le condizioni di anteprima Azure AI Search si applicano a tutte le funzionalità di anteprima, indipendente o parte di una funzionalità disponibile a livello generale.

Nel recupero agentico è possibile specificare il livello di elaborazione LLM (Large Language Model) per la pianificazione delle query e la formulazione delle risposte. Usare il tentativo di ragionamento di recupero (anteprima) per impostare i livelli di elaborazione LLM che influiscono sui costi e sulla latenza. L'elaborazione LLM aggiuntiva migliora la pertinenza, ma richiede anche più tempo e usa risorse LLM fatturabili.

È possibile impostare questa proprietà in una Knowledge Base o in una richiesta di recupero. L'impostazione della base di conoscenza definisce il valore predefinito per tutte le query, mentre l'impostazione della richiesta di recupero sovrascrive tale valore predefinito per ogni singola query. Se nessuna delle due impostazioni è presente, il servizio usa low.

Supporto per l'utilizzo

Portale di Azure Portale di Microsoft Foundry .NET SDK Python SDK JAVA SDK JavaScript SDK API REST
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Prerequisiti

  • Una base di conoscenza esistente con almeno una fonte di conoscenza e una configurazione del modello.

  • Autorizzazione per aggiornare ed eseguire query sulle knowledge base. Configurare l'autenticazione senza chiave con i ruoli collaboratore del servizio di ricerca e lettore di dati dell'indice di ricerca assegnati all'account utente (scelta consigliata) o usare una chiave API di amministrazione.

  • Pacchetto di anteprima Azure.Search.Documents più recente: dotnet add package Azure.Search.Documents --prerelease

  • Per l'autenticazione senza chiave, il Azure.Identity pacchetto: dotnet add package Azure.Identity

  • Pacchetto di anteprima azure-search-documents più recente: pip install --pre azure-search-documents

  • Per l'autenticazione senza chiave, il azure-identity pacchetto: pip install azure-identity

Scegliere un tipo di ragionamento

Scegliere uno sforzo di ragionamento basato sul compromesso desiderato tra latenza, costo e profondità di recupero.

Livelli di sforzo nel ragionamento

Livello Descrizione Raccomandazione Limiti
minimal Disabilita la pianificazione delle query basata su LLM per offrire il costo e la latenza più bassi per il recupero agentico. Esegue ricerche dirette di testo e vettori tra le origini delle informazioni elencate nella Knowledge Base e restituisce i passaggi corrispondenti migliori. Poiché tutte le origini delle informazioni nella Knowledge Base sono sempre oggetto di ricerca e non viene eseguita alcuna espansione delle query, il comportamento è prevedibile e facile da controllare. Significa anche che la alwaysQueryKnowledgeSource proprietà in una richiesta di recupero viene ignorata. Usare minimal per le migrazioni dall'API di ricerca o per gestire manualmente la pianificazione delle query.
low La modalità predefinita di recupero agentico, che esegue un singolo passaggio della pianificazione delle query basata su LLM e la selezione dell'origine delle informazioni. Il motore di recupero agentico genera query secondarie e le distribuisce alle fonti di conoscenza selezionate, quindi unisce i risultati. È possibile abilitare la sintesi delle risposte (anteprima) per produrre una risposta basata sul linguaggio naturale con citazioni inline. Usare low quando si vuole un equilibrio tra latenza minima ed elaborazione più approfondita.
  • 5.000 token di risposta.
  • Massimo 50 documenti per la classificazione semantica e 10 documenti se il ranker semantico usa la classificazione L3.
medium Aggiunge una ricerca più approfondita e uno stack di recupero avanzato al recupero agentico per ottimizzare la completezza. Dopo la prima ricerca, un classificatore semantico ad alta precisione valuta i documenti recuperati. Se i risultati iniziali non sono sufficientemente rilevanti, il servizio esegue un'iterazione di completamento usando un piano di query modificato. Usare medium per ottimizzare l'utilità del recupero delle informazioni assistito da LLM.
  • 10.000 token di risposta.
  • Massimo 50 documenti per la classificazione semantica e 20 documenti se il ranker semantico usa la classificazione L3.
  • Disponibile nelle aree selezionate.
auto Inizia con un passaggio di recupero leggero. Se la prima fase fornisce un contesto sufficiente, il servizio restituisce il risultato. In caso contrario, prosegue con la pianificazione delle query basata su LLM, fino a un livello di impegno medio. Usare auto quando si vuole che il servizio bilancia la profondità e la latenza del recupero per ogni richiesta.
  • Richiede l'API REST 2026-08-01-preview.
  • Richiede un modello nella Knowledge Base.
  • Disponibile in tutte le aree che supportano il recupero agentico.
  • Le versioni precedenti dell'API restituiscono 400 Bad Request.

Ricerca iterativa per il recupero di supporti

Un tentativo di ragionamento medio di recupero fornisce una ricerca iterativa se i risultati iniziali non sono sufficientemente rilevanti. Viene chiamato un modello di classificatore semantico aggiuntivo per determinare se è necessaria una seconda iterazione.

Classificatore semantico:

  • Riconosce quando c'è un contesto sufficiente per rispondere alla domanda.

  • Ritenta quando i risultati sono insufficienti, utilizzando le informazioni esistenti come contesto. Le nuove query potrebbero eseguire il drill-down per ottenere dettagli più mirati o ampliare la ricerca. Il registro delle attività nella risposta mostra le query generate utilizzate per una risposta più completa.

  • Rivalutazioni utilizzando la classificazione L3. L'intervallo è identico alla classificazione L2, un intervallo assoluto compreso tra zero e 4,0.

C'è un solo tentativo. Ogni iterazione aggiunge latenza e costi, quindi il sistema vincola i tentativi a un solo passaggio. Una seconda iterazione aggiunge token di input alla pipeline di query, che aggiunge al conteggio complessivo dei token di input fatturabili.

L'iterazione può riutilizzare le origini conoscenze esistenti o scegliere origini diverse. Il secondo passaggio seleziona l'origine delle informazioni più promettente per fornire le informazioni mancanti.

Supporto dell'area per il recupero medio

È possibile impostare un tentativo di recupero medio se il servizio di ricerca si trova in una delle aree seguenti:

  • Stati Uniti orientali 2
  • Stati Uniti orientali
  • Stati Uniti centro-meridionali
  • Stati Uniti occidentali 3
  • Stati Uniti occidentali 2
  • Stati Uniti occidentali
  • Germania centro-occidentale
  • Europa settentrionale
  • Svizzera settentrionale
  • Svezia centrale
  • Spagna centrale
  • Regno Unito meridionale
  • Corea centrale
  • Giappone orientale
  • Asia sud-orientale

Impostare lo sforzo di ragionamento in una Knowledge Base

Impostare retrievalReasoningEffort in una definizione della Knowledge Base per stabilire l'impostazione predefinita per le query. Lo auto sforzo di ragionamento richiede una configurazione del modello. L'esempio seguente mantiene la configurazione models esistente knowledgeSources, imposta il livello di sforzo di ragionamento su auto e aggiorna la base di conoscenza.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;

var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";

var indexClient = new SearchIndexClient(endpoint, credential);
var knowledgeBase = (
    await indexClient.GetKnowledgeBaseAsync(knowledgeBaseName)).Value;
knowledgeBase.RetrievalReasoningEffort =
    new KnowledgeRetrievalAutoReasoningEffort();
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Riferimento:KnowledgeBase

Per usare un altro livello, sostituire KnowledgeRetrievalAutoReasoningEffort con KnowledgeRetrievalMinimalReasoningEffort, KnowledgeRetrievalLowReasoningEfforto KnowledgeRetrievalMediumReasoningEffort.

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.knowledgebases.models import (
    KnowledgeRetrievalAutoReasoningEffort,
)

endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"

index_client = SearchIndexClient(endpoint, credential)
knowledge_base = index_client.get_knowledge_base(knowledge_base_name)
knowledge_base.retrieval_reasoning_effort = (
    KnowledgeRetrievalAutoReasoningEffort()
)
index_client.create_or_update_knowledge_base(knowledge_base)

Riferimento:KnowledgeBase

Per usare un altro livello, sostituire KnowledgeRetrievalAutoReasoningEffort con KnowledgeRetrievalMinimalReasoningEffort, KnowledgeRetrievalLowReasoningEfforto KnowledgeRetrievalMediumReasoningEffort.

@api-version = 2026-08-01-preview
@knowledge-base-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}

PUT {{knowledge-base-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "{{knowledge-base-name}}",
  "knowledgeSources": [
    {
      "name": "{{knowledge-source-name}}"
    }
  ],
  "models": [
    {
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "{{aoai-endpoint}}",
        "authIdentity": null,
        "deploymentId": "{{model-deployment-name}}",
        "modelName": "{{model-name}}"
      }
    }
  ],
  "retrievalReasoningEffort": {
    "kind": "auto"
  }
}

Reference:Knowledge Bases - Creare o aggiornare

Per usare un altro livello, imposta retrievalReasoningEffort.kind su minimal, low o medium.

Impostare lo sforzo di ragionamento in una richiesta di recupero

Impostare retrievalReasoningEffort in una richiesta di recupero per eseguire l'override dell'impostazione predefinita della Knowledge Base per tale richiesta. Nell'esempio seguente viene inviato un messaggio, viene low usato per eseguire l'override del auto valore predefinito della sezione precedente e viene abilitata la sintesi delle risposte (anteprima).

using Azure.Identity;
using Azure.Search.Documents.KnowledgeBases;
using Azure.Search.Documents.KnowledgeBases.Models;

var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";

var kbClient = new KnowledgeBaseRetrievalClient(
    endpoint, knowledgeBaseName, credential);
var request = new KnowledgeBaseRetrievalRequest
{
    RetrievalReasoningEffort =
        new KnowledgeRetrievalLowReasoningEffort(),
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis
};

request.Messages.Add(
    new KnowledgeBaseMessage(
        content: new[] {
            new KnowledgeBaseMessageTextContent("What is the return policy?")
        }
    ) { Role = "user" }
);

var result = await kbClient.RetrieveAsync(request);

Reference:KnowledgeBaseRetrievalRequest

from azure.identity import DefaultAzureCredential
from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import (
    KnowledgeBaseMessage,
    KnowledgeBaseMessageTextContent,
    KnowledgeBaseRetrievalRequest,
    KnowledgeRetrievalOutputMode,
    KnowledgeRetrievalLowReasoningEffort,
)

endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"

kb_client = KnowledgeBaseRetrievalClient(
    endpoint,
    credential,
    knowledge_base_name=knowledge_base_name,
)
request = KnowledgeBaseRetrievalRequest(
    messages=[
        KnowledgeBaseMessage(
            role="user",
            content=[
                KnowledgeBaseMessageTextContent(
                    text="What is the return policy?"
                )
            ],
        )
    ],
    retrieval_reasoning_effort=KnowledgeRetrievalLowReasoningEffort(),
    output_mode=KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
)

result = kb_client.retrieve(request)

Reference:KnowledgeBaseRetrievalRequest

@api-version = 2026-08-01-preview
@retrieve-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}/retrieve

POST {{retrieve-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is the return policy?"
        }
      ]
    }
  ],
  "retrievalReasoningEffort": {
    "kind": "low"
  },
  "outputMode": "answerSynthesis"
}

Riferimento:Recupero della Conoscenza - Recuperare

La richiesta di recupero restituisce una risposta basata sulle origini delle informazioni configurate nella Knowledge Base.