광고
~ / posts / developer
💻 개발자

임베딩 모델 고르기, API·오픈소스 비용과 차원별 저장 용량 비교

RAG 나 의미 검색을 붙이려고 임베딩 모델을 고르다 보면 리더보드 점수와 100만 토큰당 단가부터 비교하게 돼요. 그런데 계산해 보면 임베딩 호출비는 전체 비용에서 가장 작은 항목인 경우가 많아요. 한국어 문서 100만 청크(4억 토큰)를 한 번 색인하는 비용은 2026년 10월 공식 가격표 기준으로 8~80달러예요. 그보다 큰 돈은 벡터를 몇 차원·어떤 자료형으로 저장하느냐(메모리), 상위 문서를 다시 매기는 재정렬(리랭커)에서 나가요.

그래서 이 글은 원리 대신 고를 때 정해야 하는 다섯 가지를 숫자로 다뤄요. API 와 직접 띄우는 오픈소스 중 무엇을 쓸지, 차원을 몇으로 줄일지, 양자화를 할지, 리랭커를 붙일지, 모델을 바꿀 때 무엇이 깨지는지예요. 단가는 OpenAI·Google·Voyage AI 의 공식 가격표를 2026년 10월 27일에 열어 확인한 값만 썼어요.

광고

임베딩 비용은 어디서 나가나 — 네 군데로 나눠 보기

임베딩을 붙인 검색 한 번에는 돈과 시간이 드는 자리가 네 군데 있어요. 어디가 큰지 먼저 갈라 놓아야 모델 비교가 의미 있어요.

문서 색인(한 번), 질의 임베딩(질문마다 한 번), 벡터 검색(메모리), 재정렬(질문마다 후보 수만큼)의 네 단계와 각 단계에서 비용을 정하는 변수를 나란히 놓은 흐름도
색인은 한 번, 질의 임베딩은 짧고, 저장과 재정렬이 매달 쌓여요
자리언제 드나비용을 정하는 것크기 감
문서 색인처음 한 번 + 모델 바꿀 때마다총 토큰 수 × 단가수 달러~수십 달러
질의 임베딩질문마다 한 번질문 길이(보통 수십 토큰)월 수 달러, 지연 1회 왕복
벡터 저장·검색매달벡터 수 × 차원 × 자료형메모리 수 GB~수십 GB
재정렬(선택)질문마다후보 문서 수 × 문서 길이월 수백~수천 달러

표에서 보듯 모델 단가가 직접 곱해지는 건 위 두 줄이고, 그 둘은 생각보다 작아요. 차원은 셋째 줄을, 리랭커는 넷째 줄을 정해요. 차원 선택이 단가 선택보다 중요한 이유가 여기 있어요.

2026년 10월 임베딩 API 가격 비교 — OpenAI·Gemini·Voyage

아래는 텍스트 입력 100만 토큰당 표준 요금이에요. OpenAI 가격표, Gemini API 가격표, Voyage AI 가격표에서 옮겼어요.

모델100만 토큰당기본 차원고를 수 있는 차원최대 입력
text-embedding-3-small0.02달러1536dimensions 로 축소8,192토큰
text-embedding-3-large0.13달러3072dimensions 로 축소8,192토큰
gemini-embedding-20.20달러 (배치 0.10)3072768·1536 권장8,192토큰
voyage-4-lite0.02달러1024256·512·204832,000토큰
voyage-40.06달러1024256·512·204832,000토큰
voyage-4-large0.12달러1024256·512·204832,000토큰

차원·입력 길이는 OpenAI 임베딩 가이드, Gemini 임베딩 문서, Voyage 텍스트 임베딩 문서 기준이에요. Voyage 의 4세대 모델은 계정당 처음 2억 토큰이 무료이고, 배치 API 는 33% 할인이지만 무료 토큰은 배치에 적용되지 않는다고 적혀 있어요. Gemini Embedding 2 는 텍스트 말고도 이미지·음성·영상·PDF 를 같은 공간에 넣는 멀티모달 모델이라, 텍스트만 쓴다면 단가가 높은 편이에요.

토큰 수는 모델마다 다르게 세요. OpenAI 가이드는 3세대 임베딩 모델에 cl100k_base 인코딩을 쓰라고 적어 두었는데, 한국어 LLM 토큰 비용 비교에서 잰 예문 기준으로 이 인코딩은 한국어 1,000자당 약 872토큰이었어요. 아래 계산은 비교를 위해 모든 모델에 같은 토큰 수(청크당 400토큰, 한국어 약 460자) 를 가정했어요. 실제 청구 토큰은 각 회사 토크나이저로 다시 세야 해요.

