Qu’est-ce qu’une véritable base de données vectorielle ?
Cet article a été initialement publié dans The New Stack et est republié ici avec autorisation.
L’émergence de ChatGPT marque le début d’une nouvelle ère de l’intelligence artificielle (IA). L’IA révolutionne tout, les bases de données vectorielles devenant une infrastructure essentielle dans cette nouvelle ère. Cette tendance n’est pas surprenante, compte tenu de la demande croissante d’applications alimentées par l’IA.
Dans le précédent article, nous avons présenté les données non structurées ainsi que leur traitement, leur analyse et leur interrogation. Cet article approfondira les bases de données vectorielles, leurs différences avec les méthodes traditionnelles de recherche vectorielle, et la manière de sélectionner la base de données vectorielle optimale pour votre projet.
Qu’est-ce qu’une base de données vectorielle ?
Pour répondre à la question : qu’est-ce qu’une base de données vectorielle, vous devez connaître le rôle d’une base de données relationnelle traditionnelle, qui stocke et traite des données avec des formats prédéfinis dans des tables et effectue généralement des recherches précises.
À l’inverse, les bases de données vectorielles stockent et récupèrent des données non structurées telles que des images, de l’audio, des vidéos et du texte au moyen de valeurs de grande dimension appelées embeddings. Les bases de données vectorielles sont fréquemment utilisées pour les recherches de similarité à l’aide de l’algorithme Approximate Nearest Neighbor (ANN). Cet algorithme organise les données en fonction de relations spatiales et permet de trouver le plus proche voisin d’un point de requête donné dans un vaste jeu de données de points.
Avec l’essor de ChatGPT, les bases de données vectorielles sont devenues encore plus essentielles pour résoudre les problèmes auxquels sont confrontés les grands modèles de langage (LLMs).
Bases de données vectorielles vs. bibliothèques de recherche vectorielle
Les bases de données vectorielles spécialisées ne sont pas la seule stack pour les recherches de similarité. Avant l’apparition des bases de données vectorielles, il existait de nombreuses bibliothèques de recherche vectorielle, telles que FAISS, ScaNN et HNSW, pour la récupération de vecteurs. Les deux stacks peuvent interroger des vecteurs, mais quelles sont les différences ?
Les bibliothèques de recherche vectorielle ont des fonctionnalités limitées. Elles ne peuvent gérer qu’une petite quantité de données et peinent à évoluer avec des jeux de données plus volumineux et une demande utilisateur plus élevée. Elles n’autorisent aucune modification de leurs données d’index et ne peuvent pas être interrogées pendant l’importation des données.
À l’inverse, les bases de données vectorielles comme Milvus et Zilliz Cloud constituent une solution plus optimale pour le stockage et la récupération de données non structurées. Elles peuvent stocker et interroger des millions, voire des milliards de vecteurs tout en fournissant simultanément des réponses en temps réel ; elles sont hautement évolutives pour répondre aux besoins commerciaux croissants des utilisateurs.
Les bases de données vectorielles spécialisées offrent de nombreuses fonctionnalités conviviales, notamment la prise en charge CRUD (create, read, update, and delete), la reprise après sinistre, le contrôle d’accès basé sur les rôles et le multi-tenant. De nombreux fournisseurs de bases de données vectorielles, tels que Zilliz, proposent également des services cloud entièrement gérés afin d’aider les utilisateurs à éliminer la charge du travail de maintenance et à se concentrer sur leur activité.
De plus, les bases de données vectorielles fonctionnent sur une couche d’abstraction différente de celle des bibliothèques de recherche vectorielle, servant de services à part entière plutôt que de composants à intégrer. Pour illustrer l’importance de cette abstraction, examinons le processus d’ajout d’un élément de données non structurées à une base de données vectorielle telle que Milvus.
from pymilvus import Collectioncollection = Collection('book')mr = collection.insert(data)
Comme vous pouvez le voir, l’insertion de données non structurées dans Milvus est très simple avec seulement trois lignes de code. Cependant, c’est compliqué lorsqu’on utilise des bibliothèques comme FAISS ou ScaNN. Ces bibliothèques nécessitent de recréer manuellement l’intégralité de l’index aux points de contrôle.
Bases de données vectorielles vs. plugins de recherche vectorielle
À mesure que les bases de données vectorielles attirent l’attention, de nombreuses bases de données et systèmes de recherche conventionnels tels que Clickhouse, Elasticsearch, MongoDB et Databricks se précipitent pour intégrer des plugins de recherche vectorielle intégrés. Elasticsearch 8.0, par exemple, a mis à jour des fonctionnalités telles que l’insertion de vecteurs et la recherche ANN, accessibles via des points de terminaison d’API RESTful.
Cependant, il est important de noter que les plugins de recherche vectorielle n’offrent pas une approche complète de la gestion des embeddings et de la recherche vectorielle. Ce ne sont que des modules complémentaires aux systèmes existants, ce qui peut limiter leurs performances en termes de latence, de capacité et de débit. Essayer de créer des applications de données non structurées au-dessus d’une base de données traditionnelle revient à installer des batteries au lithium et des moteurs électriques dans le châssis d’une voiture à essence, ce qui n’est pas une très bonne idée.
Les bases de données vectorielles sont essentielles pour l’augmentation des LLM
Avec l’essor des LLM et des applications d’IA, les bases de données vectorielles deviennent une infrastructure vitale pour les piles technologiques liées à l’IA.
Bien que les LLM soient impressionnants en matière de génération de contenu, ils présentent de nombreuses limites. Par exemple, ils sont susceptibles de produire des hallucinations en raison du manque de connaissances à jour et propres à un domaine. Pire encore, la limite de tokens des LLM vous empêche d’ajouter des informations contextuelles étendues aux prompts lors des requêtes.
Une base de données vectorielle peut servir de mémoire à long terme aux LLM et élargir leur base de connaissances. Elle stocke des données privées ou des informations propres à un domaine en dehors du LLM sous forme d’embeddings. Lorsqu’un utilisateur pose une question, la base de données vectorielle recherche les résultats topk les plus pertinents pour cette question. Ensuite, les résultats sont combinés à la requête originale pour créer un prompt qui fournit un contexte complet permettant au LLM de générer des réponses plus précises. Cette solution est également connue sous le nom de pile CVP (ChatGPT/LLMs + base de données vectorielle + prompt-as-code).
Les LLM facturent chaque token dans les requêtes. Ainsi, si les utilisateurs posent des questions similaires ou répétitives, ils seraient facturés plusieurs fois, ce qui entraîne des coûts élevés. Aux heures de pointe, les réponses peuvent être très lentes. Pour gagner du temps et réduire les efforts, les développeurs peuvent intégrer une base de données vectorielle à GPTCache, un cache sémantique open-source qui stocke les réponses des LLM. Ainsi, lorsque l’utilisateur pose une question à laquelle le LLM a déjà répondu, la base de données vectorielle récupère les réponses depuis GPTCache et les renvoie rapidement aux utilisateurs sans appeler le LLM.
Architecture OSS Chat
Le graphique ci-dessus montre l’architecture de OSS Chat, un chatbot IA qui exploite Zilliz Cloud et GPTCache.
En plus de l’augmentation des LLM, les bases de données vectorielles sont précieuses pour de nombreux cas d’utilisation, notamment les systèmes de recommandation, les recherches de similarité d’images/audio/vidéos/textes, la détection d’anomalies, les systèmes de questions-réponses et les recherches de similarité moléculaire.
Comment choisir la base de données vectorielle la plus adaptée à votre projet ?
Avez-vous du mal à choisir une base de données vectorielle adaptée à vos projets ? Avec les nombreuses options disponibles, cela peut être déroutant. Heureusement, il existe une solution pour vous aider à prendre une décision éclairée.
VectorDBBench est un outil de benchmarking open-source pour les bases de données vectorielles. Il évalue divers systèmes de bases de données vectorielles concernant le QPS, la latence, la capacité et d’autres métriques. Il est écrit en Python et publié sous la licence open-source MIT, de sorte que chacun peut l’utiliser, le modifier et le distribuer librement.
Avec VectorDBBench, vous pouvez sélectionner la meilleure base de données vectorielle en fonction des performances réelles plutôt que des arguments marketing. Pour commencer, consultez ce tutoriel.
Résumé
Cet article donne un aperçu des bases de données vectorielles, en expliquant en quoi elles diffèrent des bibliothèques de récupération vectorielle et des plugins de recherche vectorielle reposant sur des bases de données relationnelles traditionnelles. Plus important encore, nous présentons VectorDBBench, un outil d'analyse comparative open source destiné à aider les utilisateurs à faire des choix éclairés.
Dans l’article suivant, nous présenterons Milvus, la première base de données vectorielle open source au monde et la plus largement utilisée, et nous vous guiderons pour bien démarrer avec Milvus.
Continuer à lire

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



