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這是我們在 us-east-1 擷取到的服務原文回應:對一張向量索引以 Dimensions: 1024 建立的表寫入一個 512 維的內嵌向量。這次寫入被直接拒絕;表和索引裡都不會落下任何東西。
訊息指名三樣東西:向量屬性(embedding)、索引期望的維度數,以及你送出的維度數。結尾的 IndexName 告訴你是這張表的哪一個向量索引(最多 5 個)引發了它。
為什麼會發生
- 你切換了內嵌模型。 一個輸出 512 維的模型取代了一個輸出 1,024 維的。索引的
Dimensions在建立時就固定了,所以現在每一次新寫入都會失敗。 - 某個截斷或填充步驟消失了。 把 Matryoshka 式內嵌向量切片到目標大小的管線,在那次切片被跳過時就會這樣失敗。
- 兩個索引、一個屬性名稱。 一次滿足某個索引維度數的寫入,仍可能在另一張表上、定義在同一個屬性上的另一個索引那裡失敗。
如何修正
以索引的維度數重新產生內嵌向量,或者刪掉索引、以模型的維度數建立一個新的。沒有原地修改這回事:Dimensions 和 DistanceFunction 都是不可變的,所以一次模型遷移就意味著一個新索引加一次回填。
如果遷移期間兩個模型必須共存,就把它們寫到兩個不同的屬性上,並給每一個屬性各自的向量索引——一張表最多可以有 5 個。
相關內容
完整的計費與限制全貌在 DynamoDB 向量搜尋指南。這則訊息的通用前綴有它自己的頁面:"One or more parameter values were invalid"。