문서 100만 청크 색인 비용

4억 토큰을 한 번 임베딩할 때의 비용이에요. 무료 토큰은 빼고 정가로 계산했어요.

문서 100만 청크(4억 토큰) 1회 색인 비용
text-embedding-3-smalltext-embedding-3-small · 8달러8달러voyage-4-litevoyage-4-lite · 8달러8달러voyage-4voyage-4 · 24달러24달러Gemini Embedding 2 배치Gemini Embedding 2 배치 · 40달러40달러voyage-4-largevoyage-4-large · 48달러48달러text-embedding-3-largetext-embedding-3-large · 52달러52달러Gemini Embedding 2Gemini Embedding 2 · 80달러80달러

Voyage 4세대는 계정당 2억 토큰 무료라 실제로는 절반만 청구돼요(voyage-4-large 24달러)

단위: 달러 · 자료: OpenAI·Gemini·Voyage AI 공식 가격표(2026-10-27 확인)로 직접 계산, 청크당 400토큰 가정
표로 보기
구분색인 비용
text-embedding-3-small8
voyage-4-lite8
voyage-424
Gemini Embedding 2 배치40
voyage-4-large48
text-embedding-3-large52
Gemini Embedding 280

가장 비싼 선택도 80달러예요. 질의 쪽은 더 작아요. 질문 하나를 30토큰으로 잡으면 월 100만 건이 3,000만 토큰이라 text-embedding-3-small 0.6달러, text-embedding-3-large 3.9달러, Gemini Embedding 2 6달러예요. 그러니 단가 차이 6~10배는 대부분의 서비스에서 월 수십 달러 차이이고, 품질이 조금이라도 낫다면 비싼 모델을 써도 되는 구간이에요.

품질은 단가만큼 크게 벌어지지 않아요. OpenAI 가이드가 밝힌 MTEB 평균은 text-embedding-3-small 62.3%, text-embedding-3-large 64.6%, 이전 세대 ada-002 61.0%예요. 단가는 6.5배인데 평균 점수 차이는 2.3%포인트예요. 다만 평균은 평균일 뿐이에요. MTEB 논문은 8개 작업·58개 데이터셋·112개 언어로 33개 모델을 재고 모든 작업에서 앞서는 방법은 없다고 결론 냈어요. 내 언어·내 작업 종류로 걸러 본 점수와, 결국에는 내 데이터로 잰 점수가 기준이에요.

임베딩 차원 줄이기 — 차원·자료형별 저장 용량 계산

벡터 하나의 크기는 차원 × 자료형 바이트 예요. float32 는 4바이트, int8 은 1바이트, 이진은 1비트(8분의 1바이트)예요. 벡터 100만 개로 곱하면 아래와 같아요.

벡터 100만 개 저장 용량 (인덱스 오버헤드 제외)
float32int8이진(binary)
02.557.51012.515384차원 · float32 1.5GB384차원 · int8 0.384GB384차원 · 이진(binary) 0.048GB384차원768차원 · float32 3.1GB768차원 · int8 0.768GB768차원 · 이진(binary) 0.096GB768차원1024차원 · float32 4.1GB1024차원 · int8 1GB1024차원 · 이진(binary) 0.128GB1024차원1536차원 · float32 6.1GB1536차원 · int8 1.5GB1536차원 · 이진(binary) 0.192GB1536차원3072차원 · float32 12.3GB3072차원 · int8 3.1GB3072차원 · 이진(binary) 0.384GB3072차원

HNSW 같은 그래프 인덱스는 이웃 목록을 따로 저장해서 실제 메모리는 이보다 커요

단위: GB · 자료: 차원 × 바이트 × 1,000,000 으로 직접 계산 (1GB = 10억 바이트)
표로 보기
구분float32int8이진(binary)
384차원1.50.3840.048
768차원3.10.7680.096
1024차원4.110.128
1536차원6.11.50.192
3072차원12.33.10.384

