GCP와 AWS의 임베딩 모델 6가지 비교를 통한 감시 카메라 영상 일본어 검색
요약
본 기사는 감시 카메라 영상에서 일본어 검색을 수행하기 위해 GCP와 AWS의 6가지 임베딩 모델을 비교 검증한 결과를 요약합니다. 영상을 직접 벡터화하는 대신, Gemini를 이용해 시간별 설명문을 생성하고 이를 임베딩하여 검색에 활용했습니다. 테스트 결과, Cohere 계열이 가장 좋은 성능을 보였습니다.
핵심 포인트
- 임베딩 방식: 영상 자체보다 '설명문'을 거치는 것이 효과적입니다.
- 비교 모델: GCP와 AWS의 6가지 임베딩 모델을 비교 검증했습니다.
- 최적 모델: Amazon Bedrock 경유 Cohere 계열이 가장 높은 검색 정확도를 보였습니다.
서론
안녕하세요, Fusic의 오미야입니다.
이번에는 고정된 감시 카메라 등의 영상에서 '벤치에서 일어나 걸어 나가는 사람', '흰 차가 주차장에 들어와 멈추는 모습'처럼, 일본어 문장으로 장면을 검색하고 싶다라는 주제로 기술 검증을 진행했습니다.
진행 과정은 다음과 같습니다.
- 영상을 Gemini에 전달하여,
5초 간격의 설명문을 일본어로 생성하게 하고 -
그 설명문을 임베딩 모델로 벡터화하고 -
일본어 질문 문장도 벡터화한 뒤,
비슷한 순서대로 5초 구간을 나열합니다.

이 중 '2. 임베딩 모델'을 어떤 것을 사용할지를 GCP와 AWS의 6가지 모델로 비교해 보았습니다.
본 기사는 그 결과의 요약입니다.
결론
- 6개 모델 모두,
**영상 검색 결과 상위 3건에 정답 장면이 포함된 비율은 60~80%**였습니다. -
가장 좋았던 것은 Amazon Bedrock을 경유한 Cohere 계열(Embed v4, Embed Multilingual v3)이었습니다. -
어떤 모델로도 상위에 올릴 수 없었던 문제는 임베딩 측면이 아니라 설명문 생성 쪽에 원인이 있었습니다.
전제
Q1. 왜 영상을 직접 임베딩하지 않는가
이번에 비교한 모델 중 Gemini Embedding 2와 Nova MME는 영상을 그대로 벡터로 만들 수 있습니다.
그럼에도 설명문을 거친 이유는 다음과 같습니다.
| 관점 | 영상을 직접 임베딩할 경우 | 설명문을 경유하는 방식 (이번) |
|---|---|---|
| 처리 단계 | 1단계 (영상 → 벡터) | 2단계 (영상 → 설명문 → 벡터) |
| ... | ||
| 이 표는 공식 문서를 기반으로 정리한 것이며, 영상을 직접 임베딩하는 방식은 이번에 시도하지 않았습니다. |
언젠가 시도해 보고 싶기는 합니다.
참고로 Google의 공식 샘플도
- 임베딩형 (BigQuery 또는 Gemini Embedding 2로 영상을 벡터화)
- 설명문형 (Gemini로 타임스탬프가 포함된 설명을 출력)
두 가지 계통으로 나뉘는 것 같습니다.
따라서 이번에는 설명문형 방식으로 실제로 비교 검증해 보기로 했습니다🫡
Q2. 왜 설명문 생성에 Gemini를 사용했는가
- 5분짜리 영상을 한 번 전달하는 것만으로, 5초 간격의 60개 구간을 JSON(구조화된 출력) 형태로 반환해 주는 모델이었기 때문입니다.
- 비용은 5분 영상 1건당 약 4~5센트 정도였습니다.
- Amazon Bedrock의 다른 모델로도 같은 것을 시도했지만, 구조화 출력이 불가능한 모델이거나 해서 비교 검증 자체가 어려웠습니다. (제대로 조사하면 좋은 모델이 있을지도 모릅니다)
Q2-2. 왜 1회당 5분짜리 영상인가
- 자세히 검증하지는 못했지만, 영상 길이는 30초, 1분, 5분, 10분으로 비교했습니다.
- 어떤 생성 결과의 정확도도 높았기 때문에 준비한 샘플 영상에 맞춰 5분으로 했습니다.
- 영상 한 건당 정보량에 따라 변경해야 한다고 생각합니다. (물론 프롬프트도)
Q3. 왜 5초 단위인가
- '이 장면을 보고 싶다'라고 느꼈을 때, 바로 그 위치부터 재생할 수 있는 세밀함으로 하고 싶었기 때문입니다.
- 5초마다 설명문 1건 = 벡터 1개로 만들고, 검색 결과도 5초 간격으로 반환합니다.
- 이 부분은 입력하고 싶은 영상의 특성에 따라 변경해야 한다고 생각합니다.
Q4. 영상 데이터를 어떻게 준비할 것인가
- MEVA라는 공개 데이터셋(CC BY 4.0)의 고정 카메라 영상을 사용했습니다.
- 평가에 사용한 것은 4대 카메라 × 5분 = **240구간 (5초 × 60개 구간 × 4대)**입니다. - 미국 시설 외부, 낮 시간대의 영상입니다. 정보량이 적을 수도 있습니다.

