Invalid size for parameter embedding, Expected: N, Actual: M
요약 — 여러분이 쓴 벡터의 차원 수가 벡터 인덱스가 기대하는 것과 다릅니다. 인덱스는 생성 시 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개) 중 어느 것이 이 오류를 냈는지 알려 줍니다.
왜 발생하는가
- 임베딩 모델을 바꿨습니다. 1,024차원을 출력하던 모델이 512차원을 출력하는 모델로 교체되었습니다. 인덱스의
Dimensions는 생성 시 고정되므로 이제 모든 새 쓰기가 실패합니다. - 잘라내기(truncation)나 패딩 단계가 사라졌습니다. Matryoshka 방식 임베딩을 목표 크기로 잘라내는 파이프라인은 그 단계가 빠지면 이렇게 실패합니다.
- 인덱스 둘, 속성 이름 하나. 한 인덱스의 차원 수를 만족하는 쓰기라도 다른 테이블에서 같은 속성 위에 정의된 다른 인덱스에서는 여전히 실패할 수 있습니다.
어떻게 해결하는가
인덱스의 차원 수에 맞춰 임베딩을 다시 생성하거나, 인덱스를 삭제하고 모델의 차원 수로 새로 만드세요. 제자리에서 바꿀 방법은 없습니다: Dimensions와 DistanceFunction은 불변이므로, 모델 마이그레이션은 곧 새 인덱스와 백필을 의미합니다.
마이그레이션 동안 두 모델이 공존해야 한다면, 서로 다른 두 속성에 쓰고 각각에 별도의 벡터 인덱스를 부여하세요 — 테이블은 최대 5개까지 받습니다.
관련 문서
과금과 제한의 전체 그림은 DynamoDB 벡터 검색 가이드에 있습니다. 이 메시지의 일반적인 접두사에는 별도의 페이지가 있습니다: "One or more parameter values were invalid".