3072차원 float32 는 100만 개에 12.3GB예요. 1,000만 청크면 123GB라 메모리에 올려 두는 벡터 DB 에서는 서버 등급이 바뀌는 크기예요. 같은 데이터를 1024차원 int8 로 두면 10.2GB로 12분의 1이에요. GB 와 GiB 차이가 헷갈리면 데이터 용량 변환기로 1000·1024 기준을 바꿔 보면 돼요. 인덱스 종류별 그래프 오버헤드와 양자화 손실은 벡터 인덱스 고르기에서 따로 계산했어요.

차원을 줄이는 방법은 모델마다 달라요. 여기서 실수가 잦아요.

API 와 오픈소스 직접 서빙 — 손익분기 계산

오픈소스 모델을 직접 띄우면 토큰당 요금은 없지만 GPU(또는 CPU) 시간이 들어요. 비교는 간단해요. 서버 시간당 비용 ÷ API 토큰 단가 = 그 서버가 한 시간에 처리해야 본전인 토큰 수예요.

아래는 시간당 1달러짜리 서버를 가정한 예시 계산이에요. 실제 단가는 쓰는 클라우드 가격표로 바꿔 넣으면 돼요.

비교 대상 API본전 처리량(초당)상시 가동 월 730달러 = API 몇 토큰어치
0.02달러 (3-small·voyage-4-lite)약 13,900토큰/초365억 토큰
0.06달러 (voyage-4)약 4,600토큰/초약 122억 토큰
0.13달러 (3-large)약 2,100토큰/초약 56억 토큰
0.20달러 (Gemini Embedding 2)약 1,400토큰/초36.5억 토큰

내 서버가 이 처리량을 넘는지는 모델 크기·배치 크기·청크 길이에 따라 달라서 직접 재야 해요. 넘는다 해도 서버를 계속 바쁘게 돌릴 수 있을 때만 직접 서빙이 싸져요. 문제는 가동률이에요. 4억 토큰 색인을 끝낸 뒤 질의만 들어오는 서비스라면 월 토큰이 수천만 개라 서버는 대부분 놀아요. 그 경우 월 730달러를 내고 API 로 1달러 안쪽이면 될 일을 하는 셈이에요.

그래도 직접 서빙이 맞는 경우가 있어요.

오픈소스 쪽에서는 입력 길이를 꼭 봐요. 예를 들어 multilingual-e5-small 모델 카드는 384차원·12층이고 512토큰을 넘으면 잘린다고 적혀 있어요. BGE-M3 모델 카드는 1024차원, 8,192토큰, 100개 넘는 언어를 지원하고 밀집·희소·다중 벡터 검색을 한 모델로 한다고 소개해요. 청크를 512토큰보다 길게 자를 계획이면 앞의 모델은 뒷부분을 버려요.

지연은 직접 재야 해요

API 지연은 지역·요청 크기·시간대에 따라 달라서 남의 숫자를 옮기는 건 의미가 없어요. 질의 경로에서 재야 할 것은 "질문 하나를 임베딩해 돌려받는 시간"의 중앙값과 p95 예요. 아래처럼 실제 서버 위치에서 몇십 번 재 보면 돼요.

import time, statistics
from openai import OpenAI

client = OpenAI()
q = "환불 규정에서 7일 이후 반품은 어떻게 되나요?"
ms = []
for _ in range(50):
    t = time.perf_counter()
    client.embeddings.create(model="text-embedding-3-small", input=q, dimensions=512)
    ms.append((time.perf_counter() - t) * 1000)
ms.sort()
print("p50", round(statistics.median(ms)), "ms / p95", round(ms[int(len(ms) * 0.95) - 1]), "ms")

같은 코드로 직접 띄운 서버의 엔드포인트도 재서 나란히 놓으면, 지연 때문에 직접 서빙할 가치가 있는지 숫자로 판단할 수 있어요. 문서 색인은 지연이 아니라 처리량 문제라 배치 크기를 키우고, Gemini·Voyage 처럼 배치 요금이 있으면 그쪽으로 보내요.

리랭커를 붙이면 비용이 어떻게 바뀌나

임베딩 검색으로 후보를 넉넉히 뽑고, 두 문장을 한꺼번에 보는 리랭커로 다시 매기면 상위 결과가 좋아지는 경우가 많아요. BGE-M3 모델 카드도 RAG 에는 하이브리드 검색과 재정렬을 함께 쓰라고 권해요. 비용 구조는 임베딩과 완전히 달라요.

