Invalid size for parameter embedding, Expected: N, Actual: M
TL;DR — 書き込んだベクトルの次元数が、ベクトルインデックスの期待と異なります。インデックスは作成時に Dimensions を固定しており、変更はできません。インデックスの次元数で埋め込みを再生成するか、新しいインデックスを作成してください。
意味
ValidationException: One or more parameter values were invalid. Invalid size for parameter embedding, Expected: 1024, Actual: 512 IndexName: TicketEmbeddingsこれは、Dimensions: 1024 で作成されたベクトルインデックスを持つテーブルに 512 次元の埋め込みを書き込むことで、私たちが us-east-1 で捕捉したサービスの逐語的なレスポンスです。書き込みは完全に拒否され、テーブルにもインデックスにも何も入りません。
メッセージは 3 つのことを示します: ベクトル属性(embedding)、インデックスが期待する次元数、そしてあなたが送った次元数です。末尾の IndexName は、テーブルのベクトルインデックス(最大 5 個)のうちどれがこれを発生させたかを教えてくれます。
発生する理由
- 埋め込みモデルを切り替えた。 1,024 次元を出力していたモデルが、512 次元を出力するモデルに置き換わりました。インデックスの
Dimensionsは作成時に固定されるため、新しい書き込みはすべて失敗するようになります。 - 切り詰めやパディングのステップが消えた。 Matryoshka 形式の埋め込みを目標サイズにスライスするパイプラインは、そのスライスが飛ばされるとこのように失敗します。
- 2 つのインデックス、1 つの属性名。 あるインデックスの次元数を満たす書き込みでも、別のテーブルで同じ属性に対して定義された別のインデックスでは失敗しえます。
修正方法
インデックスの次元数で埋め込みを再生成するか、インデックスを削除してモデルの次元数で新しいインデックスを作成してください。その場での変更はできません。Dimensions と DistanceFunction はイミュータブルなので、モデルの移行は新しいインデックスとバックフィルを意味します。
移行の間に両方のモデルが共存しなければならない場合は、2 つの異なる属性に書き込み、それぞれに専用のベクトルインデックスを与えてください — テーブルは最大 5 個まで持てます。
関連ページ
課金と制限の全体像は DynamoDB ベクトル検索ガイドにあります。このメッセージの汎用的なプレフィックスには専用のページがあります: "One or more parameter values were invalid"。