Qu'est-ce qu'une base de données vectorielle ?
Qu'est-ce qu'une base de données vectorielle ?
Une base vectorielle est une base de données spécialisée qui stocke, gère et recherche des embeddings vectoriels de haute dimension afin de permettre la recherche par similarité sémantique.
Ces embeddings, générés par des modèles de machine learning, capturent les relations sémantiques au sein de données non structurées telles que le texte, les images ou l’audio, positionnant les éléments conceptuellement liés plus proches les uns des autres dans l’espace vectoriel afin que le système puisse classer les résultats selon leur pertinence. Les bases vectorielles indexent et stockent des représentations denses et éparses pour une récupération rapide, et elles servent généralement de base de connaissances externe qu’un grand modèle de langage (LLM) peut interroger pour fonder ses réponses sur des données fiables et atténuer le risque d’hallucination.
Plongements vectoriels
Que sont les plongements vectoriels et comment sont-ils créés ?
Les plongements vectoriels sont des tableaux numériques de valeurs à virgule flottante qui représentent des données telles que des mots, des phrases ou des documents entiers. Ils sont générés par des modèles de machine learning, tels que les grands modèles de langage, qui transforment les médias numériques en points dans un espace à haute dimension. Ce processus capture la signification sémantique sous-jacente et les relations des données d'origine. Par exemple, l'image d'un « golden retriever jouant dans un parc » pourrait être convertie en un plongement numériquement proche de celui du texte « chien heureux dehors ». Il est important de noter que les plongements créés par le modèle d'un fournisseur ne peuvent pas être compris par un autre ; par exemple, un plongement provenant d'un modèle OpenAI n'est pas compatible avec celui d'un autre fournisseur.
Que sont les vecteurs denses (plongements) ?
Les vecteurs denses sont des plongements numériques à haute dimension où presque tous les éléments sont des valeurs non nulles. Une caractéristique essentielle des vecteurs denses est que tous les vecteurs générés par un modèle particulier doivent avoir le même nombre fixe de dimensions, ce qui est une condition préalable à la mesure de la similarité. Par exemple, les plongements des modèles Azure OpenAI ont 1 536 dimensions. Généralement produits par des modèles de transformations, ils capturent une signification sémantique riche et nuancée, ce qui les rend parfaits pour la recherche de similarité sémantique. Un vecteur dense pour le mot « chat », par exemple, peut apparaître sous la forme [0.135, -0.629, 0.327, 0.366, ...].
Que sont les vecteurs épars (plongements) ?
Qu'est-ce que la recherche vectorielle ?
La recherche vectorielle est une technique qui permet de trouver des données similaires en les représentant sous forme de vecteurs numériques à haute dimension, souvent appelés « plongements ». Cette méthode est très polyvalente, car les modèles de machine learning peuvent générer des plongements pour tout type de média numérique, y compris le texte, les images et l'audio. Le concept fondamental consiste à transformer les données en un espace vectoriel où la distance géométrique entre les vecteurs indique leur similarité sémantique. Une recherche vectorielle est une opération de requête qui trouve les vecteurs les plus similaires à un vecteur de requête donné sur la base d'un indicateur de similarité spécifique. Par exemple, une recherche sur le mot « canin » pourrait correspondre sémantiquement à un document contenant le mot « chien », contrairement à la recherche traditionnelle par mot-clé, qui correspond au terme littéral plutôt qu'à sa signification sous-jacente.
Mesurer la similarité
Comment mesure-t-on la similarité vectorielle et la distance ?
Dans la recherche vectorielle, la similarité est quantifiée en calculant la distance ou l'angle entre deux vecteurs dans un espace à haute dimension ; les vecteurs qui sont plus proches sont considérés comme plus similaires sémantiquement. Les mesures courantes utilisées pour mesurer cette proximité incluent la similarité cosinus, la distance euclidienne, le produit scalaire, la distance de Hamming et la distance de Manhattan.
- La distance L2 (distance euclidienne) est la mesure la plus courante et représente la distance en ligne droite « à vol d'oiseau » entre deux points vectoriels.
- La distance L1 (distance de Manhattan) mesure la distance en additionnant les différences absolues des composantes du vecteur, comme si l'on naviguait dans un réseau urbain.
- La distance Linf (distance de Chebyshev) est la différence maximale le long d'une seule dimension.
- La similarité cosinus mesure le cosinus de l'angle entre deux vecteurs pour déterminer s'ils pointent dans une direction similaire, quelle que soit leur magnitude. Un score de 1 signifie que les vecteurs sont identiques, et –1 qu'ils sont opposés. C'est un choix courant pour les espaces de plongements normalisés, tels que ceux des modèles OpenAI.
- La similitude du produit scalaire prend en compte à la fois l'angle et la magnitude des vecteurs. Elle est équivalente à la similarité cosinus pour les vecteurs normalisés, mais elle est souvent plus efficace sur le plan computationnel.
- La distance de Hamming calcule le nombre de dimensions sur lesquelles deux vecteurs diffèrent.
- Le produit intérieur maximal (MaxSim) est une mesure de similarité utilisée lorsqu'un seul élément de données (comme un document) est représenté par plusieurs vecteurs (par exemple, un vecteur pour chaque mot). Il calcule la similarité en comparant chaque vecteur d'un document au vecteur le plus similaire de l'autre document, puis en agrégeant les résultats.
Algorithmes de rechercher efficaces
Qu'est-ce que la recherche des k plus proches voisins (kNN) ?
La recherche du plus proche voisin (kNN) est l'opération centrale de la recherche de similarité vectorielle : étant donné un vecteur de requête, elle trouve les k vecteurs de la base de données qui sont les plus proches de ce vecteur selon une métrique de distance choisie. Le « k » correspond simplement au nombre de résultats que vous souhaitez obtenir, par exemple, les 10 images de produits les plus similaires ou les 5 extraits de documents les plus pertinents pour une requête RAG. Une recherche exacte en kNN garantit qu'elle a trouvé les correspondances les plus proches en comparant la requête à chaque vecteur de l'index, ce qui est précis mais s'adapte mal à la montée en charge. C'est pourquoi les systèmes de production s'appuient généralement sur des méthodes approximatives.
Quelle est la différence entre la recherche kNN exacte et la recherche de voisin le plus proche approximatif (ANN) ?
Exact kNN compare un vecteur de requête à tous les vecteurs de l'ensemble de données afin de garantir qu'il renvoie les vraies correspondances les plus proches. Elle est précise mais coûteuse en termes de calcul, et le temps de latence augmente de façon linéaire avec la taille de l'index. La recherche par approximation du plus proche voisin (ANN) échange un peu de précision contre un gain important de rapidité en limitant la recherche à un sous-ensemble de vecteurs prometteurs plutôt que de les analyser tous. Dans la pratique, le rappel ANN est suffisamment élevé pour que la plupart des systèmes de recherche vectorielle de production l'utilisent par défaut, réservant le kNN exact aux petits ensembles de données ou aux cas où un rappel parfait est nécessaire.
Comment des algorithmes comme HNSW et ANN permettent-ils une recherche vectorielle efficace ?
La recherche de vecteurs similaires dans un ensemble de données volumineux et à haute dimension représente un défi considérable. Une approche par force brute, qui consiste à comparer un vecteur de requête à tous les autres vecteurs, est irréalisable sur le plan computationnel à mesure que l'ensemble de données s'agrandit. Ce problème est résolu à l'aide d'algorithmes approximative nearest neighbor (ANN). Ces techniques permettent de trouver rapidement les vecteurs les plus proches d'une requête sans effectuer de comparaison exhaustive. Un des algorithmes ANN courants est le hierarchical navigable small world (HNSW), qui organise les vecteurs en une structure graphique en couches où les vecteurs sont connectés en fonction de leur similarité, ce qui permet un parcours rapide. Cette méthode est plus efficace et plus précise qu'une recherche FLAT (force brute), qui est plus intensive en termes de calcul mais plus précise. En réduisant considérablement le champ de recherche, ces structures permettent de gagner énormément en vitesse, en échange d'une légère réduction, généralement acceptable, de la précision absolue.
Qu'est-ce qu'une recherche en plusieurs étapes dans les systèmes de recherche vectorielle ?
Une récupération en plusieurs étapes ou un framework de récupération (pour simplifier, nous pouvons également l'appeler pipeline de recherche) est un workflow orchestré qui définit la séquence d'étapes pour le traitement d'une requête. Cela comprend généralement des étapes telles que l'analyse de la requête, la recherche initiale à partir d'un ou plusieurs index (par exemple, en combinant la recherche lexicale et vectorielle pour une approche hybride), le filtrage des résultats et une étape finale de reclassement avant de renvoyer les résultats à l'utilisateur.
Quels sont les avantages de l'utilisation du framework de récupération pour la création de pipelines de recherche ?
Le principal avantage est sa modularité et sa flexibilité. Il permet aux développeurs de combiner facilement différentes stratégies de recherche et de classement (telles que la recherche hybride) et de construire des pipelines de récupération complexes à plusieurs étapes adaptés à des besoins spécifiques sans avoir à construire l'ensemble du système à partir de zéro.
Qu'est-ce que le reclassement sémantique ?
Le reclassement sémantique est un processus de deuxième étape qui améliore la pertinence des résultats de recherche. Après une première étape de recherche rapide qui récupère un large éventail de documents candidats, un modèle plus complexe mais plus précis est utilisé pour réorganiser ce petit ensemble afin d'obtenir un classement final plus précis.
Comment fonctionne un processus de « récupération et reclassement » en plusieurs étapes ?
Un pipeline de « récupération et reclassement » fonctionne en deux étapes distinctes :
- Récupération : une méthode de recherche efficace et évolutive (comme la recherche vectorielle ANN ou la recherche lexicale BM25) est utilisée pour récupérer un ensemble initial de documents candidats à partir de l'index complet.
- Reclassement : cet ensemble de candidats plus restreint est ensuite transmis à un modèle plus puissant (tel qu'un encodeur croisé) qui effectue une analyse plus approfondie de la relation sémantique entre la requête et chaque document, en les réorganisant afin d'améliorer la pertinence finale.
Quelle est la différence entre les architectures à double encodeur et à encodeur croisé pour le reclassement ?
- Un double encodeur génère des plongements distincts pour la requête et les documents de manière indépendante. Étant donné que les plongements de documents peuvent être précalculés et indexés, cette architecture est très rapide et est utilisée pour la phase initiale de récupération initiale.
- Un encodeur croisé traite la requête et le document ensemble comme une seule entrée. Cela lui permet de capturer des interactions contextuelles beaucoup plus profondes, ce qui le rend très précis mais aussi bien plus lent. En raison de son coût de calcul, il ne convient qu'à la phase de reclassement sur un petit ensemble de résultats candidats.
Stockage et optimisation des bases vectorielles
Comment les vecteurs sont-ils généralement stockés dans une base vectorielle, et quels défis de stockage se posent ?
Les vecteurs sont généralement stockés sous forme de tableaux de nombres à virgule flottante de 32 bits (float32). Le principal défi réside dans l'espace de stockage considérable requis : un seul vecteur à 384 dimensions occupe environ 1,5 Ko. Un index de 100 millions de documents peut donc voir sa taille multipliée par sept simplement en ajoutant un champ vectoriel. Étant donné que les algorithmes de recherche vectorielle tels que HNSW nécessitent que l'index soit chargé dans la mémoire RAM pour être performants, cela pose des défis importants en termes de coût de mémoire et de scalabilité.
Qu'est-ce que la quantification vectorielle ?
La quantification vectorielle est une technique de compression avec perte qui réduit les besoins en mémoire et en calcul d'un modèle en représentant ses paramètres avec moins de bits. Elle est particulièrement utile pour les LLM, qui peuvent comporter des milliards de paramètres. En convertissant des nombres flottants de haute précision float32 en entiers de moindre précision tels que int8 ou int4, la quantification peut réduire considérablement la taille du modèle et accélérer l'inférence avec un impact minimal sur la précision.
Qu'est-ce que la quantification scalaire (SQ) ?
La quantification scalaire compresse les vecteurs en mappant la plage continue des valeurs float32 à un ensemble discret de valeurs entières de plus faible précision (par exemple, int8). Cela permet de réduire jusqu'à 4 fois la taille du stockage tout en préservant une grande partie des informations relatives à l'amplitude du vecteur, ce qui est important pour la pertinence.
Qu'est-ce que la quantification binaire (BQ) ?
La quantification binaire est une technique de compression plus agressive qui convertit chaque composant d'un vecteur float32 en une représentation binaire (par exemple, 1 bit). Cette compression peut atteindre 32x, ce qui permet d'économiser un maximum de mémoire et d'effectuer des calculs plus rapides à l'aide d'opérations basées sur des nombres entiers, souvent au prix d'une certaine perte de précision.
Quels sont les avantages d’une base vectorielle ?
Les bases vectorielles offrent plusieurs avantages par rapport aux bases de données traditionnelles lorsque l'on travaille avec des données non structurées et des applications d'IA :
Rechercher sémantique au-delà de la correspondance des mots clés : les bases vectorielles extraient les résultats en fonction de leur signification plutôt que de la correspondance exacte des mots. Une requête pour « ordinateurs portables abordables pour étudiants » peut faire apparaître des produits décrits comme « cahiers économiques pour l’université » car les insertions sous-jacentes capturent une similarité conceptuelle plutôt qu’un simple chevauchement de texte.
Recherche rapide de similarités à grande échelle : en combinant l’indexation vectorielle avec des algorithmes de plus proches voisins approximatifs tels que HNSW, les bases vectorielles renvoient des résultats pertinents à partir de milliards de vecteurs en quelques millisecondes, rendant possibles les applications d’IA en temps réel.
Prise en charge des données non structurées : le texte, les images, l’audio, la vidéo et d’autres formats non structurés peuvent tous être représentés sous forme d’embeddings vectoriels et faire l’objet de recherches via un système unique et unifié, supprimant ainsi le besoin de pipelines distincts par type de données.
Bases pour les grands modèles de langage : les bases vectorielles servent de couche de récupération dans les architectures Retrieval-Augmented Generation (RAG), fournissant aux LLM un contexte pertinent et à jour provenant de sources fiables et réduisant les hallucinations.
Capacités de recherche hybrides : les bases vectorielles modernes combinent la recherche vectorielle dense, la recherche vectorielle éparse et la recherche par mot-clé traditionnelle (BM25) dans une seule requête, offrant des résultats plus précis que n'importe quelle méthode prise individuellement.
Scalabilité et performances : des structures d’indexation spécialement conçues, la quantification et les architectures distribuées permettent aux bases de données vectorielles de gérer des ensembles de données croissants et des volumes de requêtes élevés sans dégradation significative de la latence.
Complexité opérationnelle réduite : grâce à une base vectorielle intégrée, il n'est plus nécessaire de créer des systèmes distincts pour le stockage, la gestion intégrée et la rechercher, simplifiant ainsi l'architecture des applications basées sur l'IA.
Quels sont les avantages d'une plateforme intégrée de base vectorielle et de recherche ?
Une plateforme intégrée qui combine le stockage et la recherche vectoriels avec les fonctionnalités traditionnelles des bases de données (telles que la recherche lexicale et le filtrage) offre des avantages significatifs. Elle simplifie l'architecture en éliminant le besoin de synchroniser les données entre des systèmes distincts. Plus important encore, elle permet une recherche hybride puissante, où la recherche lexicale, la recherche vectorielle et le filtrage des métadonnées peuvent être effectués dans une seule requête unifiée, ce qui conduit à des résultats plus pertinents et à une expérience de développement plus simple.
Qu’est-ce que le filtrage des métadonnées dans une base vectorielle ?
Le filtrage des métadonnées consiste à restreindre les résultats de recherche de vecteurs en fonction des attributs structurés attachés à chaque vecteur, tels que la date, la catégorie, l'auteur, le prix, la langue ou les autorisations de l'utilisateur. Alors que la recherche vectorielle récupère les résultats par similarité sémantique, les filtres de métadonnées appliquent des contraintes strictes que les résultats doivent satisfaire. Ainsi, une requête pour « chaussures de course légères » peut être limitée aux articles en stock, dont le prix est inférieur à 100 £ et qui sont disponibles dans la région de l'utilisateur.
La combinaison de la similarité vectorielle avec le filtrage par métadonnées est essentielle pour les applications de production. Un système RAG, par exemple, peut avoir besoin de limiter les réponses aux documents que l'utilisateur actuel est autorisé à voir, ou aux articles publiés au cours des six derniers mois. Sans filtrage des métadonnées, des résultats sémantiquement pertinents mais contextuellement erronés apparaissent régulièrement.
Il existe deux approches courantes. Le préfiltrage applique des contraintes de métadonnées avant la recherche de similarité, réduisant ainsi le nombre de candidats en amont ; cela garantit le nombre de résultats demandé, mais peut être plus lent avec des filtres très sélectifs. Le post-filtrage exécute d'abord la recherche de similarités, puis écarte les résultats qui ne correspondent pas, ce qui est plus rapide mais peut renvoyer moins de résultats que demandé si le filtre est restrictif. Les bases vectorielles modernes combinent généralement les deux stratégies, en choisissant dynamiquement en fonction de la sélectivité des filtres pour équilibrer le rappel, la latence et la précision.
En quoi la recherche vectorielle diffère-t-elle de la recherche lexicale ?
- La recherche lexicale (par exemple, BM25) repose sur la correspondance de mots-clés. Elle trouve les documents qui contiennent les termes exacts présents dans la requête. Bien que précise, elle ne comprend pas le contexte ni les synonymes.
- La recherche vectorielle repose sur la signification sémantique. Elle trouve des documents qui sont conceptuellement similaires à la requête, même s'ils ne partagent aucun mot-clé. Elle est parfaite pour comprendre l'intention de l'utilisateur, mais peut s'avérer moins précise que la recherche lexicale.
Quels sont les cas d'utilisation courants des bases vectorielles ? Que peuvent réaliser les développeurs grâce à la recherche vectorielle ?
Les développeurs utilisent des bases vectorielles pour créer des applications sophistiquées qui reposent sur la compréhension de la signification sémantique des données. Les cas d'utilisation courants incluent :
- Recherche sémantique : créer des expériences de recherche qui comprennent l'intention de l'utilisateur au-delà des mots clés, comme dans le e-commerce ou les systèmes de découverte de documents.
- Génération augmentée de récupération (RAG): fournir aux LLM et aux chatbots l'accès à des connaissances externes actualisées afin de générer des réponses plus précises et factuelles
- Moteurs de recommandation : recommander des produits, des articles ou des médias en fonction de la similitude conceptuelle avec les centres d'intérêt ou le comportement passé de l'utilisateur.
- Recherche d'images et recherche multimodale : rechercher des images visuellement similaires ou effectuer des recherches dans différents types de données (par exemple, utiliser du texte pour trouver une image).
Capacités de base vectorielle avec Elastic
Elasticsearch est une base vectorielle construite sur les fondations du moteur de recherche le plus largement déployé au monde, combinant recherche vectorielle, recherche lexicale et filtrage des métadonnées sur une seule plateforme. Plutôt que de gérer un magasin de vecteurs dédié associé à un système de recherche distinct, les équipes peuvent utiliser un seul moteur pour alimenter la recherche sémantique, la recherche hybride et la Retrieval-Augmented Generation à l'échelle de la production.
Capacités principales incluent :
- Support natif des vecteurs denses et clairsemés : indexez, stockez et interrogez à la fois les intégrations vectorielles denses et éparses (y compris celles produites par le modèle ELSER d'Elastic) dans le même index.
- Recherche hybride prête à l’emploi : combinez la recherche lexicale BM25, le kNN vectoriel dense et la récupération vectorielle clairsemée dans une seule requête utilisant le framework de récupération, avec la fusion réciproque des rangs (RRF) pour combiner les résultats.
- Inférence intégrée : L’API de type de champ semantic_text et d’inférence gère automatiquement le chunking, la génération d’embedding et la vectorisation en temps de requête, supprimant ainsi le besoin de gérer un pipeline d’embedding séparé.
- Stockage économe en mémoire : la quantification binaire améliorée (BBQ) est activée par défaut pour les vecteurs denses, réduisant l’empreinte mémoire jusqu’à 32 fois tout en préservant le rappel, ce qui permet de réduire les coûts d’infrastructure à grande échelle.
- Recherche vectorielle filtrée : appliquez des filtres de métadonnées, des contraintes géospatiales et une sécurité au niveau du document, ainsi que la similarité vectorielle, dans une seule requête, le planificateur de requêtes choisissant le préfiltrage ou le postfiltrage en fonction de la sélectivité.
- Opérations de niveau production : hérite de l’architecture distribuée d’Elasticsearch, notamment le partitionnement, la réplication, le contrôle d’accès basé sur les rôles, les instantanés et la surveillance, autant d’éléments matures et éprouvés dans des déploiements à grande échelle.
- Réorganisation sémantique : le modèle Elastic Rerank fournit une amélioration de la pertinence en deuxième étape par rapport à la récupération initiale, améliorant ainsi la qualité des résultats sans nécessiter de réindexation.
Commencez la recherche vectorielle dans Elasticsearch dans la documentation des Elasticsearch Labs.
Flexibilité de déploiement : bases vectorielles sur site et isolées (air-gapped)
L'emplacement d'une base vectorielle est de plus en plus aussi important que ses performances. La plupart des bases vectorielles sont disponibles en tant que services cloud gérés, mais un nombre croissant d'organisations ont besoin de les déployer au sein de leur propre infrastructure, soit sur site, soit dans des environnements air gap complets.
Le déploiement sur site signifie que la base vectorielle s'exécute sur du matériel contrôlé par l'organisation, généralement dans son propre centre de données ou dans un cloud privé. Les données ne quittent jamais le périmètre réseau de l’organisation, et l’équipe des opérations gère directement l’installation, le scaling, les mises à niveau et la sécurité. Le déploiement isolé va encore plus loin : l'environnement n'est pas du tout connecté à Internet public. Les mises à jour de logiciels, les pondérations de modèles et les pipelines d'intégration doivent être introduits par le biais de processus contrôlés et hors ligne, et aucune télémétrie ou donnée ne peut être envoyée.
Cela importe davantage pour les bases vectorielles que pour la plupart des autres infrastructures. Dans un pipeline RAG, la base vectorielle détient la base de connaissances qui ancre les réponses du modèle de langage, ce qui signifie souvent qu’elle contient les contenus les plus sensibles qu’une organisation possède : recherches internes, dossiers clients, documents juridiques, code source, renseignements classifiés ou données opérationnelles propriétaires. Les embeddings eux-mêmes peuvent aussi divulguer des informations sur le contenu source, donc la couche de stockage est une partie essentielle du modèle de menace, et non une réflexion secondaire.
Plusieurs secteurs ont des exigences strictes qui excluent effectivement les bases vectorielles uniquement en cloud public :
- Les agences fédérales, de défense et de renseignement opèrent souvent dans des réseaux classifiés ou isolés où aucune connectivité externe n'est autorisée et où les logiciels doivent respecter des normes d'accréditation spécifiques avant de pouvoir être déployés.
- Les prestataires de soins de santé qui traitent des informations de santé protégées doivent respecter des réglementations strictes concernant le lieu de stockage et de traitement des données des patients, et beaucoup préfèrent conserver les charges de travail d’IA au sein de l’infrastructure hospitalière ou de l’organisme payeur plutôt que d’envoyer des plongements de notes cliniques à un service tiers.
- Les entreprises de services financiers sont soumises à des règles de résidence des données, des exigences d’audit réglementaire et des politiques internes qui exigent souvent de conserver les données clients et transactionnelles dans des juridictions spécifiques ou dans les environnements contrôlés par l’entreprise.
- Les entreprises soumises à des exigences en matière de résidence ou de souveraineté des données, y compris toute organisation opérant sous des réglementations telles que le RGPD ou des frameworks régionaux similaires, doivent pouvoir lier leur base vectorielle à un pays ou une région spécifique ou l'exécuter entièrement au sein de leur propre infrastructure.
Choisir une base vectorielle qui prend en charge l'ensemble du spectre de déploiement — cloud géré, cloud autogéré, sur site et isolé du réseau — permet aux organisations de standardiser une technologie unique pour l'ensemble des charges de travail, même celles présentant des profils de sécurité et de conformité très différents, plutôt que de maintenir des infrastructures distinctes pour les données sensibles et non sensibles.