Search vector contains invalid values

TL;DR — tu parámetro SearchVector tiene la forma equivocada. Los embeddings guardados viven dentro de un atributo L, pero el parámetro de la query es un array pelado de valores {"N": …}. Desenvuelve la L y asegúrate de que cada elemento es un número plano.

Qué significa

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

Esa es la respuesta literal del servicio que capturamos en us-east-1 envolviendo el vector de consulta en el tipo L de DynamoDB. SearchVectors rechaza la solicitud antes de tocar el índice.

Por qué ocurre

El formato de wire es asimétrico, y casi todo el mundo se topa con esto una vez. Un embedding guardado en un item es un atributo List:

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

El parámetro de solicitud SearchVector no lo es. Es un array JSON pelado de valores numéricos:

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

Envía la forma guardada como forma de consulta y recibes este error. También se dispara cuando un elemento dentro del array es una cadena, un booleano o una estructura anidada en lugar de un valor N.

Cómo solucionarlo

Pasa el array directamente. Con la CLI, el payload file://query-vector.json es el array pelado; en los SDK, construye SearchVector como una lista de números AttributeValue, no como un único valor L. Si reutilizas el helper de marshalling que produjo el atributo guardado, desenvuelve su salida antes de consultar.

El número de dimensiones se comprueba por separado, así que un vector desenvuelto con la longitud equivocada falla con un mensaje distinto: Invalid size for parameter.

Relacionado

Cómo funciona el lado de la consulta de principio a fin, con un modelo de costes medido en vivo: la guía de búsqueda vectorial en DynamoDB.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.