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 attributeEsa 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.