단북

이미지를 멀티모달 모델에 보낼 때 Base64와 멀티파트 중 무엇을 선호하나요?

멀티모달 모델에 이미지를 전송하는 두 방식(Base64 인라인 vs multipart/form-data)의 장단점과 선택 기준을 정리합니다.

멀티모달 모델에 이미지를 보낼 때 흔히 두 방식을 씁니다. 정답은 상황에 따라 다르며, 트레이드오프를 이해해 선택하는 것이 중요합니다.

1. Base64 인라인 (JSON)

이미지를 Base64 문자열로 인코딩해 JSON 본문(또는 데이터 URI)에 담아 보냅니다.

  • 장점 — 단일 JSON 요청으로 텍스트·이미지를 함께 전송, 구조 단순, 많은 LLM API가 이 형식을 직접 받음.
  • 단점 — Base64는 크기가 약 33% 증가, 큰 JSON 파싱·메모리 부담, 대용량/다수 이미지에 비효율.
// 예: 데이터 URI로 인라인 전송
{ type: 'image_url', image_url: { url: `data:image/jpeg;base64,${b64}` } }

2. 멀티파트 (multipart/form-data)

이미지를 바이너리 그대로 폼 파트로 보냅니다(파일 업로드 방식).

  • 장점 — 바이너리라 오버헤드 없음, 대용량·다중 파일에 효율적, 스트리밍 업로드 가능.
  • 단점 — 요청 구성이 조금 더 복잡, 모델 API가 직접 받지 못하면 먼저 업로드→URL/파일 ID로 참조하는 단계가 필요.
const fd = new FormData();
fd.append('image', file); // 바이너리 그대로
fd.append('prompt', text);
await fetch('/api/vision', { method: 'POST', body: fd });

선택 기준

상황선호
작은 이미지, 단순 단일 요청Base64 인라인
큰 이미지·다중 파일·업로드멀티파트(또는 업로드→참조)
API가 한쪽만 지원그 형식

일반적으로 작고 적은 이미지는 Base64가 간편하고, 크거나 많은 이미지는 멀티파트(또는 사전 업로드 후 URL 참조) 가 대역폭·메모리 면에서 유리합니다. 사용하는 모델 API가 무엇을 받는지도 결정 요인입니다.

멀티모달 이미지 전송 방식에 대한 설명으로 옳은 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.