Funzione ai_search

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Importante

Questa funzionalità è in versione beta. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.

La ai_search() funzione recupera informazioni da uno o più indici di ricerca IA. Data una query in linguaggio naturale e indici configurati come fonti di conoscenza, la funzione genera query di ricerca ottimizzate, recupera e deduplica i risultati tra le fonti, li riclassifica per rilevanza e restituisce i documenti più rilevanti. Per impostazione predefinita, sintetizza anche una risposta in linguaggio naturale fondata sui documenti recuperati.

Utilizzarli ai_search per arricchire dati operativi con contesto rilevante su larga scala, costruire pipeline di generazione aumentata per il recupero batch (RAG) o esporre il recupero come strumento a un sistema AI composto — tutto da una singola chiamata di funzione SQL.

Sicurezza dei dati

I dati del documento vengono elaborati all'interno del perimetro di sicurezza di Databricks. Databricks non memorizza i parametri che vengono passati nelle chiamate di funzione AI, ma conserva i dettagli di esecuzione dei metadati, come la versione Databricks Runtime utilizzata.

Requirements

  • Databricks Runtime 18.2 o versione successiva.
  • Uno o più indici di ricerca AI da utilizzare come fonti di conoscenza.
  • Se stai usando computazione serverless, la versione dell'ambiente serverless deve essere impostata su 3 o superiore, poiché questo abilita funzionalità come VARIANT.
  • La ai_search funzione è disponibile utilizzando notebook Databricks, editor SQL, flussi di lavoro Databricks, job o pipeline dichiarative Spark su Lakeflow.

Sintassi

ai_search(query, knowledge_sources [, instructions] [, options])

Arguments

  • query: espressione STRING o VARIANT . La query di ricerca in lingua naturale. VARIANT l'input, come l'output di un'altra funzione AI, viene serializzato internamente in una stringa JSON.
  • knowledge_sources: A VARIANTSTRING o espressione contenente un array JSON di configurazioni sorgenti di conoscenza da cercare. Vedi Configurazione della sorgente della conoscenza. Puoi specificare fino a 10 fonti di conoscenza.
  • instructions: Un'espressione opzionale STRING fino a 4.000 caratteri. Istruzioni in linguaggio naturale che guidano la generazione delle query, la generazione dei filtri dei metadati e la riclassificazione. Ad esempio, 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: oggetto facoltativo MAP<STRING, STRING>. Chiavi supportate:
    • 'version': La versione funzionale da usare.
    • 'generate_answer': 'true' (impostazione predefinita) o 'false'. Quando 'true', la funzione sintetizza una risposta in linguaggio naturale fondata dai documenti recuperati e la restituisce nel answer campo. Imposta per 'false' restituire solo i documenti.

Configurazione dell'origine delle informazioni

L'argomento knowledge_sources è un array JSON. Ogni elemento è un {type, config} inviluppo. Il type campo identifica come ai_search si collega alla sorgente ed è separato dal nome della risorsa rivolta al cliente. Per un indice AI Search, imposta type il letterale vector_search. Il config campo contiene la configurazione specifica per la sorgente.

Chiave Obbligatorio Description
type Yes Il tipo di fonte di conoscenza. Attualmente è supportato solo vector_search.
config Yes Un oggetto contenente la configurazione specifica della sorgente. Per vector_search, vedi configurazione dell'indice di ricerca AI.

Configurazione dell'indice di ricerca AI

Per un indice AI Search impostato type a vector_search, config accetta le seguenti chiavi:

Chiave Obbligatorio Description
index_name Yes Il nome a tre livelli del Catalogo Unity dell'indice AI Search, ad catalog.schema.my_indexesempio .
text_col Yes La colonna nell'indice che contiene il testo del documento restituiva come page_content.
doc_uri_col Yes La colonna nell'indice che contiene l'URI del documento restituiva come doc_uri.
filter_columns No Una stringa separata da virgole o un array JSON di colonne disponibili per il filtraggio dei metadati. Quando omessi, la lista deriva dallo schema indicizzato, escludendo le colonne riservate, testuali e URI del documento.

Il seguente esempio configura un indice di ricerca AI come fonte di conoscenza:

[
  {
    "type": "vector_search",
    "config": {
      "index_name": "prod_catalog.docs.support_articles",
      "text_col": "article_body",
      "doc_uri_col": "article_url",
      "filter_columns": "product,language"
    }
  }
]

Per costruire un indice AI Search da documenti grezzi, usa ai_parse_document e ai_prep_search crea blocchi pronti per la ricerca in una tabella Delta. Poi crea un indice AI Search da quella tabella. Dopo che l'indice è online, usa il suo nome a tre livelli come index_name.

Restituzioni

A VARIANT con il seguente schema:

{
  "document": [
    {
      "page_content": STRING,  // Text content of the retrieved chunk
      "doc_uri": STRING,       // URI of the source document
      "metadata": MAP          // Additional metadata from the index
    }
  ],
  "answer": STRING             // Grounded answer synthesized from the retrieved
                               // documents, or null
}
Campo Tipo Description
document ARRAY Serie di documenti recuperati, ordinati per rilevanza.
document[].page_content STRING Contenuto testuale del blocco recuperato.
document[].doc_uri STRING URI del documento sorgente.
document[].metadata MAP Metadati aggiuntivi dall'indice.
answer STRING Una risposta concreta in linguaggio naturale sintetizzata dai documenti recuperati. null quando la generazione delle risposte è disabilitata o quando non vengono recuperati documenti.

Examples

Il seguente esempio cerca in un indice di ricerca AI e restituisce documenti classificati e una risposta fondata:

SELECT ai_search(
  'How do I configure auto-scaling for my SQL warehouse?',
  PARSE_JSON('[{
    "type": "vector_search",
    "config": {
      "index_name": "prod_catalog.docs.support_articles",
      "text_col": "article_body",
      "doc_uri_col": "article_url",
      "filter_columns": "product,language"
    }
  }]')
) AS result;

Ricerca multi-sorgente con istruzioni

Il seguente esempio cerca in due indici di ricerca AI e lo utilizza instructions per guidare la generazione delle query e il riordino:

SELECT ai_search(
  'What are the networking requirements for serverless SQL warehouses?',
  PARSE_JSON('[
    {
      "type": "vector_search",
      "config": {"index_name": "prod_catalog.docs.public_docs", "text_col": "content", "doc_uri_col": "doc_url"}
    },
    {
      "type": "vector_search",
      "config": {"index_name": "prod_catalog.docs.internal_kb", "text_col": "body", "doc_uri_col": "source_uri"}
    }
  ]'),
  'Focus on firewall rules and VPC/VNet configuration. Prefer official documentation over internal articles when both cover the same topic.'
) AS result;

Arricchisci una tabella con recupero e risposta generata

Il seguente esempio arricchisce ogni ticket di supporto con documentazione pertinente e una soluzione suggerita. Poiché la generazione delle risposte è attiva di default, la risoluzione suggerita è disponibile direttamente sul answer campo — non è necessario alcun passaggio di generazione separato.

SELECT
  ticket_id,
  customer_description,
  ai_search(
    customer_description,
    PARSE_JSON('[{
      "type": "vector_search",
      "config": {
        "index_name": "support.docs.product_documentation",
        "text_col": "content",
        "doc_uri_col": "doc_url"
      }
    }]'),
    'Find product documentation, known issues, and troubleshooting guides relevant to this support ticket.'
  ):answer::STRING AS suggested_resolution
FROM support.tickets.open_tickets;

Per controllare il formato di output o usare un modello specifico, imposta 'generate_answer' e 'false' concatena i documenti recuperati in ai_query invece.

Limitations

  • ai_search attualmente supporta solo indici di ricerca con IA. Impostato "type": "vector_search" per ogni fonte di conoscenza.
  • Puoi specificare fino a 10 fonti di conoscenza per chiamata.
  • L'argomentazione instructions è limitata a 4.000 caratteri.