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 attributeQuesta è 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.