텍스트 임베딩 생성
텍스트 임베딩 생성 (Get text embeddings)
텍스트 임베딩(text embedding)은 문장이나 단락을 벡터로 바꿔서, 검색과 추천을 할 때 '단어가 같은지'가 아니라 '의미가 가까운지'로 찾게 해 주는 기술이에요. 이 글에서는 Vertex AI의 텍스트 임베딩 API를 호출하는 방법을 실제 코드와 함께 살펴볼게요. 요청 한도와 지원 모델, REST 엔드포인트까지 한 번에 정리해 드릴게요.
출처: Get text embeddings — Gemini Enterprise Agent Platform | Google Cloud Documentation
임베딩이란 무엇인가요
Vertex AI의 텍스트 임베딩 API는 밀집 벡터(dense vector) 표현을 만들어요. 예를 들어 gemini-embedding-001 모델은 3,072차원 벡터를 만들어 내죠. 밀집 벡터 임베딩 모델은 대규모 언어 모델과 비슷한 딥러닝 방식을 쓰는데, 스파스 벡터(sparse vector)가 단어를 숫자에 직접 매핑하는 것과 달리 밀집 벡터는 텍스트의 의미를 더 잘 나타내도록 설계돼요. 그래서 생성형 AI에서 검색할 때 같은 언어가 아니어도 질문의 의미와 맞닿는 구절을 찾아낼 수 있는 거예요.
생성된 벡터는 정규화되어 있기 때문에 코사인 유사도(cosine similarity), 내적(dot product), 유클리드 거리(Euclidean distance) 어느 것으로 비교해도 같은 유사도 순위를 얻을 수 있어요.
시작하기 전에
호출하려면 먼저 Google Cloud 프로젝트를 준비하고 Agent Platform API를 사용 설정해야 해요. 임베딩 작업에는 task type을 먼저 골라야 하는데, 이 값은 임베딩을 어떤 용도로 쓸지(예: 검색, 분류 등) API에 알려 주는 역할을 해요.
API 한도
- 요청당 250개의 입력 텍스트까지 보낼 수 있어요.
- 입력 토큰 최대치는 20,000이에요. 이 한도를 넘으면 400 에러가 나요.
- 개별 입력 텍스트 하나는 2,048 토큰으로 제한되고, 초과분은 조용히 잘려 나가요. 잘림을 끄려면
autoTruncate를false로 설정하면 돼요.
전화 코드로 임베딩 만들기
먼저 google-genai 패키지를 설치해요.
pip install --upgrade google-genai
그다음 환경 변수를 설정해 Vertex AI에서 Gen AI SDK를 쓰도록 해요.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True
텍스트 임베딩 코드
모델 기본값은 전체 길이의 임베딩 벡터를 만들고, gemini-embedding-001은 3,072차원, 나머지 모델은 768차원이에요. output_dimensionality 파라미터로 출력 벡터 크기를 조절할 수 있는데, 크기를 줄이면 저장 공간이 아껴지고 후속 작업 연산이 빨라져요. 품질 손실은 아주 작아요.
REST 엔드포인트
HTTP 메서드와 URL은 다음과 같아요.
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-embedding-001:predict
요청 JSON 본문:
{
"instances": [
{ "content": "TEXT" }
],
"parameters": {
"autoTruncate": AUTO_TRUNCATE
}
}
curl로 보낼 때는 다음과 같이 요청 본문을 request.json 파일에 저장하고 호출해요.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-embedding-001:predict"
지원 모델
Google 모델
| 모델명 | 설명 | 출력 차원 | 최대 시퀀스 길이 |
|---|---|---|---|
gemini-embedding-001 |
영어·다국어·코드 작업 전반에서 최고 수준 성능. text-embedding-005, text-multilingual-embedding-002 같은 특화 모델을 통합. |
최대 3072 | 2048 토큰 |
text-embedding-005 |
영어·코드 작업 특화. | 최대 768 | 2048 토큰 |
text-multilingual-embedding-002 |
다국어 작업 특화. | 최대 768 | 2048 토큰 |
오픈 모델
| 모델명 | 설명 | 출력 차원 | 최대 시퀀스 길이 |
|---|---|---|---|
multilingual-e5-small |
E5 계열. Small 변형은 12개 레이어. | 최대 384 | 512 토큰 |
multilingual-e5-large |
E5 계열. Large 변형은 24개 레이어. | 최대 1024 | 512 토큰 |
임베딩을 생성한 뒤에는 Vector Search 같은 벡터 데이터베이스에 넣어 저지연 검색에 활용할 수 있어요.