Search vector contains invalid values

TL;DR — o seu parâmetro SearchVector tem a forma errada. Embeddings armazenados vivem dentro de um atributo L, mas o parâmetro de consulta é um array puro de valores {"N": …}. Desembrulhe o L e garanta que cada elemento seja um número simples.

O que significa

ValidationException: Search vector contains invalid values. All values in the search vector must be a 32-bit floating-point number attribute

Essa é a resposta literal do serviço que capturamos em us-east-1 ao envolver o vetor de consulta no tipo L do DynamoDB. O SearchVectors recusa a requisição antes de tocar no índice.

Por que isso acontece

O formato de transmissão é assimétrico, e quase todo mundo esbarra nisso uma vez. Um embedding armazenado em um item é um atributo List:

{"embedding": {"L": [{"N": "0.0132"}, {"N": "-0.0475"}]}}

O parâmetro de requisição SearchVector não é. Ele é um array JSON puro de valores numéricos:

[{"N": "0.0132"}, {"N": "-0.0475"}]

Envie a forma armazenada como a forma de consulta e você recebe este erro. Ele também dispara quando um elemento dentro do array é uma string, um booleano ou uma estrutura aninhada em vez de um valor N.

Como corrigir

Passe o array diretamente. Com a CLI, o payload file://query-vector.json é o array puro; nos SDKs, construa SearchVector como uma lista de números AttributeValue, não como um único valor L. Se você reutiliza o helper de marshalling que produziu o atributo armazenado, desembrulhe a saída dele antes de consultar.

A contagem de dimensões é verificada separadamente, então um vetor desembrulhado com o comprimento errado falha com uma mensagem diferente: Invalid size for parameter.

Relacionados

Como o lado da consulta funciona de ponta a ponta, com um modelo de custos medido ao vivo: o guia de pesquisa vetorial do DynamoDB.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.