Search vector contains invalid values
TL;DR — SearchVector parametreniz yanlış şekilde. Saklanan embedding'ler bir L özniteliğinin içinde yaşar, ama sorgu parametresi {"N": …} değerlerinden oluşan çıplak bir dizidir. L'yi açın ve her öğenin düz bir sayı olduğundan emin olun.
Ne anlama gelir
ValidationException: Search vector contains invalid values. All values in the search vector must be a 32-bit floating-point number attributeBu, sorgu vektörünü DynamoDB'nin L türüne sararak us-east-1'de yakaladığımız birebir servis yanıtıdır. SearchVectors, index'e dokunmadan önce isteği reddeder.
Neden olur
Tel formatı asimetriktir ve buna neredeyse herkes bir kez takılır. Bir öğede saklanan embedding bir List özniteliğidir:
{"embedding": {"L": [{"N": "0.0132"}, {"N": "-0.0475"}]}}SearchVector istek parametresi öyle değildir. Sayı değerlerinden oluşan çıplak bir JSON dizisidir:
[{"N": "0.0132"}, {"N": "-0.0475"}]Saklanan şekli sorgu şekli olarak gönderin ve bu hatayı alırsınız. Dizinin içindeki bir öğe N değeri yerine bir string, boolean ya da iç içe bir yapı olduğunda da tetiklenir.
Nasıl düzeltilir
Diziyi doğrudan geçirin. CLI'da file://query-vector.json yükü çıplak dizidir; SDK'larda SearchVector'ı tek bir L değeri olarak değil, AttributeValue sayılarından oluşan bir liste olarak kurun. Saklanan özniteliği üreten marshalling yardımcısını yeniden kullanıyorsanız, sorgulamadan önce çıktısını açın.
Boyut sayısı ayrıca denetlenir, bu yüzden yanlış uzunluktaki açılmış bir vektör farklı bir mesajla başarısız olur: Invalid size for parameter.
İlgili sayfalar
Sorgu tarafının uçtan uca nasıl çalıştığı, canlı ölçülmüş bir maliyet modeliyle birlikte: DynamoDB vektör arama rehberi.