Voyage 가격표는 재정렬 토큰을 질문 토큰 × 문서 수 + 문서 토큰 합 으로 세요. 질문이 문서마다 한 번씩 다시 들어가는 셈이에요. 질문 30토큰, 문서 400토큰으로 계산하면 이래요.

월 질의 100만 건 기준 월 비용 — 질의 임베딩 vs 재정렬
rerank-3 (0.05달러)rerank-3-lite (0.02달러)질의 임베딩 3-small
05001,0001,5002,0002,500후보 20개 · rerank-3 (0.05달러) 430달러후보 20개 · rerank-3-lite (0.02달러) 172달러후보 20개 · 질의 임베딩 3-small 0.6달러후보 20개후보 50개 · rerank-3 (0.05달러) 1,075달러후보 50개 · rerank-3-lite (0.02달러) 430달러후보 50개 · 질의 임베딩 3-small 0.6달러후보 50개후보 100개 · rerank-3 (0.05달러) 2,150달러후보 100개 · rerank-3-lite (0.02달러) 860달러후보 100개 · 질의 임베딩 3-small 0.6달러후보 100개

후보 수가 두 배면 재정렬 비용도 거의 두 배예요. 질의 임베딩 비용은 막대가 안 보일 만큼 작아요

단위: 달러 · 자료: Voyage AI 가격표의 재정렬 토큰 공식으로 직접 계산 (질문 30토큰, 문서 400토큰, 무료 토큰 제외)
표로 보기
구분rerank-3 (0.05달러)rerank-3-lite (0.02달러)질의 임베딩 3-small
후보 20개4301720.6
후보 50개1,0754300.6
후보 100개2,1508600.6

후보 50개를 rerank-3 로 매기면 질문 하나에 21,500토큰이에요. 질의 임베딩 30토큰의 700배가 넘어요. 그래서 리랭커를 붙일 땐 모델보다 후보 수를 먼저 정해요. 내 평가 세트로 후보 20·50·100개일 때 최종 상위 5개의 정답률을 재 보고, 개선이 멈추는 지점에서 끊으면 돼요. 문서를 짧게 청크하는 것도 재정렬 비용을 바로 줄여요.

광고
광고

상황별 임베딩 모델 추천

데이터를 외부로 보낼 수 있는지, 하루 새로 넣는 토큰이 수십억 개인지, 벡터 수가 1,000만 개를 넘는지, 상위 결과 정밀도가 중요한지를 차례로 묻고 API 소형 모델·직접 서빙·낮은 차원과 int8·리랭커 추가로 갈라지는 판단 순서도
위에서부터 차례로 답하면 대부분 세 번째 질문 안에 정해져요
상황추천이유
처음 RAG 를 붙이는 사내 문서 검색(수십만 청크)API 소형 모델 + 512~1024차원색인 수 달러, 메모리 수 GB. 품질은 평가 세트로 확인
한국어·영어 섞인 고객 지원 문서다국어 지원이 명시된 모델 2~3개를 같은 평가 세트로 비교영어 위주 리더보드 순위가 한국어에서 그대로 나오지 않아요
벡터 1,000만 개 이상차원 축소(MRL 지원 모델) + int8·이진 양자화float32 3072차원이면 100GB 넘게 메모리가 들어요
상위 3~5개 정확도가 중요한 QA임베딩 후보 20~50개 + 리랭커리랭커 비용은 후보 수에 비례하니 평가로 개수를 정해요
외부 전송 불가 데이터오픈소스 모델 직접 서빙입력 길이 한도(512 vs 8,192토큰)부터 확인
텍스트와 이미지를 같이 검색멀티모달 임베딩(Gemini Embedding 2 등)텍스트만 쓰면 단가가 높아 손해예요

모델마다 질문과 문서를 구분하는 방식도 달라요. e5 계열은 앞에 query: ·passage: 를 붙이고, Voyage 는 input_type 에 query·document 를 넘기고, Gemini Embedding 2 는 task_type 대신 작업 지시를 입력 문장 안에 넣으라고 안내해요. 같은 코드에서 모델 이름만 바꾸면 이 부분이 조용히 빠져요.

임베딩 도입 체크리스트

광고
광고

자주 묻는 질문

임베딩 모델은 비싼 걸 쓰면 검색 품질이 그만큼 좋아지나요?

