Comprendre le niveau de cohérence dans la base de données vectorielles Milvus
Image de couverture
Cet article a été rédigé par Chenglong Li et transcrit par Angela Ni.
Vous êtes-vous déjà demandé pourquoi les données que vous avez supprimées de la base de données vectorielles de Mlivus apparaissent encore dans les résultats de recherche ?
La raison la plus probable est que vous n'avez pas défini le niveau de cohérence approprié pour votre application. Le niveau de cohérence dans une base de données vectorielle distribuée est critique car il détermine à quel moment une écriture de données particulière peut être lue par le système.
Cet article vise donc à démystifier le concept de cohérence et à examiner les niveaux de cohérence pris en charge par la base de données vectorielle Milvus.
Aller à :
Qu'est-ce que la cohérence ?
Avant de commencer, nous devons d'abord clarifier la connotation de la cohérence dans cet article, car le mot "cohérence" est un terme surchargé dans l'industrie informatique. Dans une base de données distribuée, la cohérence fait spécifiquement référence à la propriété qui garantit que chaque nœud ou réplique a la même vue des données lors de l'écriture ou de la lecture des données à un moment donné. Par conséquent, nous parlons ici de cohérence comme dans le théorème CAP.
Dans le monde moderne, les répliques multiples sont couramment adoptées pour servir les entreprises en ligne de grande envergure. Par exemple, le géant du commerce en ligne Amazon réplique ses commandes ou ses données SKU dans plusieurs centres de données, zones ou même pays afin de garantir une disponibilité élevée du système en cas de panne ou de défaillance. Cela pose un défi au système : la cohérence des données entre les différentes répliques. Sans cohérence, il est très probable que l'article supprimé de votre panier Amazon réapparaisse, ce qui nuirait à l'expérience de l'utilisateur.
C'est pourquoi nous avons besoin de différents niveaux de cohérence des données pour différentes applications. Heureusement, Milvus, une base de données pour l'IA, offre une certaine flexibilité en matière de niveau de cohérence et vous pouvez définir le niveau de cohérence qui convient le mieux à votre application.
Cohérence dans la base de données vectorielle Milvus
Le concept de niveau de cohérence a été introduit pour la première fois avec la publication de Milvus 2.0. La version 1.0 de Milvus n'était pas une base de données vectorielle distribuée et nous n'avions donc pas prévu de niveaux de cohérence réglables à l'époque. Milvus 1.0 actualise les données toutes les secondes, ce qui signifie que les nouvelles données sont presque immédiatement visibles dès leur insertion et que Milvus lit la vue des données les plus récentes au moment précis où une recherche de similarité vectorielle ou une demande de renseignements est formulée.
Cependant, Milvus a été remanié dans sa version 2.0 et Milvus 2.0 est une base de données vectorielle distribuée basée sur un mécanisme pub-sub. Le théorème PACELC souligne qu'un système distribué doit faire un compromis entre la cohérence, la disponibilité et la latence. En outre, différents niveaux de cohérence correspondent à différents scénarios. C'est pourquoi le concept de cohérence a été introduit dans Milvus 2.0 et prend en charge l'ajustement des niveaux de cohérence.
Quatre niveaux de cohérence dans la base de données vectorielle Milvus
Milvus prend en charge quatre niveaux de cohérence : forte, staleness limité, session et éventuelle. L'utilisateur de Milvus peut spécifier le niveau de cohérence lorsqu'il crée une collection ou effectue une recherche ou une requête de similarité vectorielle. Cette section explique en quoi ces quatre niveaux de cohérence sont différents et quel est le scénario qui leur convient le mieux.
Fort
Strong est le niveau de cohérence le plus élevé et le plus strict. Il garantit que les utilisateurs peuvent lire la dernière version des données.
Fort
Selon le théorème de PACELC, si le niveau de cohérence est défini comme fort, la latence augmentera. Par conséquent, nous recommandons de choisir une cohérence forte lors des tests fonctionnels afin de garantir l'exactitude des résultats des tests. La cohérence forte est également la mieux adaptée aux applications qui exigent une cohérence stricte des données au détriment de la vitesse de recherche. Un exemple peut être un système financier en ligne traitant les paiements de commandes et la facturation.
L'obsolescence limitée
L'obsolescence limitée, comme son nom l'indique, autorise l'incohérence des données pendant une certaine période. Toutefois, en règle générale, les données sont toujours globalement cohérentes en dehors de cette période.
Stabilité limitée
L'obsolescence limitée convient aux scénarios qui doivent contrôler la latence de la recherche et qui peuvent accepter une invisibilité sporadique des données. Par exemple, dans les systèmes de recommandation tels que les moteurs de recommandation vidéo, l'invisibilité des données a de temps en temps un impact très faible sur le taux de rappel global, mais peut augmenter de manière significative les performances du système de recommandation. Une application permettant de suivre l'état de vos commandes en ligne en est un exemple.
Session
La session garantit que toutes les données écrites peuvent être immédiatement perçues en lecture au cours de la même session. En d'autres termes, lorsque vous écrivez des données via un client, les données nouvellement insérées deviennent instantanément consultables.
Session
Nous recommandons de choisir session comme niveau de cohérence pour les scénarios dans lesquels la demande de cohérence des données au cours d'une même session est élevée. Un exemple peut être la suppression des données d'une entrée de livre dans le système de la bibliothèque, et après confirmation de la suppression et rafraîchissement de la page (une session différente), le livre ne devrait plus être visible dans les résultats de la recherche.
Éventuel
Il n'y a pas d'ordre garanti pour les lectures et les écritures, et les répliques finissent par converger vers le même état si aucune autre opération d'écriture n'est effectuée. Dans le cadre de la cohérence éventuelle, les répliques commencent à travailler sur les demandes de lecture avec les dernières valeurs mises à jour. La cohérence éventuelle est le niveau le plus faible des quatre.
Éventuelle
Cependant, selon le théorème PACELC, la latence de recherche peut être considérablement réduite en sacrifiant la cohérence. Par conséquent, la cohérence éventuelle convient mieux aux scénarios qui n'exigent pas une grande cohérence des données, mais qui requièrent des performances de recherche ultra-rapides. Un exemple peut être la recherche de critiques et d'évaluations de produits Amazon avec une cohérence éventuelle.
Note de fin
Pour en revenir à la question posée au début de cet article, les données supprimées sont toujours renvoyées dans les résultats de recherche parce que l'utilisateur n'a pas choisi le niveau de cohérence approprié. La valeur par défaut du niveau de cohérence est bounded staleness (Bounded
) dans la base de données vectorielle Milvus. Par conséquent, la lecture des données peut prendre du retard et Milvus peut lire la vue des données avant que vous n'ayez effectué des opérations de suppression au cours d'une recherche de similarité ou d'une requête. Toutefois, ce problème est simple à résoudre. Il vous suffit de régler le niveau de cohérence lors de la création d'une collection ou de la réalisation d'une recherche ou d'une requête de similarité vectorielle. C'est simple !
Dans le prochain article, nous dévoilerons le mécanisme et expliquerons comment la base de données vectorielles Milvus atteint différents niveaux de cohérence. Restez à l'écoute !
Prochaines étapes
Avec la sortie officielle de Milvus 2.1, nous avons préparé une série de blogs présentant les nouvelles fonctionnalités. En savoir plus sur cette série de blogs :
- Comment utiliser les données de chaîne pour renforcer vos applications de recherche de similarité
- Utilisation de Milvus embarqué pour installer et exécuter instantanément Milvus avec Python
- Augmenter le débit de lecture de votre base de données vectorielle avec des répliques en mémoire
- Comprendre le niveau de cohérence dans la base de données vectorielle Milvus
- Comprendre le niveau de cohérence dans la base de données vectorielle Milvus (partie II)
- Comment la base de données vectorielle Milvus assure-t-elle la sécurité des données ?
- Qu'est-ce que la cohérence ?
- Quatre niveaux de cohérence dans la base de données vectorielle Milvus
- Note de fin
- Prochaines étapes
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word