Aller au contenu principal

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 :

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 :

réciproque de 1 plus la distance au carré

dist est la distance euclidienne entre la requête q et l'entrée d'index x:

Distance euclidienne, racine carrée de la somme des différences au carré

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 :

Équation RRF pour ANN

Équation RRF pour la recherche par mot-clé

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 :

normalisation

Le score final pour chaque document est calculé comme suit :

Score final

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 :

  1. Calcul des intégrations de query. La query peut inclure des filtres de métadonnées.
  2. Effectuer une recherche de similarité pour identifier les documents les plus pertinents.
  3. Retournez les documents les plus pertinents et ajoutez-les à la query.

Index de recherche IA, Databricks calcule les intégrations

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.

remarque

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 :

  1. Une query se compose d'embeddings et peut inclure des filtres de métadonnées.
  2. Effectuez une recherche de similarité pour identifier les documents les plus pertinents. Retourne les documents les plus pertinents et les ajoute à la query.

Index de recherche IA, embeddings précalculés

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 :

Index AI Search, embeddings précalculés sans synchronisation automatique

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.

remarque

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.

remarque

Un QPS élevé est disponible uniquement pour les endpoints standard.

  • Les Standard Endpoint ont une capacité de 320 millions de vecteurs à la dimension 768.

  • 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

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

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

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

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 _id est 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.

Ressources supplémentaires