Une base de données vectorielle est une base de données qui vous permet de stocker, d'indexer et d'interroger des embeddings de vecteurs ou des représentations numériques de données non structurées, telles que du texte, des images ou des fichiers audio.
Les embeddings vectoriels sont des représentations utiles des données non structurées, car ils mappent le contenu de telle sorte que la similarité sémantique est représentée par la distance dans un espace vectoriel à N dimensions. Il est ainsi plus facile de rechercher des similarités, de trouver du contenu pertinent dans une base de connaissances ou de récupérer un élément correspondant le mieux à une requête complexe générée par un utilisateur.
Si certaines bases de données spécialisées ne sont prennent en charge qu'avec les embeddings vectoriels, d'autres prennent en charge de nombreux autres types de données et de requêtes en plus des embeddings. La prise en charge d'un large éventail de types de données et de requêtes est essentielle pour créer des applications d'IA générative à partir de données enrichies et réelles. Au fur et à mesure que les avantages des requêtes sémantiques utilisant des embeddings de vecteurs deviendront évidents, la plupart des bases de données ajouteront la prise en charge des vecteurs. À l'avenir, nous pensons que toute base de données sera une base de données vectorielle.
Découvrez comment la recherche vectorielle de Vertex AI permet de créer des applications d'IA générative hautes performances. La recherche vectorielle de Vertex AI est basée sur ScaNN, une technologie de recherche vectorielle évolutive et efficace développée par Google Research, ce qui en fait la solution idéale pour gérer de grands ensembles de données et les besoins de recherche en temps réel. Pour en savoir plus sur la recherche vectorielle et les embeddings, regardez cette vidéo et commencez par consulter ce guide de démarrage rapide.
Comme pour les autres types de données, vous devez disposer d'un index pour interroger efficacement un grand nombre de vecteurs. De plus, les bases de données vectorielles acceptent des index spécialisés pour les vecteurs. Contrairement à de nombreux autres types de données (comme le texte ou les nombres), qui ont un ordre logique unique, les vecteurs n'ont pas un ordre naturel qui correspond à des cas d'utilisation pratiques. Au lieu de cela, le cas d'utilisation le plus courant consiste à rechercher les vecteurs k les plus proches d'un autre vecteur en termes de métrique de distance, comme le produit scalaire, la similarité cosinus ou la distance euclidienne. Ce type de requête est appelé requête "voisins k (exacts) les plus proches" ou "KNN".
Malheureusement, il n'existe pas d'algorithme général pour des requêtes KNN efficaces. Pour s'assurer de trouver les voisins k les plus proches d'un vecteur donné, q, il faut calculer la distance entre q et tout autre vecteur. Cependant, il existe des algorithmes efficaces pour trouver les voisins k les plus proches ("ANN") approximatifs. Ces algorithmes ANN offrent une certaine précision (en particulier le rappel, qui peut omettre certains des voisins les plus proches) pour améliorer considérablement la vitesse. Étant donné que de nombreux cas d'utilisation considèrent déjà le calcul des embeddings de vecteurs imprécis, ils peuvent souvent tolérer une perte de rappel en échange d'une nette amélioration des performances.
Pour activer les requêtes ANN de vecteurs basées sur la distance par rapport à un autre vecteur, un index vectoriel est structuré de manière à ce que les clusters de vecteurs proches soient généralement regroupés. Les types d'indices vectoriels courants peuvent être structurés sous la forme d'un ensemble de listes, dans lesquelles chaque liste représente les vecteurs d'un cluster donné ; d'un graphe dans lequel chaque vecteur est connecté à plusieurs de ses voisins les plus proches ; d'arbres dont les branches correspondent à des sous-ensembles du cluster du nœud parent, et bien plus encore. Chaque type d'index fournit des compromis entre la vitesse de recherche, le rappel, la consommation de mémoire, le temps de création de l'index et d'autres facteurs.
Cependant, la plupart des requêtes de base de données ne sont pas seulement basées sur la similarité sémantique. Par exemple, un utilisateur peut rechercher un livre dont la description est "histoire touchante sur un enfant et un chien", mais il peut également vouloir limiter cette recherche aux livres de moins de 20 $ disponibles au format broché. Les bases de données vectorielles à usage spécifique peuvent fournir une capacité de filtrage supplémentaire limitée (parfois appelée "restriction") tandis que les bases de données à usage général peuvent composer des prédicats riches à l'aide de langages standards tels que SQL, qui peuvent être associés à l'ordre de similarité vectorielle pour permettre des requêtes très puissantes et expressives.
La capacité des embeddings à représenter le sens sémantique des données non structurées, combinée à la capacité des bases de données vectorielles à rechercher efficacement les vecteurs proches, ouvre de nombreux cas d'utilisation importants :
Les bases de données vectorielles sont importantes, car elles peuvent être utilisées pour résoudre divers problèmes difficiles ou impossibles à résoudre avec des prédicats relationnels ou des techniques de recherche de texte seules.
Les bases de données vectorielles sont parfaitement adaptées aux applications d'IA générative, car elles facilitent la récupération de contextes critiques métier et applicatifs, tels que l'historique des discussions ou le contenu non structuré propre à l'entreprise, afin d'aider les LLM à répondre à une requête utilisateur complexe.
Elles peuvent également faciliter la recherche de contenu en langage naturel ou la requête par exemple.
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.