Databricks AI Recherche
Databricks AI Search (anciennement Databricks Vector Search) est une solution de recherche intégrée à la Databricks Data Intelligence Platform, ainsi qu'à ses outils de gouvernance et de productivité. Il permet la récupération pour les applications d'IA, telles que les systèmes RAG, les systèmes de recommandation, et la reconnaissance d'images et de vidéos, en trouvant les embeddings les plus similaires à une query.
La recherche vectorielle est un type de recherche optimisée pour la récupération des intégrations. Les intégrations sont des représentations mathématiques du contenu sémantique des données, généralement des données textuelles ou d'image. Les intégrations sont générées par un grand modèle de langage et constituent un élément essentiel de nombreuses applications d'IA qui dépendent de la recherche de documents ou d'images qui se ressemblent.
Avec Databricks AI Search, vous créez un index de recherche IA à partir d'une table Delta. L'index inclut des données incorporées avec des métadonnées. Vous pouvez ensuite interroger l'index à l'aide d'une API REST pour identifier les vecteurs les plus similaires et renvoyer les documents associés. Vous pouvez structurer l'index pour qu'il se synchronise automatiquement lorsque la table Delta sous-jacente est mise à jour.
AI Search prend en charge les éléments suivants :
- Recherche hybride par mots-clés et similarité.
- Recherche par mots-clés en texte intégral (Bêta) sur n'importe quel Endpoint, ou index en texte intégral dédiés (Bêta) sur les Endpoints optimisés pour le stockage.
- Filtrage.
- Reclassement.
- Listes de contrôle d'accès (ACL) pour gérer les Endpoint de recherche IA.
- Synchroniser uniquement les colonnes sélectionnées.
- Enregistrer et synchroniser les intégrations générées.
Comment fonctionne la recherche IA ?
Recherche IA utilise l'algorithme Hierarchical Navigable Small World (HNSW) pour ses recherches approximatives de voisins les plus proches (ANN) et la métrique de distance L2 pour mesurer la similarité des vecteurs d'incorporation. Si vous souhaitez utiliser la similarité cosinus, vous devez normaliser les incorporations de vos points de données avant de les introduire dans l'algorithme de recherche vectorielle. Lorsque les points de données sont normalisés, le classement produit par la distance L2 est le même que le classement produit par la similarité cosinus.
Recherche IA prend également en charge la recherche hybride par mots-clés et similarité, qui combine la recherche d'intégration basée sur les vecteurs avec les techniques de recherche traditionnelles basées sur les mots-clés. Cette approche fait correspondre les mots exacts dans la query tout en utilisant une recherche de similarité basée sur les vecteurs pour capturer les relations sémantiques et le contexte de la query.
En intégrant ces deux techniques, la recherche hybride de similarité par mots-clés récupère les documents qui contiennent non seulement les mots-clés exacts, mais aussi ceux qui sont conceptuellement similaires, fournissant ainsi des résultats de recherche plus complets et pertinents. Cette méthode est particulièrement utile dans les applications RAG où les données source contiennent des mots-clés uniques, tels que des SKU ou des identifiants, qui ne sont pas adaptés à une recherche de similarité pure.
Pour plus de détails sur l'API, consultez la référence du SDK Python et Query d'un index de recherche IA.
Calcul de recherche de similarité
Le calcul de recherche de similarité utilise la formule suivante :
où dist est la distance euclidienne entre la requête q et l'entrée d'index x:
Algorithme de recherche par mot-clé
Les scores de pertinence sont calculés à l'aide d'Okapi BM25. Toutes les colonnes de texte ou de chaîne sont recherchées, y compris les colonnes d'intégration de texte source et de métadonnées au format texte ou chaîne. La fonction de tokénisation sépare aux limites des mots, supprime la ponctuation et convertit tout le texte en minuscules.
Comment la recherche de similarité et la recherche par mot-clé sont combinées
Les résultats de la recherche par similarité et de la recherche par mot-clé sont combinés à l'aide de la fonction Reciprocal Rank Fusion (RRF).
Le RRF réévalue d'abord chaque document de chaque méthode à l'aide des scores :
rrf_param contrôle l'importance relative des documents mieux classés et moins bien classés. Selon la littérature, rrf_param est défini à 60.
Les scores sont normalisés de sorte que le score le plus élevé possible est de 1 en utilisant le facteur de normalisation suivant :
Le score final pour chaque document est calculé comme suit :
Les documents avec les scores finaux les plus élevés sont renvoyés.
Options pour fournir des intégrations de vecteurs
Pour créer un index de recherche IA dans Databricks, vous devez d'abord décider comment fournir des intégrations vectorielles. Databricks prend en charge trois options.
Option 1 : Delta Sync Index avec embeddings calculés par Databricks
Avec cette option, vous fournissez une table Delta source qui contient des données au format texte. Databricks calcule les intégrations à l'aide d'un modèle que vous spécifiez, et enregistre éventuellement les intégrations dans une table dans Unity Catalog. Lorsque la table Delta est mise à jour, l'index reste synchronisé avec la table Delta.
Le diagramme suivant illustre le processus :
- Calcul des intégrations de query. La query peut inclure des filtres de métadonnées.
- Effectuer une recherche de similarité pour identifier les documents les plus pertinents.
- Retournez les documents les plus pertinents et ajoutez-les à la query.

