Search vector contains invalid values
요약 — 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저희가 us-east-1에서 쿼리 벡터를 DynamoDB의 L 타입으로 감싸서 캡처한, 서비스의 원문 그대로의 응답입니다. 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를 하나의 L 값이 아니라 AttributeValue 숫자들의 리스트로 만드세요. 저장 속성을 만들 때 쓴 마셜링 헬퍼를 재사용한다면, 쿼리 전에 그 출력을 벗겨 내세요.
차원 수는 별도로 검사되므로, 감싸지 않았지만 길이가 잘못된 벡터는 다른 메시지로 실패합니다: Invalid size for parameter.
관련 문서
쿼리 쪽이 끝에서 끝까지 어떻게 동작하는지, 라이브로 측정한 비용 모델과 함께: DynamoDB 벡터 검색 가이드.