평가에 사용한 4대 카메라의 영상 (MEVA, CC BY 4.0)
Q5. 정답 데이터는 어떻게 만들었나
실제로 영상을 보면서, 30개의 질문 문장과 그 정답인 5초 구간을 만들었습니다.
- 정답이 있는 문제: 25개 (사람 6・차량 6・행동 6・속성 7)
- 해당 없음 문제: 5개 (영상에 없는 장면을 질문)
예를 들면 이렇습니다.
| 종류 | 질문문 예시 |
|---|---|
| 사람 | 여행 가방을 끌고 길을 걷는 두 사람 |
| ... |
| 모델 | 클라우드 | 종류 | 차원 | 선택 이유 |
|---|---|---|---|---|
| Cohere Embed v4 (이하 Cohere v4) | AWS (Bedrock) | 멀티모달 | 1536 | Bedrock에서 사용 가능한 Cohere의 최신 모델. 일본어 대응이 공식적으로 명시되어 있음 |
| ... | ||||
| 각 클라우드에서 사용할 수 있는 다국어 임베딩 모델을 선택했습니다. 이번에는 텍스트만 임베딩하지만, 각 클라우드의 최신 모델이 멀티모달이기 때문에 그것까지 포함했습니다. |
비교를 위해 텍스트 전용 모델도 넣었습니다.
문서와 질문문의 지정 방법 (모델별)
임베딩 모델의 상당수는 '검색되는 쪽의 문서'와 '검색하는 질문문'을 구분하여 임베딩합니다.
지정 방법은 모델마다 다르기 때문에 각 사의 공식 권장 방식에 따랐습니다.
| 모델 | 문서/질문문 지정 |
|---|---|
| Cohere Embed v4 | input_type : search_document / search_query |
| Cohere Embed Multilingual v3 | input_type : search_document / search_query |
| gemini-embedding-2 | 문두에 `title: none |
| gemini-embedding-001 | task_type : RETRIEVAL_DOCUMENT / RETRIEVAL_QUERY |
| Nova MME | embeddingPurpose : GENERIC_INDEX / TEXT_RETRIEVAL |
| text-multilingual-embedding-002 | task_type : RETRIEVAL_DOCUMENT / RETRIEVAL_QUERY |
JSON을 자연문으로 만든 후 임베딩하기
Gemini에서는 5초마다 다음과 같은 JSON이 반환됩니다. (간략화함)
{
"index": 28,
"start": "02:20",
...
}
이를 그대로 임베딩하는 것이 아니라, 기호나 키 이름을 제거하고 하나의 문장으로 변환(평탄화)한 후 임베딩해 보았습니다.
요약:갈색 옷의 인물이 흰색 SUV의 운전석에 탑승하고, 검은 옷의 인물은 화면 오른쪽 아래로 사라집니다. / 인물:1명・갈색 상의, 검은 바지・흰색 SUV의 운전석 문을 열고 탑승 / 인물:1명・검은 계열 의복・화면 오른쪽 아래로 걸어감 / 차량:SUV・흰색・문이 열림 / 사건:흰색 SUV의 운전석 문이 개폐되고, 인물이 흰색 SUV에 탑승함
'구조화 데이터는 기호를 제거하고 문장으로 만든 후 임베딩하는 것이 좋다'는 해설(Optimizing Vector Search: Why You Should Flatten Structured Data)이 있어, 이번에는 이를 참고해 보았습니다.
JSON 그대로일 경우와 문장으로 변환했을 경우의 비교는 이번에는 하지 않았으므로, 이 부분은 별도로 검증해야 할 것 같습니다.
임베딩 모델만 바꿔보기
공평하게 비교하기 위해 임베딩 모델 외에는 모두 동일하게 설정했습니다.
- 설명문: Gemini로 한 번만 생성하여 모든 모델에 동일하게 사용
- 임베딩할 문장: 위의 평탄화된 문장 (모든 모델 공통)
- 검색: DuckDB에 벡터를 저장하고, 240구간 전체와의 유사도(코사인 유사도)를 계산
평가 방법
- Hit@3: 상위 3개 안에 정답 구간이 하나라도 포함되어 있으면 성공. 총 25문제 중 몇 문제가 성공했는지.
- MRR: 첫 번째 정답이 몇 위에 나왔는지. 1위면 1점, 2위면 0.5점, 3위면 0.33점...의 평균. 1에 가까울수록 정답이 상위에 나오고 있음
결과
전체

| 모델 | 종류 | Hit@3 | MRR | 정답이 1위 |
|---|---|---|---|---|
| Cohere Embed v4 | 멀티모달 | 80%(20/25) | 0.690 | 15문 |
| Cohere Embed Multilingual v3 | 텍스트 전용 | 76%(19/25) | 0.682 | 15문 |
| gemini-embedding-2 | 멀티모달 | 68%(17/25) | 0.595 | 12문 |
| gemini-embedding-001 | 텍스트 전용 | 68%(17/25) | 0.566 | 11문 |
| ... | ||||
| 어떤 모델도 일본어 질문 문장으로 장면을 찾는 것 자체는, 어느 것이든 실현할 수 있음을 알게 되었습니다. |
오차를 고려해도 차이가 있다고 말할 수 있을까
문제 자체가 25문밖에 되지 않기 때문에, 단 1문만 달라도 Hit@3는 4포인트나 움직입니다.
단순한 우연의 차이가 아니라 오차를 고려해도 차이가 있다고 말할 수 있는지, 일단 확인해 보았습니다.

검은색 선으로 되어 있는 부분이 차이가 있다고 할 수 있는 조합입니다.
Hit@3: Cohere의 2개 모델이, text-multilingual-embedding-002를 능가했습니다 (2조)
MRR: 차이가 있다고 말할 수 있는 5조는, 모두 Cohere 계열이 우세
결과에서 알게 된 점 등
① Cohere 계열(Bedrock 경유)이 가장 좋았다
Cohere Embed v4와 v3는 Hit@3도 MRR도 상위 2위에 있었습니다.
특히 MRR이 높았고, 정답이 1위에 나온 문제가 25문 중 15문이었습니다.
검색 결과의 가장 위를 보면, 대략 목적하는 장면이 나옵니다.
② 모델에 따라 순위가 갈린 문제

사람이나 차의 유무를 묻는 간단한 문제는 어느 모델에서도 상위에 나왔습니다.
순위가 갈린 것은, 동작이나 복장/색상 등의 세밀한 특징을 묻는 문제입니다.
| 질문 문장 | Cohere v4 | Cohere v3 | gemini-2 | gemini-001 | Nova MME | text-ml-002 |
|---|---|---|---|---|---|
지면에서 물건을 집어 올리는 사람 | 1위 | 1위 | 40위 | 14위 | 2위 | 2위 |
| 무늬가 있는 니트 모자를 쓴 사람 | 3위 | 79위 | 34위 | 14위 | 10위 | 13위 |
| 진한 파란색 밴이 앞에 주차되어 있다 | 1위 | 28위 | 2위 | 10위 | 2위 | 11위 |
6개 모델 모두 상위 3건에 들지 못한 문제
25문 중 3문은 6개 모델 모두에서 상위 3건에 들지 못했습니다.
설명문을 살펴보니, 원인은 설명문(생성 측)이었습니다.
| 질문 문장 | 정답 구간의 설명문 | 원인 |
|---|---|---|
| 뒤쪽에 흰색 대형 버스가 보인다 | 버스 묘사 없음 | 주차된 배경 물건은 쓰지 않도록 지시했음 |
| ... | 색상의 오류와, 문 동작을 놓침 |
→ 설명문으로 생성되지 않은 내용은, 그 이후 어떤 임베딩 모델을 사용해도 검색할 수 없습니다.
정확도를 높이려면, 임베딩 모델보다 설명문 생성 측이 될 것 같습니다.
(설명문 생성을 거치는 이번 구성이라면, 이런 구분하기가 쉽네요.)
색상 인식은 어렵다
또 흥미로웠던 것이,
왼쪽에 영상, 오른쪽에 순위・유사도・설명문을 표시합니다.
영상 아래의 회색 띠가 히트한 5초 구간입니다.
1~3위 모두 실제로 흰 SUV 차량이 타고 내리는 장면이 나왔습니다.
요약
| 관점 | 결과 |
|---|---|
| 일본어로 장면을 찾을 수 있는가 | 어떤 모델로도 충분히 가능합니다 (상위 3건에 정답: 60~80%) |
| ... |
- AWS를 구성한다면 Cohere Embed v4, GCP를 구성한다면 gemini-embedding-2가 좋을 것 같다는 것을 알게 되었습니다.
- 설명문은 단순한 텍스트이므로, 'Gemini(GCP)로 생성하여, Cohere(AWS)로 임베딩'하는 조합도 설계에 따라 잘 구현할 수 있을 것 같습니다.
주의점
- 문제가 25문제로 적기 때문에, 세부적인 순위는 문제를 늘리면 달라질 가능성이 있습니다.
- 사용한 것은 미국 고정 카메라의 주간 영상입니다. 야간이나 화각이 다른 카메라에서는 테스트하지 않았습니다.
앞으로는 설명문 작성 방식 개선이나, 키워드 검색과의 조합,
그리고 영상을 직접 임베딩하는 방법도 시도해 보고 싶습니다.
그럼요!
참고
토론

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기