ai_search Función

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Importante

Esta característica se encuentra en su versión beta. Los administradores del área de trabajo pueden controlar el acceso a esta característica desde la página Vistas previas . Consulte Administrar versiones preliminares de Azure Databricks.

La ai_search() función recupera información de uno o más índices de búsqueda de IA. Dada una consulta en lenguaje natural y los índices configurados como fuentes de conocimiento, la función genera consultas de búsqueda optimizadas, recupera y desduplica resultados entre fuentes, los reclasifica por relevancia y devuelve los documentos más relevantes. Por defecto, también sintetiza una respuesta fundamentada en lenguaje natural sobre los documentos recuperados.

Úsalo ai_search para enriquecer datos operativos con contexto relevante a gran escala, construir pipelines de generación aumentada por recuperación por lotes (RAG) o exponer la recuperación como herramienta a un sistema de IA compuesta — todo desde una única llamada a una función SQL.

Seguridad de datos

Los datos del documento se procesan dentro del perímetro de seguridad de Databricks. Databricks no almacena los parámetros que se pasan a las llamadas a funciones de IA, pero sí conserva los detalles de la ejecución de metadatos, como la versión de ejecución de Databricks utilizada.

Requisitos

  • Databricks Runtime 18.2 o superior.
  • Uno o más índices de AI Search para usar como fuentes de conocimiento.
  • Si usas computación sin servidor, la versión del entorno serverless debe estar configurada en 3 o superior, ya que esto permite funciones como VARIANT.
  • La ai_search función está disponible utilizando cuadernos Databricks, editor SQL, flujos de trabajo Databricks, trabajos o Spark Declarative Pipelines en Lakeflow.

Syntax

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

Argumentos

  • query: una expresión STRING o VARIANT. La consulta de búsqueda en lenguaje natural. VARIANT la entrada, como la salida de otra función de IA, se serializa internamente en una cadena JSON.
  • knowledge_sources: A VARIANT o STRING expresión que contiene un array JSON de configuraciones fuente de conocimiento para buscar. Consulta Configuración de la fuente de conocimiento. Puedes especificar hasta 10 fuentes de conocimiento.
  • instructions: Una expresión opcional STRING de hasta 4.000 caracteres. Instrucciones en lenguaje natural que guían la generación de consultas, la generación de filtros de metadatos y la reclasificación. Por ejemplo: 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: un objeto opcional MAP<STRING, STRING>. Claves admitidas:
    • 'version': La versión de función a usar.
    • 'generate_answer': 'true' (valor predeterminado) o 'false'. Cuando 'true', la función sintetiza una respuesta fundamentada en lenguaje natural a partir de los documentos recuperados y la devuelve al answer campo. Configura para 'false' devolver solo documentos.

Configuración del origen de conocimiento

El knowledge_sources argumento es un arreglo JSON. Cada elemento es un {type, config} envoltorio. El type campo identifica cómo ai_search se conecta al código fuente y es independiente del nombre del recurso orientado al cliente. Para un índice de búsqueda de IA, se fija type en el literal vector_search. El config campo contiene la configuración específica de la fuente.

Key Obligatorio Description
type El tipo fuente de conocimiento. Actualmente, solo se admite vector_search.
config Un objeto que contiene la configuración específica de la fuente. Para vector_search, véase configuración del índice de búsqueda de IA.

Configuración del índice de búsqueda de IA

Para un índice de búsqueda de IA con type el conjunto en vector_search, config acepta las siguientes claves:

Key Obligatorio Description
index_name El nombre de tres niveles del Unity Catalog del índice de búsqueda de IA, por catalog.schema.my_indexejemplo.
text_col La columna en el índice que contiene el texto del documento devolvía como page_content.
doc_uri_col La columna del índice que contiene el URI del documento devolvía como doc_uri.
filter_columns No Una cadena separada por comas o un array JSON de columnas disponible para filtrar metadatos. Cuando se omite, la lista se deriva del esquema índice, excluyendo las columnas de URI reservadas, texto y documentos.

El siguiente ejemplo configura un índice de búsqueda de IA como fuente de conocimiento:

[
  {
    "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 un índice de búsqueda con IA a partir de documentos en bruto, utiliza ai_parse_document y ai_prep_search crea bloques listos para búsqueda en una tabla Delta. Luego crea un índice de búsqueda de IA a partir de esa tabla. Después de que el índice esté en línea, utiliza su nombre de tres niveles como index_name.

Returns

A VARIANT con el siguiente 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 relevancia.
document[].page_content STRING Contenido de texto del fragmento recuperado.
document[].doc_uri STRING URI del documento fuente.
document[].metadata MAP Metadatos adicionales del índice.
answer STRING Una respuesta realista en lenguaje natural sintetizada a partir de los documentos recuperados. null cuando la generación de respuestas está deshabilitada o cuando no se recuperan documentos.

Examples

El siguiente ejemplo busca en un índice de búsqueda de IA y devuelve documentos clasificados y una respuesta 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;

Búsqueda multifuente con instrucciones

El siguiente ejemplo busca en dos índices de búsqueda de IA y se utiliza instructions para guiar la generación y reclasificación de consultas:

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;

Enriquece una tabla con recuperación y una respuesta generada

El siguiente ejemplo enriquece cada ticket de soporte con documentación relevante y una solución sugerida. Como la generación de respuestas está activada por defecto, la resolución sugerida está disponible directamente en el answer campo — no se requiere un paso de generación 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 el formato de salida o usar un modelo específico, configura 'generate_answer' y 'false' encadena los documentos recuperados en ai_query en su lugar.

Limitaciones

  • ai_search actualmente solo soporta índices de búsqueda con IA. Establezca "type": "vector_search" para cada fuente de conocimiento.
  • Puedes especificar hasta 10 fuentes de conocimiento por llamada.
  • El instructions argumento está limitado a 4.000 caracteres.