Comprendre le niveau de cohérence dans la base de données vectorielles Milvus - Partie II
Image de couverture
Cet article est écrit par Jiquan Long et transcrit par Angela Ni.
Dans le blog précédent sur la cohérence, nous avons expliqué la connotation de la cohérence dans une base de données vectorielle distribuée, couvert les quatre niveaux de cohérence - forte, staleness limitée, session et éventuelle - pris en charge dans la base de données vectorielle Milvus, et expliqué le scénario d'application le mieux adapté à chaque niveau de cohérence.
Dans cet article, nous continuerons à examiner le mécanisme qui permet aux utilisateurs de la base de données vectorielle Milvus de choisir le niveau de cohérence idéal pour différents scénarios d'application. Nous fournirons également un tutoriel de base sur la manière de régler le niveau de cohérence dans la base de données vectorielle Milvus.
Aller à :
- Le mécanisme de tic-tac temporel sous-jacent
- Horodatage de garantie
- Niveaux de cohérence
- Comment régler le niveau de cohérence dans Milvus ?
Le mécanisme de tic-tac temporel sous-jacent
Milvus utilise le mécanisme de time tick pour garantir différents niveaux de cohérence lors d'une recherche vectorielle ou d'une requête. Time Tick est le filigrane de Milvus qui agit comme une horloge dans Milvus et indique à quel moment le système Milvus se trouve. Chaque fois qu'une requête en langage de manipulation de données (DML) est envoyée à la base de données vectorielles Milvus, un horodatage est attribué à la requête. Comme le montre la figure ci-dessous, lorsque de nouvelles données sont insérées dans la file d'attente des messages par exemple, Milvus marque non seulement un horodatage sur ces données insérées, mais insère également des tics temporels à intervalles réguliers.
timetick
Prenons l'exemple de syncTs1
dans la figure ci-dessus. Lorsque les consommateurs en aval, tels que les nœuds de requête, voient syncTs1
, les composants consommateurs comprennent que toutes les données insérées avant syncTs1
ont été consommées. En d'autres termes, les demandes d'insertion de données dont les valeurs d'horodatage sont inférieures à syncTs1
n'apparaîtront plus dans la file d'attente des messages.
Garantie d'horodatage
Comme indiqué dans la section précédente, les composants consommateurs en aval, tels que les nœuds de requête, obtiennent en permanence des messages de demandes d'insertion de données et des informations temporelles à partir de la file d'attente des messages. Chaque fois qu'un time tick est consommé, le nœud d'interrogation marque ce time tick consommé comme le temps utilisable - ServiceTime
et toutes les données insérées avant ServiceTime
sont visibles pour le nœud d'interrogation.
Outre ServiceTime
, Milvus adopte également un type d'horodatage - l'horodatage de garantie (GuaranteeTS
) pour répondre aux besoins des différents utilisateurs en matière de cohérence et de disponibilité. Cela signifie que les utilisateurs de la base de données vectorielles Milvus peuvent spécifier GuaranteeTs
afin d'informer les nœuds d'interrogation que toutes les données antérieures à GuaranteeTs
doivent être visibles et intervenir lors d'une recherche ou d'une interrogation.
Il existe généralement deux scénarios lorsque le nœud de recherche exécute une demande de recherche dans la base de données vectorielles Milvus.
Scénario 1 : Exécution immédiate de la demande de recherche
Comme le montre la figure ci-dessous, si GuaranteeTs
est plus petit que ServiceTime
, les nœuds de requête peuvent exécuter la requête de recherche immédiatement.
execute_immediately
Scénario 2 : attendre jusqu'à ce que "ServiceTime > GuaranteeTs" (temps de service > temps de garantie)
Si GuaranteeTs
est plus grand que ServiceTime
, les nœuds de recherche doivent continuer à consommer le time tick de la file d'attente des messages. Les demandes de recherche ne peuvent pas être exécutées tant que ServiceTime
n'est pas supérieur à GuaranteeTs
.
wait_search
Niveaux de cohérence
Par conséquent, GuaranteeTs
est configurable dans la requête de recherche pour atteindre le niveau de cohérence que vous avez spécifié. Une valeur élevée de GuaranteeTs
garantit une cohérence élevée au prix d'une latence de recherche importante. Et un GuaranteeTs
avec une petite valeur réduit la latence de recherche mais la visibilité des données est compromise.
GuaranteeTs
Milvus est un format d'horodatage hybride. Et l'utilisateur n'a aucune idée de l'OST à l'intérieur de Milvus. Par conséquent, la spécification de la valeur deGuaranteeTs
est une tâche beaucoup trop compliquée pour les utilisateurs. Afin d'épargner les utilisateurs et de leur offrir une expérience optimale, Milvus demande uniquement aux utilisateurs de choisir le niveau de cohérence spécifique, et la base de données vectorielle Milvus traitera automatiquement la valeur GuaranteeTs
pour les utilisateurs. En d'autres termes, l'utilisateur de Milvus n'a qu'à choisir parmi les quatre niveaux de cohérence : Strong
, Bounded
, Session
, et Eventually
. Chaque niveau de cohérence correspond à une certaine valeur de GuaranteeTs
.
La figure ci-dessous illustre le site GuaranteeTs
pour chacun des quatre niveaux de cohérence de la base de données vectorielle Milvus.
garantie_ts
La base de données vectorielles Milvus prend en charge quatre niveaux de cohérence :
CONSISTENCY_STRONG
La base de données vectorielle Milvus prend en charge quatre niveaux de cohérence :GuaranteeTs
est défini sur la même valeur que le dernier horodatage du système, et les nœuds de requête attendent que le temps de service passe au dernier horodatage du système pour traiter la demande de recherche ou de requête.CONSISTENCY_EVENTUALLY
GuaranteeTs
Les nœuds d'interrogation attendent que le temps de service atteigne le dernier horodatage du système pour traiter la demande de recherche ou d'interrogation. Les nœuds de requête effectuent une recherche immédiate dans la vue des données existantes.CONSISTENCY_BOUNDED
GuaranteeTs
est fixé à une valeur relativement plus petite que le dernier horodatage du système, et les nœuds d'interrogation effectuent une recherche sur une vue de données tolérément moins mise à jour.CONSISTENCY_SESSION
: Le client utilise l'horodatage de la dernière opération d'écriture commeGuaranteeTs
afin que chaque client puisse au moins récupérer les données qu'il a lui-même insérées.
Comment régler le niveau de cohérence dans Milvus ?
Milvus prend en charge le réglage du niveau de cohérence lors de la création d'une collection ou de l'exécution d'une recherche ou d'une requête.
Effectuer une recherche de similarité vectorielle
Pour effectuer une recherche de similarité vectorielle avec le niveau de cohérence souhaité, il suffit de définir la valeur du paramètre consistency_level
comme étant soit Strong
, Bounded
, Session
, ou Eventually
. Si vous ne définissez pas la valeur du paramètre consistency_level
, le niveau de cohérence sera Bounded
par défaut. L'exemple ci-dessous effectue une recherche de similarité vectorielle avec le niveau de cohérence Strong
.
results = collection.search(
data=[[0.1, 0.2]],
anns_field="book_intro",
param=search_params,
limit=10,
expr=None,
consistency_level="Strong"
)
Effectuer une requête vectorielle
Comme pour la recherche de similarités vectorielles, vous pouvez spécifier la valeur du paramètre consistency_level
lors de l'exécution d'une requête vectorielle. L'exemple effectue une recherche vectorielle avec la cohérence Strong
.
res = collection.query(
expr = "book_id in [2,4,6,8]",
output_fields = ["book_id", "book_intro"],
consistency_level="Strong"
)
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înes de caractères 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 ?
- Le mécanisme de tic-tac temporel sous-jacent
- Garantie d'horodatage
- Niveaux de cohérence
- Comment régler le niveau de cohérence dans Milvus ?
- 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