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.
ValidationException: Cannot search backfilling vector index: <indexName> ou ValidationException: The table does not have the specified index: <indexName> L'index vectoriel n'est pas encore prêt pour la recherche. IndexStatusestCREATING, soit pendant que l'index est provisionné, soit pendant qu'il remplit les données existantes. Utilisez DescribeTable et attendez que ce IndexStatus soit ACTIVE le Backfilling cas ou nontrue, puis relancez la recherche. Traitez-le ValidationException comme pouvant être réessayé lors de la création de l'index.
ValidationException: The table does not have the specified index: <indexName>quand l'index existe et DescribeTable indique IndexStatus ACTIVE Le point de terminaison de recherche dédié n'a pas encore commencé à servir l'index. DescribeTableet SearchVectors sont desservis par différents points de terminaison, et le point de terminaison de recherche peut être brièvement retardé une fois que l'index est devenuACTIVE. Relancez la recherche. Traiter ValidationException comme pouvant être réessayée immédiatement après l'obtention d'un index. ACTIVE Si l'erreur persiste, confirmez le nom de l'index et vérifiez que votre réseau autorise le nom d'hôte du point de terminaison de 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 de 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.