View a markdown version of this page

Résolution des problèmes liés aux index vectoriels - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés aux index vectoriels

Le tableau suivant répertorie les problèmes courants liés à l'utilisation d'index vectoriels et explique comment les résoudre.

Symptôme Cause Résolution
ValidationException: SearchConditionExpression must be provided when SearchSchema has a HASH key L'index définit une clé de partition d'index vectoriel (HASH) dans son index SearchSchema, mais la recherche n'a pas fourni sa valeur. Ajoutez l'égalité de clé de partition de l'index vectoriel àSearchConditionExpression, par exempleCategory = :cat, avec une ExpressionAttributeValues entrée correspondante.
ValidationException: One element in SearchSchema is not defined in attribute definitions Aucun SearchSchema attribut (clé de partition d'index vectoriel ou filtre en ligne) n'est déclaré dans la AttributeDefinitions table. Ajoutez chaque SearchSchema attribut AttributeDefinitions à son type, de la même manière que les attributs clés sont déclarés pour un index secondaire global.
ValidationException: Invalid comparator used in SearchConditionExpression Un autre opérateur que celui qui = a été utilisé. Seul l'opérateur d'égalité est actuellement pris en charge pour les attributs de clé de partition d'index vectoriel et de filtre en ligne. Réécrivez la condition pour l'utiliser = uniquement. Les opérateurs de comparaison, de gamme et d'appartenance à un ensemble ne sont pas encore disponibles.
ValidationException: Provided TopK value is out of valid range TopKse situait entre 1 et 100. Définissez TopK une valeur comprise entre 1 et 100 inclus.
SearchVectorsrenvoie une erreur pendant le remplissage de l'index L'index vectoriel n'est pas encore prêt pour la recherche. Soit IndexStatus c'estCREATING, soit IndexStatus c'est ACTIVE Backfilling réglé surtrue. Vous ne pouvez pas effectuer de recherche dans un index vectoriel tant que le remblayage n'est pas terminé. Utilisez DescribeTable et attendez jusqu'à ce que ce Backfilling soit false le cas, puis relancez la recherche.
L'écriture est rejetée lors de l'écriture d'un élément avec un vecteur Le vecteur n'a pas le bon nombre de dimensions pour l'indice. Assurez-vous que la longueur du vecteur correspond à l'indiceDimensions. Consultez Écrire des éléments avec des données vectorielles.
L'écriture est rejetée avec le message « Type non valide pour le paramètre » Le type de données de l'attribut vectoriel est incorrect. DynamoDB attend une liste de nombres à virgule flottante 32 bits. Les causes courantes incluent l'envoi d'une chaîne (S), d'un scalaire numérique (N), d'un ensemble de nombres (NS) ou d'une liste contenant des éléments non numériques. Le message d'erreur indique l'index de l'élément incriminé lorsqu'un seul membre n'a pas le bon type. Envoyez l'attribut vectoriel sous la forme d'une liste (L) de nombres (N). Vérifiez que chaque élément de la liste est un nombre valide et que la longueur de la liste correspond à l'indexDimensions.
L'élément n'est plus renvoyé SearchVectors après avoir supprimé ou omis l'attribut de clé de partition de l'index vectoriel Supprimer l'attribut clé de partition d'index vectoriel d'un élément (via REMOVE inUpdateItem) ou l'omettre dans a PutItem ne produit pas d'erreur. Cependant, l'élément est désindexé en silence et n'apparaît plus dans les résultats de recherche, même si l'élément de la table de base et son intégration vectorielle existent toujours. Assurez-vous que chaque élément que vous souhaitez rendre consultable conserve l'attribut clé de partition de l'index vectoriel. Si un élément disparaît soudainement des résultats de recherche, vérifiez que son attribut de clé de partition est toujours présent sur l'élément de la table de base.
L'écriture est rejetée avec « Impossible de contenir une valeur de chaîne vide » ou une incompatibilité de type pour la clé de partition de l'index vectoriel L'attribut clé de partition de l'index vectoriel a été défini sur une chaîne vide ou écrit avec le mauvais type de données. DynamoDB rejette ces écritures car un attribut de clé d'index ne peut pas être vide et doit correspondre au type déclaré. Utilisez une valeur valide et non vide avec le type de données correct pour l'attribut de clé de partition de l'index vectoriel. Vérifiez la définition de l'index pour confirmer le type attendu.
Un attribut est absent des résultats de recherche L'index vectoriel ne projette pas cet attribut. Vous ne pouvez récupérer que les attributs projetés dans l'index. Pour renvoyer des attributs supplémentaires, recréez l'index avec une projection plus large ou réglez-le ProjectionType surALL.

Ajouter une clé de partition à un index vectoriel existant

L'index vectoriel SearchSchema est fixe au moment de sa création. Vous ne pouvez pas ajouter, supprimer ou modifier la clé de partition (HASH) après avoir créé l'index. Vous ne pouvez pas non plus modifier les attributs des filtres intégrés. Pour modifier le schéma, créez un nouvel index et migrez vers celui-ci.

Pour ajouter une clé de partition ou modifier d'autres SearchSchema attributs, procédez comme suit.

  1. Créez un nouvel index vectoriel avec la clé de partition dont vous avez besoin. Utilisez l'UpdateTableAPI avec une Create action dans le VectorIndexUpdates paramètre. Donnez un nom différent au nouvel index. Pour obtenir des instructions, veuillez consulter Ajouter un index vectoriel à une table existante.

  2. Attendez que le nouvel indice ait terminé le remblayage. Appelez DescribeTable et confirmez que IndexStatus c'est ACTIVE bien Backfilling le casfalse.

  3. Mettez à jour votre application pour envoyer des SearchVectors demandes au nouvel index. Incluez la valeur de la clé de partition dansSearchConditionExpression. Pour de plus amples informations, veuillez consulter Filtrer avec SearchConditionExpression.

  4. Après avoir confirmé les bons résultats, supprimez l'ancien index pour ne plus payer pour son stockage. Utilisez l'UpdateTableAPI avec une Delete action dans le VectorIndexUpdates paramètre. Pour obtenir des instructions, veuillez consulter Suppression d’un index vectoriel.

Les opérations d'indexation n'affectent pas les données de la table de base

La création ou la suppression d'un index vectoriel n'affecte pas la table de base ni ses éléments. DynamoDB redérive les données vectorielles à partir des éléments de la table de base lors du remblayage.