Gemini Embedding 2로 빌드하기: 에이전틱 멀티모달 검색 증강 생성(RAG)과 그 너머
요약
Gemini Embedding 2가 정식 출시되었어요! 텍스트, 이미지, 비디오 등 다양한 형태의 데이터를 하나의 임베딩 공간으로 통합해 에이전틱 멀티모달 RAG, 시각 검색 등 훨씬 강력한 AI 애플리케이션을 만들 수 있게 됐어요.
인사이트
- Gemini Embedding 2는 텍스트, 이미지, 비디오, 오디오, PDF 등 100개 이상의 언어로 된 다양한 모달리티 데이터를 하나의 임베딩 공간에 매핑하는 강력한 멀티모달 임베딩 모델이에요.
- 이 모델은 에이전틱 멀티모달 검색 증강 생성(RAG) 및 시각 검색과 같은 복합적인 AI 애플리케이션을 가능하게 하며, '태스크 접두어'를 사용해 임베딩 정확도를 높일 수 있어요.
- Matryoshka Representation Learning(MRL)을 통해 임베딩 차원을 줄여 효율적인 저장과 비용 절감을 할 수 있고, 배치 API를 사용하면 처리량과 비용 효율성을 더 높일 수 있어요.
왜 중요한가
이 모델은 텍스트, 이미지, 비디오 등 복잡하고 다양한 형태의 데이터를 하나의 의미 공간으로 통합해 AI가 현실 세계를 더욱 정확하게 이해하도록 돕는 중요한 진전이에요. 개발자들이 더 쉽고 효율적으로 강력한 멀티모달 AI 애플리케이션을 구축할 수 있는 기반을 제공한다는 점에서 큰 의미가 있어요.
2026년 4월 30일
패트릭 뢰버, 제미나이 API 기술 스태프
지난주, 제미나이 API와 제미나이 엔터프라이즈 에이전트 플랫폼을 통해 Gemini Embedding 2의 정식 출시(GA)를 발표했어요. 이 모델은 텍스트, 이미지, 비디오, 오디오, 문서 등 100개 이상의 언어를 지원하는 데이터를 하나의 임베딩 공간에 매핑하는 제미나이 API의 첫 번째 임베딩 모델이에요.
이번 글에서는 이 통합 모델이 열어줄 다양한 활용 사례들을 살펴볼 거예요. 에이전틱 멀티모달 검색 증강 생성(RAG)부터 시각 검색까지, 어떻게 시작할 수 있는지 정확히 보여드릴게요.
Gemini Embedding 2 소개
이 모델은 한 번의 호출로 정말 다양한 종류의 입력을 처리할 수 있어요. 텍스트 토큰은 최대 8,192개, 이미지는 6개, 비디오는 120초, 오디오는 180초, PDF는 6페이지까지 가능해요. 이렇게 다른 모달리티들을 동일한 의미 공간에 매핑함으로써, 개발자들은 자체 데이터를 "보고" "들을" 수 있는 다양한 경험을 구축할 수 있게 돼요.
Gemini Embedding 2의 진짜 강력한 점은 바로 교차된 입력, 예를 들어 텍스트와 이미지를 한 번의 요청으로 함께 처리할 수 있다는 거예요.
from google import genai
from google.genai import types
client = genai.Client()
with open('dog.png', 'rb') as f:
image_bytes = f.read()
result = client.models.embed_content(
model='gemini-embedding-2',
contents=[
"An image of a dog",
types.Part.from_bytes(
data=image_bytes,
mime_type='image/png',
),
]
)
print(result.embeddings)
Python Copied
이 덕분에 복잡한 실제 데이터를 더 정확하고 총체적으로 이해할 수 있어요. 만약 단일 통합 벡터 대신 개별 입력에 대한 별도의 임베딩이 필요하다면, 배치 API를 사용해 보세요. (에이전트 플랫폼 지원도 곧 예정되어 있어요.)
에이전틱 검색 증강 생성 (RAG)
멀티모달 임베딩 덕분에 AI 에이전트는 수백 개의 파일을 스캔해서 코드베이스를 고치거나, 서로 다른 PDF 문서를 상호 참조하는 등 여러 단계를 거치는 추론 작업을 더 정확하게, 더 잘 이해하면서 수행할 수 있게 돼요.
제미나이 API로 이런 파이프라인을 구축하려면, 에이전트의 목표에 따라 태스크 접두어를 사용할 수 있어요. 이 접두어들은 특정 작업에 맞춰 결과 임베딩을 최적화해서, 짧은 쿼리와 긴 문서 사이의 간극을 모델이 더 잘 메울 수 있도록 돕는 역할을 해요.
# Generate embedding for your task's query:
def prepare_query(query):
return f"task: question answering | query: {content}"
# return f"task: fact checking | query: {content}"
# return f"task: code retrieval | query: {content}"
# return f"task: search result | query: {content}"
# Generate embedding for document of an asymmetric retrieval task:
def prepare_document(content, title=None):
if title is None:
title = "none"
return f"title: {title} | text: {content}"
Python Copied
이런 접두어들을 인덱싱할 때와 쿼리할 때 모두 적용하면 검색 정확도를 훨씬 높일 수 있어요.
벌써 많은 사용자들이 Gemini Embedding 2를 도입해서 긍정적인 효과를 보고 있어요. 법률 사무소와 기업을 위한 법률 연구 플랫폼인 하비(Harvey)는 이전 임베딩과 비교했을 때 법률 관련 벤치마크에서 Recall@20 정확도가 3% 증가하는 것을 경험했어요. 덕분에 법률 사무소와 기업에 더 정확한 인용과 답변을 제공할 수 있게 되었죠.
슈퍼메모리(Supermemory)는 분리된 메모들 사이에서 개념적 검색을 가능하게 하는 “기억을 위한 벡터 DB”를 구축하고 있어요. 이 모델을 통합한 후, 검색 Recall@1 정확도가 40%나 향상되었고, 이 임베딩들을 활용해 인덱싱, 검색, Q&A 등 핵심 검색 파이프라인 전반의 성능을 크게 끌어올렸어요.
멀티모달 검색
Gemini Embedding 2를 사용해서 멀티모달 입력 기반으로 데이터를 검색하는 도구를 만들 수도 있어요. 이 작업을 수행하려면 "task: search result | query: {content}"라는 접두어를 사용하면 돼요.
URBN의 의류 렌탈 회사인 눌리(Nuuly)는 Gemini Embedding 2를 자체 시각 검색 도구에 사용하고 있어요. 이 도구는 창고에서 찍은 사진을 카탈로그와 비교해서 태그 없는 의류를 식별하는 데 쓰이죠. 이 구현 덕분에 Match@20 정확도가 60%에서 거의 87%로 껑충 뛰었고요, 전체 제품 식별 성공률도 74%에서 90% 이상으로 올라갔어요.
사용자가 태그 없는 의류 사진을 찍고, 사진과 브랜드 이름을 기반으로 일치하는 제품을 찾아요.
검색 결과 재순위 지정
검색 파이프라인에서는 임베딩을 사용해서 초기 결과를 재순위 지정(rerank)해 가장 좋은 답변을 얻을 수 있어요. 이 작업을 하려면 임베딩된 검색 결과와 사용자 쿼리 사이의 거리 측정값(코사인 유사도나 내적 점수 등)을 계산하면 돼요.
# 1. Define a function to calculate the dot product (cosine similarity)
def dot_product(a: np.ndarray, b: np.ndarray):
return (np.array(a) @ np.array(b).T)
# 2. Retrieve your embeddings
# (Assuming 'summaries' is your list of search results)
search_res = get_embeddings(summaries)
embedded_query = get_embeddings([query])
# 3. Calculate similarity scores
sim_value = dot_product(search_res, embedded_query)
# 4. Select the most relevant result
best_match_index = np.argmax(sim_value)
Python Copied
모델에게 내부 지식을 활용해 쿼리에 대한 가상의 기준 답변을 생성하도록 프롬프트를 주면, 그 템플릿을 임베딩하고 검색된 데이터와 유사도 점수를 비교해서 가장 정확하고 맥락이 풍부한 일치 항목을 순위 매길 수 있어요.
자세한 방법은 검색 결과 재순위 지정 노트북에서 확인할 수 있어요.
클러스터링, 분류, 이상 감지
임베딩은 유사성을 기반으로 클러스터를 생성해서 데이터 간의 관계를 파악하는 데 유용해요. 숨겨진 트렌드나 이상치를 빠르게 식별할 수도 있어서, 이 동일한 기술이 감성 분석이나 이상 감지의 완벽한 기반이 되죠.
위에 설명한 비대칭 검색 작업과 달리, 이 작업들은 쿼리와 문서 모두에 동일한 태스크 접두어를 사용하는 대칭적 활용 사례예요.
# Generate embedding for query & document of your task.
def prepare_query_and_document(content):
# return f'task: clustering | query: {content}'
# return f'task: sentence similarity | query: {content}'
# return f'task: classification | query: {content}'
Python Copied
이런 작업들은 클러스터링, 텍스트 분류, 이상 감지 노트북에서 직접 시도해볼 수 있어요.
임베딩 효율적으로 저장하고 사용하기
임베딩은 에이전트 플랫폼 벡터 검색, 파인콘(Pinecone), 위비아트(Weaviate), 크런치(Qdrant), 또는 크로마DB(ChromaDB)와 같은 벡터 DB에 저장할 수 있어요.
Gemini Embedding 2는 Matryoshka Representation Learning(MRL)을 사용해서 학습되었어요. 그래서 output_dimensionality 파라미터를 사용하면 기본 3072차원 벡터를 더 작은 차원으로 잘라내서 더 효율적으로 저장할 수 있어요. (최고 효율을 위해서는 1536 또는 768 차원을 권장해요.)
result = client.models.embed_content(
model="gemini-embedding-2",
contents="What is the meaning of life?",
config={"output_dimensionality": 768}
)
Python Copied
이 덕분에 기본적으로 높은 정확도를 유지하면서도 비용을 절감할 수 있어요. 추가적인 비용 효율성을 위해서는 배치 API를 사용해 보세요. 기본 임베딩 가격의 50%로 훨씬 더 높은 처리량을 달성할 수 있어요.
Gemini Embedding 2 시작하기
이렇게 내장형 멀티모달 임베딩이 다양한 산업과 활용 사례에서 복잡한 데이터 이해도를 어떻게 향상시킬지 정말 기대돼요.