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 式嵌入切到目标大小的流水线,一旦漏掉这一步切片,就会这样失败。
  • 两个索引,一个属性名。一次满足某个索引维度数的写入,仍然可能在另一张表上、定义在同名属性上的另一个索引处失败。

如何修复

按索引的维度数重新生成嵌入,或者删除索引、按模型的维度数新建一个。不存在原地修改:DimensionsDistanceFunction 都是不可变的,所以一次模型迁移意味着一个新索引和一次回填。

如果两个模型在迁移期间必须共存,就把它们写到两个不同的属性上,并给每个属性各建一个向量索引——一张表最多可以有 5 个。

相关内容

完整的计费与限制全貌见 DynamoDB 向量搜索指南。这条消息的通用前缀有它自己的页面:"One or more parameter values were invalid"

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。