Search vector contains invalid values

TL;DR — SearchVector パラメータの形が間違っています。保存された埋め込みは L 属性の中に住んでいますが、クエリパラメータは {"N": …} 値の裸の配列です。L を外し、すべての要素が普通の数値であることを確認してください。

意味

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

これは、クエリベクトルを DynamoDB の L 型で包むことで、私たちが us-east-1 で捕捉したサービスの逐語的なレスポンスです。SearchVectors は、インデックスに触れる前にリクエストを拒否します。

発生する理由

ワイヤフォーマットは非対称で、ほぼ全員が一度はここでつまずきます。アイテムに保存された埋め込みは List 属性です:

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

SearchVector リクエストパラメータは違います。数値の裸の JSON 配列です:

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

保存された形をそのままクエリの形として送ると、このエラーになります。配列内の要素が N 値ではなく文字列、ブール値、ネストされた構造である場合にも発生します。

修正方法

配列を直接渡してください。CLI では、file://query-vector.json のペイロードが裸の配列そのものです。SDK では、SearchVector を 1 つの L 値としてではなく、AttributeValue の数値のリストとして構築してください。保存された属性を作ったマーシャリングヘルパーを再利用するなら、クエリの前にその出力を外してください。

次元数は別途チェックされるため、外した後の長さが違うベクトルは別のメッセージで失敗します: Invalid size for parameter

関連ページ

クエリ側がエンドツーエンドでどう動くか、ライブ計測されたコストモデルとともに: DynamoDB ベクトル検索ガイド

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。