Search vector contains invalid values
TL;DR — parameter SearchVector Anda bentuknya salah. Embedding yang tersimpan hidup di dalam atribut L, tetapi parameter query adalah array telanjang berisi nilai {"N": …}. Buka bungkus L-nya, dan pastikan setiap elemen adalah angka polos.
Apa artinya
ValidationException: Search vector contains invalid values. All values in the search vector must be a 32-bit floating-point number attributeItu respons layanan verbatim yang kami tangkap di us-east-1 dengan membungkus query vector dalam tipe L DynamoDB. SearchVectors menolak request sebelum menyentuh indeks.
Mengapa itu terjadi
Format wire-nya asimetris, dan hampir semua orang mengalaminya sekali. Embedding yang tersimpan pada item adalah atribut List:
{"embedding": {"L": [{"N": "0.0132"}, {"N": "-0.0475"}]}}Parameter request SearchVector bukan. Ia adalah array JSON telanjang berisi nilai angka:
[{"N": "0.0132"}, {"N": "-0.0475"}]Kirim bentuk tersimpan sebagai bentuk query dan Anda mendapat error ini. Ia juga muncul ketika sebuah elemen di dalam array berupa string, boolean, atau struktur bersarang alih-alih nilai N.
Bagaimana cara memperbaikinya
Lewatkan array-nya secara langsung. Dengan CLI, payload file://query-vector.json adalah array telanjang; di SDK, bangun SearchVector sebagai list angka AttributeValue, bukan satu nilai L. Jika Anda memakai ulang helper marshalling yang menghasilkan atribut tersimpan, buka bungkus keluarannya sebelum meng-query.
Jumlah dimensi diperiksa terpisah, jadi vektor tanpa bungkus yang panjangnya salah gagal dengan pesan berbeda: Invalid size for parameter.
Terkait
Cara kerja sisi query dari ujung ke ujung, dengan model biaya yang diukur live: panduan vector search DynamoDB.