단가 차이만큼 벌어지지는 않아요. OpenAI 가 밝힌 MTEB 평균은 3-small 62.3%, 3-large 64.6%로 단가 6.5배에 2.3%포인트 차이예요. 다만 색인·질의 비용이 원래 작아서 비싼 모델의 추가 비용도 월 수십 달러 수준이라, 내 평가 세트에서 의미 있게 좋다면 써도 돼요.

임베딩 차원을 줄이면 품질이 얼마나 떨어지나요?

모델에 달려 있어요. OpenAI 가이드는 dimensions 로 줄여도 의미를 담는 성질이 유지된다고, Gemini 문서는 MRL 로 학습해 작은 차원에서도 품질 손실이 적다고 적어요. 그래도 손실 폭은 데이터마다 다르니, 1024·512·256차원으로 같은 평가 세트를 돌려 Recall 이 떨어지기 시작하는 지점을 직접 확인하세요.

임베딩 모델을 바꾸면 기존 벡터를 그대로 써도 되나요?

안 돼요. 모델마다 벡터 공간이 달라서, 차원이 같아도 옛 문서 벡터와 새 질의 벡터를 비교하면 엉뚱한 결과가 나와요. 문서를 전부 새 모델로 다시 임베딩해야 해요. Voyage 는 4세대 모델끼리 임베딩이 호환된다고 문서에 적어 두었지만, 이런 명시가 없는 조합은 섞지 않는 게 원칙이에요.

한국어 문서에는 어떤 임베딩 모델이 좋나요?

한 가지로 정해진 답은 없어요. 다국어 지원을 명시한 API 모델(Voyage 4세대, Gemini, OpenAI 3세대)과 오픈소스 다국어 모델(multilingual-e5, BGE-M3 등) 중 2~3개를 골라 실제 한국어 질문 평가 세트로 비교하는 게 가장 빠른 길이에요. 한국어는 토크나이저에 따라 토큰 수도 달라지니 비용도 같이 비교해요.

리랭커는 꼭 붙여야 하나요?

필수는 아니에요. 상위 몇 개 결과의 정확도가 답변 품질을 좌우하는 QA 라면 효과가 큰 편이지만, 질문마다 후보 수만큼 토큰을 내야 해서 임베딩보다 수백 배 비쌀 수 있어요. 리랭커 없이 평가한 값과 후보 20·50개로 재정렬한 값을 비교해 보고, 개선 폭이 비용을 정당화할 때 붙이세요.

직접 띄운 오픈소스 임베딩이 API 보다 싼 기준은 뭔가요?

서버 시간당 비용을 API 토큰 단가로 나누면 본전 처리량이 나와요. 시간당 1달러 서버라면 0.02달러 API 와 비교해 초당 약 13,900토큰을 쉬지 않고 처리해야 본전이에요. 질의만 드문드문 들어오는 서비스라면 서버가 대부분 놀기 때문에 API 가 훨씬 싸요.

정리

임베딩 모델을 고를 때 단가표는 생각보다 결정적이지 않아요. 100만 청크 색인이 8~80달러, 월 100만 건 질의가 1~6달러라서, 비용을 실제로 가르는 건 차원·자료형이 정하는 메모리와 리랭커 후보 수예요. 순서는 이렇게 잡으면 돼요. 평가 세트를 만들고, 다국어 지원 모델 2~3개를 같은 세트로 비교하고, 차원을 줄여 가며 품질이 꺾이는 지점을 찾고, 필요할 때만 리랭커를 후보 수부터 정해 붙여요.

메모리 계산을 단위까지 맞추려면 데이터 용량 변환기를, 인덱스 구조별 메모리는 벡터 인덱스 고르기를, 한국어 토큰 수 추정은 한국어 LLM 토큰 비용 비교를 함께 보세요. 단가는 2026년 10월 27일 기준이라 바뀔 수 있으니, 도입 직전에 각 회사 가격표를 다시 확인하세요.

더 깊이 읽기

이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 임베딩과 코사인 유사도 원리 — 벡터가 의미를 재는 법에서 도식과 코드로 단계별로 풀었어요.

참고한 자료

#임베딩 모델 비교#임베딩 API 가격#text-embedding-3-small#임베딩 차원 줄이기#벡터 저장 용량#RAG 비용 계산#리랭커 비용#오픈소스 임베딩 모델
← 이전 글백트래킹 시간 초과 판단법, n 크기별 경우의 수 표와 가지치기 점검다음 글 →그리디 알고리즘 언제 쓰나, DP와 고르는 판단표와 반례 찾기 체크리스트
광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →