pgvector vs Aerospike : choisir la bonne base de données vectorielle pour vos applications d’IA
Qu’est-ce qu’une base de données vectorielle ?
Avant de comparer pgvector et Aerospike, explorons d’abord le concept de bases de données vectorielles.
Une base de données vectorielle est spécialement conçue pour stocker et interroger des vecteurs de haute dimension, qui sont des représentations numériques de données non structurées. Ces vecteurs encodent des informations complexes, comme la signification sémantique d’un texte, les caractéristiques visuelles d’images ou les attributs de produits. En permettant des recherches de similarité efficaces, les bases de données vectorielles jouent un rôle central dans les applications d’IA, en permettant une analyse et une récupération de données plus avancées.
Les cas d’utilisation courants des bases de données vectorielles incluent les recommandations de produits en e-commerce, les plateformes de découverte de contenu, la détection d’anomalies en cybersécurité, l’analyse d’images médicales et les tâches de traitement automatique du langage naturel (NLP). Elles jouent également un rôle crucial dans la génération augmentée par récupération (RAG), une technique qui améliore les performances des grands modèles de langage (LLMs) en fournissant des connaissances externes afin de réduire des problèmes tels que les hallucinations de l’IA.
Il existe de nombreux types de bases de données vectorielles disponibles sur le marché, notamment :
- Bases de données vectorielles spécialisées telles que Milvus, Zilliz Cloud (Milvus entièrement géré)
- Bibliothèques de recherche vectorielle telles que Faiss et Annoy.
- Bases de données vectorielles légères telles que Chroma et Milvus Lite.
- Bases de données traditionnelles avec modules complémentaires de recherche vectorielle capables d’effectuer des recherches vectorielles à petite échelle.
pgvector est une base de données traditionnelle et Aerospike est une base de données NoSQL distribuée et évolutive. Les deux disposent de capacités de recherche vectorielle sous forme de module complémentaire. Cet article compare leurs capacités de recherche vectorielle.
pgvector : présentation et technologie de base
pgvector est une extension pour PostgreSQL qui ajoute la prise en charge des opérations vectorielles. Elle permet aux utilisateurs de stocker et d’interroger des embeddings vectoriels directement dans leur base de données PostgreSQL, offrant des capacités de recherche de similarité vectorielle sans avoir besoin d’une base de données vectorielle séparée.
Les principales fonctionnalités de pgvector incluent :
- Prise en charge de la recherche des plus proches voisins exacte et approximative
- Intégration avec les mécanismes d’indexation de PostgreSQL
- Capacité à effectuer des opérations vectorielles comme l’addition et la soustraction
- Prise en charge de diverses métriques de distance (euclidienne, cosinus, produit scalaire)
Par défaut, pgvector utilise la recherche exacte des plus proches voisins, ce qui garantit un rappel parfait, mais peut être plus lent pour les grands ensembles de données. Pour optimiser les performances, pgvector offre la possibilité de créer des index pour la recherche approximative des plus proches voisins. Cette approche échange une partie de la précision contre une vitesse nettement améliorée, ce qui constitue souvent un compromis avantageux dans de nombreuses applications réelles.
Il est important de noter que l’ajout d’un index approximatif peut modifier les résultats de vos requêtes. Cela diffère des index de base de données classiques, qui n’affectent pas les résultats réellement renvoyés. Les deux types d’index approximatifs pris en charge par pgvector sont :
- HNSW (Hierarchical Navigable Small World) : Introduit dans la version 0.5.0 de pgvector, HNSW est connu pour ses hautes performances et la qualité de ses résultats. Il construit une structure de graphe multicouche qui permet une traversée rapide lors des recherches.
- IVFFlat (Inverted File Flat) : Cette méthode divise l’espace vectoriel en clusters. Lors d’une recherche, elle identifie d’abord les clusters les plus pertinents, puis effectue une recherche exacte au sein de ces clusters. Cela peut considérablement accélérer les recherches dans de grands jeux de données.
Le choix entre ces types d’index dépend de votre cas d’utilisation spécifique, en tenant compte de facteurs tels que la taille du jeu de données, la vitesse de requête requise et le compromis acceptable en matière de précision. HNSW offre généralement de meilleures performances, mais peut utiliser davantage de mémoire, tandis qu’IVFFlat peut être plus économe en mémoire, mais pourrait être légèrement plus lent ou moins précis dans certains cas.
Lorsque vous implémentez pgvector dans votre projet, essayez d’expérimenter les deux types d’index et leurs paramètres afin de trouver la configuration optimale pour vos besoins spécifiques. Ce processus d’ajustement fin peut avoir un impact sur les performances et la précision de vos opérations de recherche vectorielle.
Vous voulez apprendre comment commencer à utiliser pgvector ? Consultez ce tutoriel !
Qu’est-ce qu’Aerospike** ? Présentation**
Aerospike est une base de données NoSQL pour les applications en temps réel à hautes performances. Elle a ajouté la prise en charge de l’indexation et de la recherche vectorielles, ce qui la rend adaptée aux cas d’utilisation des bases de données vectorielles. Cette fonctionnalité vectorielle s’appelle Aerospike Vector Search (AVS) et est en Preview. Vous pouvez demander un accès anticipé auprès d’Aerospike.
AVS ne prend en charge que les index Hierarchical Navigable Small World (HNSW) pour la recherche vectorielle. Lorsque des mises à jour ou des insertions sont effectuées dans AVS, les données d’enregistrement, y compris le vecteur, sont écrites dans Aerospike Database (ASDB) et sont immédiatement visibles. Pour l’indexation, chaque enregistrement doit contenir au moins un vecteur dans le champ vectoriel spécifié d’un index. Vous pouvez avoir plusieurs vecteurs et index pour un seul enregistrement, afin de pouvoir rechercher les mêmes données de différentes manières. Aerospike recommande d’affecter les enregistrements upsertés à un ensemble spécifique afin de pouvoir les surveiller et effectuer des opérations dessus.
AVS dispose d’une manière unique de construire l’index : elle est concurrente sur tous les nœuds AVS. Tandis que les mises à jour d’enregistrements vectoriels sont écrites directement dans ASDB, les enregistrements d’index sont traités de manière asynchrone depuis une file d’indexation. Cela se fait par lots et est distribué sur tous les nœuds AVS, ce qui utilise tous les cœurs CPU du cluster AVS et est évolutif. Les performances d’ingestion dépendent fortement de la mémoire de l’hôte et de la configuration de la couche de stockage.
Pour chaque élément de la file d’indexation, AVS traite le vecteur pour l’indexation, construit les clusters pour chaque vecteur et les valide dans ASDB. Un enregistrement d’index contient une copie du vecteur lui-même et les clusters de ce vecteur à une couche donnée du graphe HNSW. L’indexation utilise des extensions vectorielles (AVX) pour le traitement parallèle SIMD (single instruction, multiple data).
AVS effectue des requêtes pendant l’ingestion pour « préhydrater » le cache d’index, car les enregistrements dans les clusters sont interconnectés. Ces requêtes ne sont pas comptabilisées comme des demandes de requête, mais apparaissent comme des lectures au niveau de la couche de stockage. Ainsi, le cache est alimenté avec des données pertinentes et peut améliorer les performances des requêtes. Cela montre comment AVS gère les données vectorielles et construit des index pour la recherche de similarité, afin de pouvoir évoluer pour les recherches vectorielles de grande dimension.
Principales différences
Lorsque vous choisissez entre pgvector et Aerospike pour la recherche vectorielle, voici les facteurs clés à prendre en compte.
Méthodologie de recherche :
pgvector prend en charge la recherche de plus proches voisins exacte et approximative. Il dispose de deux types d’index approximatifs : HNSW (Hierarchical Navigable Small World) et IVFFlat (Inverted File Flat). HNSW construit un graphe multicouche pour une traversée rapide, IVFFlat divise l’espace vectoriel en clusters. Aerospike Vector Search (AVS) ne prend en charge que les index HNSW pour la recherche vectorielle.
Gestion des données :
pgvector s’intègre à PostgreSQL afin que vous puissiez stocker et interroger des embeddings vectoriels avec vos données relationnelles traditionnelles. Si vous devez combiner la recherche vectorielle avec des opérations sur des données structurées, cela peut être utile. Aerospike, étant une base de données NoSQL, est conçu pour les applications temps réel à hautes performances et peut être plus adapté aux données semi-structurées ou non structurées à grande échelle.
Scalabilité et performances :
pgvector utilise les mécanismes d’indexation de PostgreSQL, ce qui peut convenir à de nombreux cas d’utilisation. Mais pour de très grands jeux de données, vous devrez peut-être ajuster soigneusement vos index et vos requêtes. Aerospike est conçu pour une grande scalabilité et dispose d’un processus d’indexation concurrent unique sur tous les nœuds du cluster. Cette approche distribuée peut être meilleure pour les opérations de recherche vectorielle à grande échelle.
Flexibilité et personnalisation :
pgvector vous permet d’effectuer diverses opérations vectorielles comme l’addition et la soustraction, et prend en charge plusieurs métriques de distance (euclidienne, cosinus, produit interne). Il s’intègre parfaitement au riche ensemble de fonctionnalités et d’extensions de PostgreSQL. Aerospike peut offrir moins de flexibilité en matière d’opérations de type SQL, mais davantage d’options pour affiner les performances à grande échelle.
Intégration et écosystème :
pgvector bénéficie du vaste écosystème d’outils et d’intégrations de PostgreSQL. Si votre stack existante repose fortement sur PostgreSQL, alors pgvector pourrait être un choix naturel. Aerospike, bien que moins courant, peut disposer d’intégrations spécifiques précieuses pour les applications temps réel à hautes performances.
Facilité d’utilisation :
pgvector peut être facile à configurer et à utiliser si vous connaissez déjà PostgreSQL. La courbe d’apprentissage peut être plus raide pour Aerospike si vous débutez avec les bases de données NoSQL. Cependant, les deux nécessitent une attention particulière aux types d’index et aux paramètres afin d’optimiser les performances.
Coût :
pgvector est une extension open-source pour PostgreSQL, ce qui pourrait donc réduire les coûts. Aerospike propose à la fois des éditions open-source et enterprise, AVS est actuellement en preview. Le coût total dépendra de votre déploiement spécifique et de votre échelle.
Sécurité :
Les deux offrent des fonctionnalités de sécurité, mais les détails diffèrent. PostgreSQL dispose d’un ensemble robuste de mécanismes d’authentification et de contrôle d’accès que pgvector peut utiliser. Aerospike dispose de fonctionnalités de sécurité, mais vous devrez consulter leur documentation pour obtenir les informations les plus à jour sur le chiffrement, l’authentification et le contrôle d’accès pour leur recherche vectorielle.
Quand choisir chaque technologie
Utiliser pgvector :
pgvector est un bon choix lorsque vous utilisez déjà PostgreSQL et souhaitez ajouter la recherche vectorielle à votre base de données relationnelle existante. Il convient aux projets qui doivent combiner des opérations vectorielles avec des requêtes SQL ou lorsque vous avez des données structurées avec un composant vectoriel. pgvector est adapté à la recherche exacte de plus proches voisins ou aux jeux de données de petite à moyenne taille où les performances des requêtes ne constituent pas un goulot d’étranglement.
Utiliser Aerospike :
Aerospike avec Vector Search (AVS) est mieux adapté aux applications temps réel à hautes performances qui doivent gérer la recherche vectorielle à grande échelle. C’est une bonne option lorsque vous construisez des systèmes nécessitant une recherche de similarité vectorielle à faible latence sur d’immenses jeux de données. L’indexation distribuée d’Aerospike est particulièrement utile pour les applications dans des domaines tels que les systèmes de recommandation, la détection de fraude en temps réel ou la recherche de similarité d’images ou de textes à grande échelle, où la vitesse et la scalabilité sont essentielles.
Conclusion :
pgvector se distingue par son intégration à PostgreSQL, un environnement familier pour les développeurs qui travaillent avec des bases de données relationnelles, ainsi que par sa flexibilité pour combiner la recherche vectorielle avec des opérations sur des données structurées. Aerospike offre une recherche vectorielle hautes performances et évolutive pour de grands ensembles de données, avec une indexation distribuée potentiellement mieux adaptée à une échelle massive. Votre choix entre ces deux solutions doit être fondé sur votre cas d’utilisation, votre infrastructure existante, votre volume de données et vos exigences de performance. Tenez compte de l’expertise de votre équipe, de la nature de vos données (structurées ou semi-structurées), de l’échelle de vos besoins en recherche vectorielle et des performances en temps réel de votre application au moment de prendre votre décision.
Bien que cet article fournisse un aperçu de pgvector et d’Aerospike, il est essentiel d’évaluer ces bases de données en fonction de votre cas d’utilisation spécifique. Un outil qui peut vous aider dans ce processus est VectorDBBench, un outil de benchmarking open-source conçu pour comparer les performances des bases de données vectorielles. En fin de compte, un benchmarking approfondi avec des ensembles de données et des modèles de requêtes spécifiques sera essentiel pour prendre une décision éclairée entre ces deux approches puissantes, mais distinctes, de la recherche vectorielle dans les systèmes de bases de données distribuées.
Utiliser VectorDBBench open-source pour évaluer et comparer les bases de données vectorielles par vous-même
VectorDBBench est un outil de benchmarking open-source conçu pour les utilisateurs qui ont besoin de systèmes de stockage et de récupération de données hautes performances, en particulier les bases de données vectorielles. Cet outil permet aux utilisateurs de tester et de comparer les performances de différents systèmes de bases de données vectorielles tels que Milvus et Zilliz Cloud (le Milvus géré) en utilisant leurs propres ensembles de données et de déterminer celui qui convient le mieux à leurs cas d’utilisation. Avec VectorDBBench, les utilisateurs peuvent prendre des décisions éclairées fondées sur les performances réelles des bases de données vectorielles plutôt que de s’appuyer sur des affirmations marketing ou des preuves anecdotiques.
VectorDBBench est écrit en Python et publié sous la licence open-source MIT, ce qui signifie que chacun peut l’utiliser, le modifier et le distribuer librement. L’outil est activement maintenu par une communauté de développeurs engagés dans l’amélioration de ses fonctionnalités et de ses performances.
Téléchargez VectorDBBench depuis son dépôt GitHub pour reproduire nos résultats de benchmark ou obtenir des résultats de performance sur vos propres ensembles de données.
Jetez un coup d’œil rapide aux performances des bases de données vectorielles courantes dans le classement VectorDBBench.
Lisez les blogs suivants pour en savoir plus sur l’évaluation des bases de données vectorielles.
Ressources complémentaires sur VectorDB, GenAI et ML
Continuer à lire

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

DeepRAG: Thinking to Retrieval Step by Step for Large Language Models
Discover DeepRAG, an advanced retrieval-augmented generation (RAG) model that improves LLM accuracy by retrieving only essential data through step-by-step reasoning.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