Option 2 : Delta Sync Index avec des intégrations autogérées
Avec cette option, vous fournissez une table Delta source qui contient des intégrations pré-calculées. Lorsque la table Delta est mise à jour, l'index reste synchronisé avec la table Delta.
Il n’est pas possible de convertir un index d’intégration autogéré en un index géré par Databricks. Si vous décidez ultérieurement d'utiliser des intégrations gérées, vous devez créer un nouvel index et recalculer les intégrations.
Le diagramme suivant illustre le processus :
- Une query se compose d'embeddings et peut inclure des filtres de métadonnées.
- Effectuez une recherche de similarité pour identifier les documents les plus pertinents. Retourne les documents les plus pertinents et les ajoute à la query.

Option 3 : Index d'accès direct au vecteur
Avec cette option, vous devez mettre à jour manuellement l'index à l'aide de l'API REST lorsque la table d'embeddings change.
Le diagramme suivant illustre le processus :

Option 4 : Index de recherche en texte intégral sur des endpoints optimisés pour le stockage (Bêta)
Avec cette option, vous créez un Index Delta Sync sur un Endpoint optimisé pour le stockage sans aucune colonne d'intégration. L'index prend en charge la recherche en texte intégral basée sur les mots-clés en utilisant le score BM25, sans nécessiter d'intégrations vectorielles. Ceci est utile pour la recherche de termes exacts, d’identifiants ou de mots-clés dans les données textuelles.
Vous pouvez également utiliser query_type="FULL_TEXT" pour effectuer des recherches par mots-clés sur des index de recherche IA existants sur les endpoints standard et optimisés pour le stockage. Cette option est destinée à la création d'un index dédié qui ne contient aucun embedding.
Les index de recherche en texte intégral dédiés ne sont disponibles que sur les Endpoint optimisés pour le stockage et nécessitent un mode de synchronisation triggered. Consultez Créer un index de recherche en texte intégral (Bêta) pour obtenir des instructions.
Options d'Endpoint
AI Search fournit les options suivantes afin que vous puissiez sélectionner la configuration d'Endpoint qui répond aux besoins de votre application.
Un QPS élevé est disponible uniquement pour les endpoints standard.
-
Les Standard Endpoint ont une capacité de 320 millions de vecteurs à la dimension 768.
- Avec les Endpoints standard, vous pouvez utiliser un QPS élevé pour prendre en charge un throughput soutenu élevé. Consultez Monter en charge le throughput de l'Endpoint de recherche IA avec un QPS élevé.
-
Les Endpoint optimisés pour le stockage ont une capacité plus importante (plus d'un milliard de vecteurs à la dimension 768) et offrent une indexation 10 à 20 fois plus rapide. Les queries sur les endpoints optimisés pour le stockage ont une latence légèrement accrue d'environ 250 ms. Les Tarifs pour cette option sont optimisés pour le nombre plus important de vecteurs. Pour plus d'informations sur les Tarifs, consultez la page des Tarifs AI Search. Pour plus d'informations sur la gestion des coûts AI Search, consultez le guide de gestion des coûts AI Search.
Vous spécifiez le type d'endpoint lors de sa création.
Voir aussi Limitations des Endpoint optimisés pour le stockage.
Comment configurer la recherche IA
Pour utiliser la recherche IA, vous devez créer les éléments suivants :
-
Un Endpoint de recherche IA. Cet endpoint sert l'index de recherche IA. Vous pouvez interroger et mettre à jour l'Endpoint à l'aide de l'API REST ou du SDK. Pour les instructions, consultez Créer un endpoint de recherche IA.
Les Endpoint montent en charge automatiquement pour prendre en charge la taille de l'index ou le nombre de requêtes simultanées. Les endpoints réduisent automatiquement leurs capacités lorsqu'un index est supprimé.
-
Un index de recherche IA. L'index de recherche IA est créé à partir d'une table Delta et est optimisé pour fournir des recherches de plus proches voisins approximatifs (ANN) en temps réel. L'objectif de la recherche est d'identifier les documents qui sont similaires à la query. Les index de recherche IA apparaissent dans et sont régis par Unity Catalog. Consultez Créer un index de recherche IA pour les instructions.
De plus, si vous choisissez que Databricks calcule les embeddings, vous pouvez utiliser un Endpoint d’APIs de modèle de fondation préconfiguré ou créer un Endpoint de service de modèle pour servir le modèle d’embedding de votre choix. Consultez les API de modèle de fondation à la carte ou Créez des Endpoint de service de modèle de fondation pour obtenir des instructions.
Pour interroger l'endpoint de déploiement de modèles, vous utilisez soit l'API REST, soit le SDK Python. Votre query peut définir des filtres basés sur n’importe quelle colonne dans la table Delta. Pour plus de détails, consultez Utiliser des filtres sur les queries, la référence de l'API ou la référence du SDK Python.
Exigences
- Workspace avec Unity Catalog activé.
- Compute serverless activé. Pour obtenir des instructions, voir Se connecter au compute Serverless.
- Pour les Endpoint standard, le flux de données de modification doit être activé pour la table source. Voir Utiliser le flux de données de modification sur Databricks.
- Pour créer un index de recherche IA, vous devez disposer des privilèges CREATE TABLE sur le schéma du catalogue où l'index sera créé.
La permission de créer et de gérer les endpoints de Recherche IA est configurée à l'aide de listes de contrôle d'accès. Consultez les ACL des Endpoint de Recherche IA.
Protection des données et authentification
Databricks met en œuvre les contrôles de sécurité suivants pour protéger vos données :
- Chaque requête client vers AI Search est logiquement isolée, authentifiée et autorisée.
- AI Search chiffre toutes les données au repos (AES-256) et en transit (TLS 1.2+).
AI Search prend en charge deux modes d'authentification : les Service Principal et les jetons d'accès personnel (PAT). Pour les applications de production, Databricks vous recommande d'utiliser des Service Principal, qui peuvent avoir une performance par query jusqu'à 100 msec plus rapide par rapport aux jetons d'accès personnels.
-
Jeton de Service Principal. Un administrateur peut générer un jeton de Service Principal et le transmettre au SDK ou à l'API. Consultez utiliser les Service Principals. Pour les cas d'usage de production, Databricks recommande d'utiliser un jeton de Service Principal.
Python# Pass in a service principal
vsc = AISearchClient(workspace_url="...",
service_principal_client_id="...",
service_principal_client_secret="..."
) -
Jeton d'accès personnel. Vous pouvez utiliser un jeton d'accès personnel pour vous authentifier auprès d'AI Search. Consultez le jeton d'authentification d'accès personnel. Si vous utilisez le SDK dans un environnement de notebook, le SDK génère automatiquement un jeton PAT pour l'authentification.
Python# Pass in the PAT token
client = AISearchClient(workspace_url="...", personal_access_token="...")
Les clés gérées par les clients (CMK) sont prises en charge sur les endpoints créés à partir du 8 mai 2024.
Surveiller l'utilisation et les coûts
Pour en savoir plus sur le monitoring de l'utilisation et des coûts associés aux index et Endpoint AI Search, consultez le guide de gestion des coûts AI Search.
Vous pouvez également interroger l'utilisation par politique d'utilisation. Consultez les politiques d'utilisation de la recherche IA.
Limites de taille des ressources et des données
Le tableau suivant résume les limites de ressources et de taille des données pour les Endpoint et index de recherche IA :
Ressource | Granularité | Limite |
|---|---|---|
AI Search Endpoint | Per Workspace | 500 |
Intégrations (index de synchronisation Delta) | Par Endpoint standard | Environ 320 000 000 à 768 dimensions d'intégration ~ 160 000 000 à 1536 de dimension d'intégration Environ 80 000 000 avec une dimension d’intégration de 3072 (s'adapte approximativement de façon linéaire) |
Incorporations (index Direct Vector Access) | Par Endpoint standard | ~ 2 000 000 à 768 dimensions d'intégration |
Embeddings (Endpoint optimisé pour le stockage) | Par endpoint optimisé pour le stockage | Environ 1 000 000 000 avec une dimension d'intégration de 768 |
Dimension d'intégration | Par index | 4096 |
Indices | Par endpoint | 50 |
Colonnes | Par index | 50 |
Colonnes | Types pris en charge : Bytes, short, integer, long, float, double, boolean, string, Timestamp, date, array | |
Champs de métadonnées | Par index | 50 |
Nom de l’index | Par index | 128 caractères |
Les limites suivantes s’appliquent à la création et à la mise à jour des index de recherche IA :
Ressource | Granularité | Limite |
|---|---|---|
Taille de ligne pour l'index Delta Sync | Par index | 100 Ko |
Taille de la colonne source d'intégration pour l'index Delta Sync | Par Index | 32 764 octets |
Limite de taille des requêtes d'insertion/mise à jour en masse pour l'index Vector direct | Par Index | 10 Mo |
Limite de taille des requêtes de suppression en masse pour l'index vectoriel direct | Par Index | 10 Mo |
Les limites suivantes s'appliquent à l'API de query.
Ressource | Granularité | Limite |
|---|---|---|
Longueur de la query | Par query | 32 764 caractères |
Jetons lors de l'utilisation de la recherche hybride | Par query | 1 024 mots ou caractères à 2 octets |
Conditions de filtre | Par clause de filtre | 1 024 éléments |
Nombre maximal de résultats renvoyés (recherche des plus proches voisins approximatifs) | Par query | 10 000 |
Nombre maximal de résultats renvoyés (recherche hybride par mots-clés et similarité) | Par query | 200 |
Nombre maximal de résultats renvoyés (recherche en texte intégral) | Par query | 200 |
Taille de la réponse | Par query | 10 Mo |
Limitations
- Le nom de colonne
_idest réservé. Si votre table source a une colonne nommée_id, renommez-la avant de créer un index de recherche IA. - Les autorisations au niveau des lignes et des colonnes ne sont pas prises en charge. Cependant, vous pouvez implémenter vos propres ACL au niveau de l'application à l'aide de l'API de filtrage.
- Vous ne pouvez pas cloner un index dans un autre workspace. Vous pouvez effectuer des requêtes entre Workspace à l'aide du Databricks SDK ou de la REST API.
- La capacité de l'index est provisionnée en fonction de la taille de la table source au moment de la création de l'index. Commencer avec une petite table source limite la croissance de l'index et peut entraîner des erreurs de capacité épuisée ; dimensionnez donc la table source pour qu'elle corresponde à votre volume de données attendu avant de créer l'index.
Limites des Endpoint optimisés pour le stockage
Les limitations de cette section s'appliquent uniquement aux Endpoint optimisés pour le stockage.
-
Le mode de synchronisation continue n'est pas pris en charge.
-
Les colonnes à synchroniser ne sont pas prises en charge.
-
La dimension d’intégration doit être divisible par 16.
-
La mise à jour incrémentielle est partiellement prise en charge. Chaque synchronisation doit reconstruire des parties de l'index AI Search.
- Pour les index gérés, toutes les intégrations précédemment calculées sont réutilisées si la ligne source n’a pas changé.
- Vous devez anticiper une réduction significative de bout en bout du temps requis pour une synchronisation par rapport aux endpoints standards. Les datasets avec 1 milliard d’embeddings devraient terminer une synchronisation en moins de 8 heures. Les datasets plus petits prendront moins de temps à se synchroniser.
-
Les workspaces conformes à FedRAMP ne sont pas pris en charge.
-
Les clés gérées par le client (CMK) ne sont pas prises en charge.
-
Pour utiliser un modèle d'incorporation personnalisé pour un index Delta Sync géré, l'aperçu Interrogation d'IA pour les modèles personnalisés et externes doit être activé. Consultez Gérer les aperçus Databricks pour savoir comment activer les aperçus.
-
Les endpoints optimisés pour le stockage prennent en charge jusqu'à 1 milliard d'intégrations de vecteurs de 768 dimensions. Si vous avez un cas d'utilisation à plus grande échelle, contactez votre équipe de compte.