Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime
Important
Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
La ai_search() fonction récupère des informations à partir d’un ou plusieurs index de recherche IA. Étant donné une requête en langage naturel et des index configurés comme sources de connaissances, la fonction génère des requêtes de recherche optimisées, récupère et déduplique les résultats entre les sources, les reclasse par pertinence et renvoie les documents les plus pertinents. Par défaut, il synthétise également une réponse ancrée en langage naturel sur les documents récupérés.
À utiliser ai_search pour enrichir des données opérationnelles avec un contexte pertinent à grande échelle, construire des pipelines de génération augmentée par récupération batch (RAG), ou exposer la récupération comme outil à un système d’IA composé — le tout à partir d’un seul appel de fonction SQL.
Sécurité des données
Vos données de document sont traitées dans le périmètre de sécurité Databricks. Databricks ne stocke pas les paramètres qui sont passés dans les appels de fonctions IA, mais conserve les détails de la gestion des métadonnées, comme la version d’exécution de Databricks utilisée.
Exigences
- Databricks Runtime 18.2 ou version ultérieure.
- Un ou plusieurs index IA Search à utiliser comme sources de connaissances.
- Si vous utilisez le calcul serverless, la version de l’environnement serverless doit être réglée à 3 ou plus, car cela permet des fonctionnalités comme
VARIANT. - La
ai_searchfonction est disponible via les notebooks Databricks, l’éditeur SQL, les flux de travail Databricks, les jobs ou les pipelines déclaratifs Spark sur Lakeflow.
Syntax
ai_search(query, knowledge_sources [, instructions] [, options])
Arguments
-
query: Une expressionSTRINGouVARIANT. La requête de recherche en langage naturel.VARIANTl’entrée, telle que la sortie d’une autre fonction IA, est sérialisée en interne sur une chaîne JSON. -
knowledge_sources: AVARIANTouSTRINGune expression contenant un tableau JSON de configurations de sources de connaissances à rechercher. Voir Configuration de la source de connaissances. Vous pouvez spécifier jusqu’à 10 sources de connaissances. -
instructions: Une expression optionnelleSTRINGpouvant compter jusqu’à 4 000 caractères. Des instructions en langage naturel qui guident la génération de requêtes, la génération de filtres de métadonnées et le reclassement. Par exemple :'Prefer official documentation over internal articles when both cover the same topic.' -
options: facultatifMAP<STRING, STRING>. Clés prises en charge :-
'version': La version fonctionnelle à utiliser. -
'generate_answer':'true'(par défaut) ou'false'. Lorsque'true', la fonction synthétise une réponse en langage naturel fondé à partir des documents récupérés et la renvoie sur leanswerchamp. Réglez sur'false'le retour des documents uniquement.
-
Configuration de la source de connaissances
L’argument knowledge_sources est un tableau JSON. Chaque élément est une {type, config} enveloppe. Le type champ identifie comment ai_search il se connecte à la source et est distinct du nom de la ressource destinée au client. Pour un index de recherche IA, on règle type le littéral vector_search. Le config champ contient la configuration spécifique à la source.
| Clé | Obligatoire | Description |
|---|---|---|
type |
Oui | Le type source de connaissances. Actuellement, seule vector_search est prise en charge. |
config |
Oui | Un objet contenant la configuration spécifique à la source. Pour vector_search, voir la configuration de l’index de recherche IA. |
Configuration de l’index de recherche IA
Pour un index IA Search avec type défini à vector_search, config accepte les clés suivantes :
| Clé | Obligatoire | Description |
|---|---|---|
index_name |
Oui | Le nom à trois niveaux du catalogue Unity de l’index de recherche IA, par catalog.schema.my_indexexemple. |
text_col |
Oui | La colonne de l’index contenant le texte du document a renvoyé sous page_contentla forme . |
doc_uri_col |
Oui | La colonne de l’index contenant l’URI du document est retournée comme doc_uri. |
filter_columns |
Non | Une chaîne séparée par des virgules ou un tableau JSON de colonnes disponible pour le filtrage des métadonnées. Lorsqu’elle est omise, la liste est dérivée du schéma d’index, à l’exclusion des colonnes réservées, de texte et d’URI de documents. |
L’exemple suivant configure un index de recherche IA comme source de connaissances :
[
{
"type": "vector_search",
"config": {
"index_name": "prod_catalog.docs.support_articles",
"text_col": "article_body",
"doc_uri_col": "article_url",
"filter_columns": "product,language"
}
}
]
Pour construire un index IA Search à partir de documents bruts, utilisez ai_parse_document et ai_prep_search créez des chunks prêts à la recherche dans une table Delta. Ensuite , créez un index de recherche IA à partir de cette table. Une fois l’index en ligne, utilisez son nom à trois niveaux comme index_name.
Returns
A VARIANT avec le schéma suivant :
{
"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
}
| Terrain | Type | Description |
|---|---|---|
document |
ARRAY |
Ensemble de documents récupérés, classés par pertinence. |
document[].page_content |
STRING |
Contenu textuel du fragment récupéré. |
document[].doc_uri |
STRING |
URI du document source. |
document[].metadata |
MAP |
Métadonnées supplémentaires de l’index. |
answer |
STRING |
Une réponse ancrée en langage naturel, synthétisée à partir des documents récupérés.
null lorsque la génération de réponses est désactivée ou lorsqu’aucun document n’est récupéré. |
Examples
Recherche de base
L’exemple suivant recherche un index IA Search et retourne des documents classés ainsi qu’une réponse fondée :
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;
Recherche multi-sources avec instructions
L’exemple suivant recherche deux index de recherche IA et l’utilise instructions pour orienter la génération et le reclassement des requêtes :
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;
Enrichir une table avec une récupération et une réponse générée
L’exemple suivant enrichit chaque ticket de support avec des documents pertinents et une solution suggérée. Comme la génération de réponses est activée par défaut, la résolution suggérée est disponible directement sur le answer terrain — aucune étape de génération distincte n’est requise.
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;
Pour contrôler le format de sortie ou utiliser un modèle spécifique, il faut définir 'generate_answer' et 'false' enchaîner les documents récupérés à ai_query la place.
Limitations
-
ai_searchActuellement, il ne supporte que les index de recherche IA. Définissez"type": "vector_search"pour chaque source de connaissance. - Vous pouvez spécifier jusqu’à 10 sources de connaissances par appel.
- L’argument
instructionsest limité à 4 000 caractères.