TiDB vs Neo4j : 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 TiDB et Neo4j, 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 grande dimension, qui sont des représentations numériques de données non structurées. Ces vecteurs encodent des informations complexes, telles que 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 des 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 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 extensions de recherche vectorielle capables d’effectuer des recherches vectorielles à petite échelle.
TiDB est une base de données traditionnelle et Neo4j est une base de données orientée graphe. Toutes deux disposent de la recherche vectorielle sous forme d’extension. Cet article compare leurs capacités de recherche vectorielle.
TiDB : présentation et technologie de base
TiDB, développée par PingCAP, est une base de données SQL distribuée open source qui offre des capacités de traitement hybride transactionnel et analytique (HTAP). Elle est compatible avec MySQL, ce qui facilite son adoption par les équipes déjà familiarisées avec l’écosystème MySQL. L’architecture SQL distribuée de TiDB offre une scalabilité horizontale comparable à celle des bases de données NoSQL tout en conservant le modèle relationnel des bases de données SQL, ce qui la rend très flexible pour gérer à la fois les charges de travail transactionnelles et analytiques.
L’une des forces principales de TiDB est son architecture HTAP, qui lui permet de traiter les charges de travail transactionnelles (OLTP) et analytiques (OLAP) dans une seule base de données, réduisant ainsi le besoin de systèmes séparés. De plus, la compatibilité de TiDB avec MySQL facilite son intégration dans les environnements existants qui reposent sur MySQL, sans modifications importantes du code applicatif. La base de données propose également l’auto-sharding, qui distribue automatiquement les données entre les nœuds afin d’améliorer les performances de lecture et d’écriture tout en maintenant une forte cohérence.
TiDB prend en charge la recherche vectorielle grâce à l’intégration avec des bibliothèques et plugins externes, permettant une gestion et une interrogation efficaces des données vectorisées. Cette fonctionnalité, combinée à l’architecture HTAP de TiDB, en fait une option polyvalente pour les entreprises ayant besoin de capacités de recherche vectorielle parallèlement à des charges de travail transactionnelles et analytiques. L’architecture distribuée de TiDB lui permet de gérer des requêtes vectorielles à grande échelle une fois les configurations nécessaires mises en place.
Bien que l’inclusion de fonctionnalités de recherche vectorielle dans TiDB nécessite une configuration supplémentaire, la compatibilité SQL du système permet aux développeurs de combiner la recherche vectorielle avec des requêtes relationnelles traditionnelles. Cette flexibilité rend TiDB adapté aux applications complexes qui nécessitent à la fois des capacités de recherche vectorielle et de base de données relationnelle, offrant une solution complète pour divers besoins de gestion des données.
Neo4j : Les bases
La recherche vectorielle de Neo4j permet aux développeurs de créer des index vectoriels pour rechercher des données similaires dans leur graphe. Ces index fonctionnent avec des propriétés de nœuds qui contiennent des embeddings vectoriels - des représentations numériques de données comme du texte, des images ou de l’audio qui capturent la signification des données. Le système prend en charge des vecteurs allant jusqu’à 4096 dimensions, ainsi que les fonctions de similarité cosinus et euclidienne.
L’implémentation utilise des graphes Hierarchical Navigable Small World (HNSW) pour effectuer des recherches rapides approximatives des k plus proches voisins. Lors de l’interrogation d’un index vectoriel, vous spécifiez combien de voisins vous souhaitez récupérer, et le système renvoie les nœuds correspondants ordonnés par score de similarité. Ces scores vont de 0 à 1, les valeurs plus élevées indiquant une plus grande similarité. L’approche HNSW fonctionne bien en conservant des connexions entre vecteurs similaires et en permettant au système de passer rapidement à différentes parties de l’espace vectoriel.
La création et l’utilisation des index vectoriels se font via le langage de requête. Vous pouvez créer des index avec la commande CREATE VECTOR INDEX et spécifier des paramètres comme les dimensions des vecteurs et la fonction de similarité. Le système validera que seuls les vecteurs ayant les dimensions configurées sont indexés. L’interrogation de ces index se fait avec la procédure db.index.vector.queryNodes, qui prend en entrée un nom d’index, le nombre de résultats et le vecteur de requête.
L’indexation vectorielle de Neo4j dispose d’optimisations de performance comme la quantification, qui réduit l’utilisation de la mémoire en compressant les représentations vectorielles. Vous pouvez ajuster le comportement de l’index avec des paramètres comme le nombre maximal de connexions par nœud (M) et le nombre de plus proches voisins suivis lors de l’insertion (ef_construction). Bien que ces paramètres vous permettent de trouver un équilibre entre précision et performance, les valeurs par défaut conviennent bien à la plupart des cas d’utilisation. Le système prend également en charge les index vectoriels de relations à partir de la version 5.18, ce qui vous permet de rechercher des données similaires sur des propriétés de relations.
Cela permet aux développeurs de créer des applications alimentées par l’IA. En combinant des requêtes de graphe avec la recherche de similarité vectorielle, les applications peuvent trouver des données liées sur la base de la signification sémantique, et non de correspondances exactes. Par exemple, un système de recommandation de films pourrait utiliser des vecteurs d’embedding d’intrigue pour trouver des films similaires, tout en utilisant la structure du graphe pour s’assurer que les recommandations proviennent du même genre ou de la même époque que ceux que l’utilisateur préfère.
Principales différences
Méthodologie de recherche
TiDB : TiDB utilise des bibliothèques et plugins externes pour la recherche vectorielle, de sorte que le système intègre des outils tiers pour gérer les données vectorisées. Cela offre de la flexibilité, mais repose fortement sur une configuration externe pour optimiser les performances des requêtes vectorielles. Il peut exécuter des charges de travail de traitement transactionnel et analytique hybride (HTAP), ce qui en fait un bon choix pour les applications qui combinent la recherche vectorielle avec des opérations traditionnelles basées sur SQL.
Neo4j : Neo4j prend en charge l’indexation vectorielle à l’aide de graphes Hierarchical Navigable Small World (HNSW). Il peut effectuer une recherche approximative efficace des k plus proches voisins (k-NN) avec une prise en charge intégrée des métriques de similarité cosinus et euclidienne. La méthodologie de Neo4j est étroitement intégrée à son architecture de graphe, de sorte qu’elle peut gérer des requêtes basées sur des vecteurs en même temps que des opérations de parcours de graphe.
Données
TiDB : En tant que base de données SQL distribuée, TiDB est efficace pour gérer des données structurées avec une compatibilité MySQL. Il prend en charge les charges de travail hybrides et peut intégrer des données non structurées via des outils externes, ce qui le rend adapté aux environnements qui nécessitent un mélange de gestion de données relationnelles et vectorielles. Mais cette flexibilité s’accompagne d’une configuration supplémentaire pour les tâches spécifiques aux vecteurs.
Neo4j : Neo4j est performant pour la modélisation de données en graphe, idéal pour gérer des données fortement connectées et semi-structurées. Ses capacités natives de recherche vectorielle complètent sa force dans le parcours des relations et la gestion des structures de graphe. Il est adapté aux applications comme les systèmes de recommandation, la détection de fraude ou les graphes de connaissances qui nécessitent une compréhension sémantique et des connexions entre les entités.
Évolutivité et performances
TiDB : TiDB est évolutif horizontalement grâce à son architecture distribuée. L’auto-sharding garantit que les données sont réparties uniformément entre les nœuds, ce qui le rend adapté aux charges de travail à grande échelle. Mais une recherche vectorielle haute performance peut nécessiter l’ajustement des bibliothèques externes et la garantie d’une intégration optimale avec l’architecture de TiDB.
Neo4j : Les performances de recherche vectorielle de Neo4j sont optimisées grâce aux graphes HNSW, qui réduisent le temps de requête en structurant les connexions entre vecteurs similaires. Des fonctionnalités comme la quantification aident à économiser la mémoire tout en maintenant la précision des requêtes. Bien que Neo4j évolue bien pour les charges de travail de graphe, la gestion de très grands ensembles de données vectorielles peut nécessiter une planification minutieuse des ressources.
Flexibilité et personnalisation
TiDB : Flexible grâce à la compatibilité SQL et à l’intégration avec les applications existantes basées sur MySQL. Il peut combiner des requêtes vectorielles et relationnelles, ce qui le rend adapté aux applications qui ont besoin des deux. Mais la personnalisation dépend souvent des capacités des bibliothèques vectorielles intégrées.
Neo4j : Hautement personnalisable pour les applications basées sur les graphes, Neo4j permet aux développeurs d’ajuster les paramètres d’indexation vectorielle afin d’équilibrer les performances et la précision. Il peut intégrer la recherche vectorielle dans les requêtes de graphe, ce qui constitue un avantage unique pour les applications qui reposent sur des relations sémantiques.
Intégration et écosystème
TiDB : TiDB s’intègre bien avec les outils et l’écosystème MySQL, ce qui en fait un choix naturel pour les équipes déjà dans un flux de travail basé sur SQL. La recherche vectorielle nécessite des plugins externes, mais sa compatibilité avec l’écosystème MySQL plus large facilite son adoption.
Neo4j : Les capacités d’intégration de Neo4j sont solides dans l’écosystème centré sur les graphes, avec une bonne prise en charge des workflows AI/ML. Il peut gérer les opérations de graphe et vectorielles dans un seul environnement, ce qui constitue un grand avantage pour les applications alimentées par l’IA.
Facilité d’utilisation
TiDB : Si vous êtes familier avec MySQL, la courbe d’apprentissage de TiDB est plus faible. Mais la mise en place de la recherche vectorielle nécessite de comprendre les bibliothèques externes utilisées, ce qui peut ajouter de la complexité.
Neo4j : Bien que le langage de requête graphe de Neo4j (Cypher) ait une courbe d’apprentissage plus raide pour les utilisateurs SQL, sa recherche vectorielle native est facile à utiliser et nécessite moins de configuration externe par rapport à TiDB.
Coût
TiDB : Les coûts dépendent du nombre de nœuds distribués et des coûts supplémentaires de licence ou d’exploitation des bibliothèques vectorielles intégrées. Des services gérés sont disponibles, mais ils augmentent le coût global.
Neo4j : Le coût de Neo4j dépend de l’échelle des charges de travail de graphe et des fonctionnalités requises. Pour la recherche vectorielle, l’implémentation native a une surcharge plus faible par rapport à la dépendance de TiDB aux outils tiers.
Sécurité
TiDB : Fonctionnalités de sécurité basées sur SQL, chiffrement, contrôle d’accès, authentification. La sécurité des opérations vectorielles dépend de la bibliothèque externe utilisée.
Neo4j : Fonctionnalités de sécurité intégrées comme le chiffrement et les contrôles d’accès granulaires pour les données de graphe et vectorielles. Il intègre la recherche vectorielle dans la plateforme centrale, ce qui simplifie la gestion de la sécurité.
Quand utiliser TiDB
TiDB est destiné aux applications qui ont besoin d’une gestion de données distribuée à grande échelle avec des charges de travail à la fois transactionnelles et analytiques. HTAP vous permet de gérer des données structurées et des données semi-structurées ou non structurées grâce à des intégrations externes. Si votre cas d’utilisation consiste à combiner la recherche vectorielle avec des requêtes SQL ou à intégrer des opérations vectorielles dans un environnement compatible MySQL existant, TiDB est une solution flexible et évolutive. Il est parfait pour les scénarios où une forte cohérence et l’évolutivité à travers des systèmes distribués sont importantes.
Quand utiliser Neo4j
Neo4j est destiné aux applications qui reposent sur des modèles de données en graphe et qui nécessitent des capacités avancées pour explorer les relations entre les entités. Sa recherche vectorielle native, intégrée aux requêtes de graphe, est parfaite pour créer des applications alimentées par l’IA comme des systèmes de recommandation, des graphes de connaissances ou des systèmes de détection de fraude. Si vous vous concentrez sur la compréhension sémantique et la recherche de connexions dans des jeux de données fortement connectés, l’approche centrée sur les graphes de Neo4j avec indexation vectorielle constitue l’avantage unique. La combinaison du parcours de graphe avec la recherche par similarité est efficace pour les charges de travail qui privilégient l’exploration de données connectées.
Résumé
TiDB et Neo4j sont destinés à des cas d’utilisation différents, chacun excellant dans des domaines distincts. La force de TiDB réside dans le traitement hybride transactionnel et analytique, l’évolutivité distribuée et la compatibilité MySQL, ce qui en fait un bon choix pour les applications centrées sur SQL qui nécessitent une recherche vectorielle. L’architecture basée sur les graphes de Neo4j et son indexation vectorielle native sont parfaites pour les applications qui privilégient les relations et les insights sémantiques. Choisissez entre les deux en fonction de votre cas d’utilisation : avez-vous besoin de solides capacités SQL distribuées avec recherche vectorielle ou d’une base de données en graphe qui intègre la recherche vectorielle dans des workflows de données connectées. Évaluez vos types de données, vos modèles de charge de travail et vos exigences de performance pour décider.
Lisez ceci pour obtenir un aperçu de TiDB et Neo4j, mais pour les évaluer, vous devez le faire en fonction de votre cas d’utilisation. Un outil qui peut vous y aider est VectorDBBench, un outil de benchmarking open-source pour la comparaison de bases de données vectorielles. Au final, un benchmarking approfondi avec vos propres jeux de données et modèles de requêtes sera essentiel pour prendre une décision entre ces deux approches puissantes mais différentes 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 destiné aux utilisateurs qui ont besoin de systèmes de stockage et de récupération de données hautes performances, en particulier des bases de données vectorielles. Cet outil permet aux utilisateurs de tester et de comparer différents systèmes de bases de données vectorielles comme Milvus et Zilliz Cloud (le Milvus géré) à l’aide de leurs propres jeux de données et de trouver celui qui correspond à leurs cas d’utilisation. Avec VectorDBBench, les utilisateurs peuvent prendre des décisions fondées sur les performances réelles des bases de données vectorielles plutôt que sur des affirmations marketing ou des ouï-dire.
VectorDBBench est écrit en Python et sous 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 jeux de données.
Jetez un rapide coup d’œil aux performances des bases de données vectorielles grand public sur le VectorDBBench Leaderboard.
Lisez les blogs suivants pour en savoir plus sur l’évaluation des bases de données vectorielles.
Ressources supplémentaires sur VectorDB, GenAI et ML
Continuer à lire

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.
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.


