ai_search Função

Aplica-se a:seleção marcada sim Databricks SQL seleção marcada sim Databricks Runtime

Importante

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.

A ai_search() função recupera informação de um ou mais índices de IA Search. Dada uma consulta em linguagem natural e índices configurados como fontes de conhecimento, a função gera consultas de pesquisa otimizadas, recupera e desduplica resultados entre fontes, reclassifica-os por relevância e devolve os documentos mais relevantes. Por defeito, também sintetiza uma resposta fundamentada em linguagem natural sobre os documentos recuperados.

Use ai_search para enriquecer dados operacionais com contexto relevante em escala, construir pipelines de geração aumentada por recuperação em lote (RAG) ou expor a recuperação como ferramenta a um sistema de IA composto — tudo a partir de uma única chamada de função SQL.

Segurança de dados

Os dados do documento são processados dentro do perímetro de segurança Databricks. O Databricks não armazena os parâmetros que são passados para as chamadas de função de IA, mas mantém detalhes de execução de metadados, como a versão de Runtime do Databricks utilizada.

Requisitos

  • Databricks Runtime 18.2 ou superior.
  • Um ou mais índices de IA Search para usar como fontes de conhecimento.
  • Se estiver a usar computação serverless, a versão do ambiente serverless deve estar definida para 3 ou superior, pois isto permite funcionalidades como VARIANT.
  • A ai_search função está disponível utilizando notebooks Databricks, editor SQL, fluxos de trabalho Databricks, jobs ou Spark Declarative Pipelines no Lakeflow.

Sintaxe

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

Arguments

  • query: Uma expressão STRING ou VARIANT. A consulta de pesquisa em linguagem natural. VARIANT a entrada, como a saída de outra função de IA, é serializada internamente para uma cadeia JSON.
  • knowledge_sources: A VARIANT ou STRING expressão contendo um array JSON de configurações de fonte de conhecimento para pesquisar. Ver configuração da fonte de conhecimento. Pode especificar até 10 fontes de conhecimento.
  • instructions: Uma expressão opcional STRING de até 4.000 caracteres. Instruções em linguagem natural que orientam a geração de consultas, geração de filtros de metadados e reclassificação. Por exemplo, 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: Um opcional MAP<STRING, STRING>. Teclas suportadas:
    • 'version': A versão da função a usar.
    • 'generate_answer': 'true' (por defeito) ou 'false'. Quando 'true', a função sintetiza uma resposta fundamentada em linguagem natural a partir dos documentos recuperados e devolve-a no answer campo. Defina para 'false' devolver apenas documentos.

Configuração da fonte de conhecimento

O knowledge_sources argumento é um array JSON. Cada elemento é um {type, config} envelope. O type campo identifica como ai_search se liga à fonte e é separado do nome do recurso voltado para o cliente. Para um índice de pesquisa por IA, defina type para o literal vector_search. O config campo contém a configuração específica da fonte.

Key Required Description
type Yes O tipo fonte de conhecimento. Atualmente, apenas vector_search é suportado.
config Yes Um objeto contendo a configuração específica da fonte. Para vector_search, veja configuração do índice de pesquisa do IA.

Configuração do índice de pesquisa por IA

Para um índice de Pesquisa por IA com type definido para vector_search, config aceita as seguintes chaves:

Key Required Description
index_name Yes O nome de três níveis do Unity Catalog do índice de pesquisa de IA, por catalog.schema.my_indexexemplo.
text_col Yes A coluna no índice que contém o texto do documento devolveu como page_content.
doc_uri_col Yes A coluna no índice que contém o URI do documento devolveu como doc_uri.
filter_columns No Uma cadeia separada por vírgulas ou array JSON de colunas disponível para filtragem de metadados. Quando omitida, a lista é derivada do esquema de índice, excluindo as colunas de URI reservado, texto e documento.

O exemplo seguinte configura um índice de pesquisa de IA como fonte de conhecimento:

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

Para construir um índice de pesquisa por IA a partir de documentos brutos, use ai_parse_document e ai_prep_search crie blocos prontos para pesquisa numa tabela Delta. Depois cria um índice de pesquisa por IA a partir dessa tabela. Depois de o índice estar online, use o seu nome de três níveis como index_name.

Returns

A VARIANT com o seguinte esquema:

{
  "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 Conjunto de documentos recuperados, ordenados por relevância.
document[].page_content STRING Conteúdo do texto do pedaço recuperado.
document[].doc_uri STRING URI do documento de origem.
document[].metadata MAP Metadados adicionais do índice.
answer STRING Uma resposta fundamentada em linguagem natural, sintetizada a partir dos documentos recuperados. null quando a geração de respostas está desativada ou quando não são recuperados documentos.

Examples

O exemplo seguinte pesquisa um índice de pesquisa por IA e retorna documentos classificados e uma resposta fundamentada:

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;

Pesquisa multi-fonte com instruções

O exemplo seguinte pesquisa em dois índices de AI Search e é utilizado instructions para orientar a geração de consultas e a reclassificação:

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;

Enriquecer uma tabela com recuperação e uma resposta gerada

O exemplo seguinte enriquece cada ticket de suporte com documentação relevante e uma solução sugerida. Como a geração de respostas está ativada por defeito, a resolução sugerida está disponível diretamente no answer campo — não é necessário um passo de geração separado.

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;

Para controlar o formato de saída ou usar um modelo específico, defina 'generate_answer' e 'false' encadeie os documentos recuperados em ai_query vez disso.

Limitações

  • ai_search atualmente suporta apenas índices de pesquisa por IA. Definido "type": "vector_search" para cada fonte de conhecimento.
  • Pode especificar até 10 fontes de conhecimento por chamada.
  • O instructions argumento limita-se a 4.000 caracteres.