Search vector contains invalid values

In breve — il tuo parametro SearchVector ha la forma sbagliata. Gli embedding memorizzati vivono dentro un attributo L, ma il parametro di query è un array nudo di valori {"N": …}. Togli l'involucro L e assicurati che ogni elemento sia un numero semplice.

Cosa significa

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

Questa è la risposta verbatim del servizio che abbiamo catturato in us-east-1 avvolgendo il vettore di query nel tipo L di DynamoDB. SearchVectors rifiuta la richiesta prima di toccare l'indice.

Perché succede

Il formato wire è asimmetrico, e quasi tutti ci sbattono contro una volta. Un embedding memorizzato su un item è un attributo List:

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

Il parametro di richiesta SearchVector non lo è. È un array JSON nudo di valori numerici:

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

Invia la forma memorizzata come forma di query e ottieni questo errore. Si verifica anche quando un elemento dentro l'array è una stringa, un booleano o una struttura annidata invece di un valore N.

Come risolverlo

Passa l'array direttamente. Con la CLI, il payload file://query-vector.json è l'array nudo; negli SDK, costruisci SearchVector come una lista di AttributeValue numerici, non come un unico valore L. Se riusi l'helper di marshalling che ha prodotto l'attributo memorizzato, togli l'involucro al suo output prima di interrogare.

Il numero di dimensioni viene controllato separatamente, quindi un vettore senza involucro ma della lunghezza sbagliata fallisce con un messaggio diverso: Invalid size for parameter.

Argomenti correlati

Come funziona il lato query da un capo all'altro, con un modello di costi misurato dal vivo: la guida alla ricerca vettoriale DynamoDB.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.