이 문서에서는 Vertex AI 텍스트 임베딩 API를 사용하여 텍스트 임베딩을 만드는 방법을 설명합니다.
Vertex AI 텍스트 임베딩 API는 밀집 벡터 표현을 사용합니다. 예를 들어 text-embedding-gecko에서는 768차원 벡터를 사용합니다. 고밀도 벡터 임베딩 모델은 대규모 언어 모델에서 사용하는 것과 유사한 심층 학습 방법을 사용합니다. 단어를 숫자에 직접 매핑하는 희소 벡터와 달리 밀집 벡터는 텍스트의 의미를 더 잘 나타내도록 설계되었습니다. 생성형 AI에서 밀집 벡터 임베딩을 사용할 때의 이점은 직접 단어 또는 문법 일치를 검색하는 대신 문구의 언어가 다른 경우에도 쿼리의 의미와 일치하는 문구를 더 효과적으로 검색할 수 있다는 것입니다.
벡터가 정규화되므로 코사인 유사성, 내적 또는 유클리드 거리를 사용하여 동일한 유사성 순위를 제공할 수 있습니다.
- 임베딩에 대해 자세히 알아보려면 임베딩 API 개요를 참고하세요.
- 텍스트 임베딩 모델에 대한 자세한 내용은 텍스트 임베딩을 참고하세요.
- 각 임베딩 모델에서 지원하는 언어에 대한 자세한 내용은 지원되는 텍스트 언어를 참고하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
- 임베딩 작업의 태스크 유형을 선택합니다.
지원되는 모델
다음 모델을 사용하여 텍스트 임베딩을 가져올 수 있습니다.
영어 모델 | 다국어 모델 |
---|---|
textembedding-gecko@001 |
textembedding-gecko-multilingual@001 |
textembedding-gecko@003 |
text-multilingual-embedding-002 |
text-embedding-004 |
|
text-embedding-005 |
이러한 모델을 처음 사용하는 경우 최신 버전을 사용하는 것이 좋습니다.
영어 텍스트에는 text-embedding-005
를 사용합니다. 다국어 텍스트의 경우 text-multilingual-embedding-002
를 사용합니다.
텍스트 스니펫의 텍스트 임베딩 가져오기
Vertex AI API 또는 Python용 Vertex AI SDK를 사용하여 텍스트 스니펫의 텍스트 임베딩을 가져올 수 있습니다. 요청마다 us-central1
에서는 입력 텍스트가 250개로 제한되고 다른 리전에서는 최대 입력 텍스트가 5개로 제한됩니다.
API의 최대 입력 토큰 한도는 20,000개입니다. 이 한도를 초과하는 입력은 500 오류를 발생시킵니다. 각 개별 입력 텍스트는 토큰 2,048개로 제한되며 초과하는 부분은 자동으로 잘립니다. autoTruncate
를 false
로 설정하여 자동 잘림을 사용 중지할 수도 있습니다.
모든 모델은 기본적으로 768개의 측정기준이 있는 출력을 생성합니다. 하지만 다음 모델에서는 사용자가 1~768 사이의 출력 크기를 선택할 수 있습니다. 더 작은 출력 크기를 선택하면 메모리와 저장용량을 절약할 수 있으므로 보다 효율적인 계산을 수행할 수 있습니다.
text-embedding-005
text-multilingual-embedding-002
다음 예에서는 text-embedding-004
모델을 사용합니다.
REST
텍스트 임베딩을 가져오려면 게시자 모델의 모델 ID를 지정하여 POST 요청을 전송합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- TEXT: 임베딩을 생성하려는 텍스트입니다. 한도:
textembedding-gecko@001
를 제외한 모든 모델에 대해 텍스트당 최대 2,048개의 토큰으로 구성된 텍스트 5개입니다.textembedding-gecko@001
의 최대 입력 토큰 길이는 3072입니다. - AUTO_TRUNCATE:
false
로 설정하면 토큰 한도를 초과하는 텍스트로 인해 요청이 실패합니다. 기본값은true
입니다.
HTTP 메서드 및 URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004: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/text-embedding-004:predict"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다. values
는 공간 절약을 위해 잘렸습니다.
curl 명령어 예시
MODEL_ID="text-embedding-004"
PROJECT_ID=PROJECT_ID
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/${MODEL_ID}:predict -d \
$'{
"instances": [
{ "content": "What is life?"}
],
}'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
Go
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Vertex AI Go API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
최근 모델
text-embedding-005
는 일반 텍스트 쿼리를 사용하여 관련성 높은 코드 블록을 검색하는 데 사용할 수 있는 새로운 태스크 유형 CODE_RETRIEVAL_QUERY
를 지원합니다. 이 기능을 사용하려면 코드 블록은 RETRIEVAL_DOCUMENT
작업 유형을 사용하여 임베디드하고 텍스트 쿼리는 CODE_RETRIEVAL_QUERY
를 사용하여 임베디드해야 합니다.
모든 작업 유형을 살펴보려면 모델 참조를 참고하세요.
예를 들면 다음과 같습니다.
REST
PROJECT_ID=PROJECT_ID
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-005:predict -d \
$'{
"instances": [
{
"task_type": "CODE_RETRIEVAL_QUERY",
"content": "Function to add two numbers"
}
],
}'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
Go
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Vertex AI Go API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
이러한 모델을 사용할 때는 다음과 같은 제한사항이 적용됩니다.
- 미션 크리티컬 시스템 또는 프로덕션 시스템에서는 이러한 미리보기 모델을 사용하지 마세요.
- 이 모델은
us-central1
에서만 사용할 수 있습니다. - 일괄 예측은 지원되지 않습니다.
- 맞춤설정은 지원되지 않습니다.
벡터 데이터베이스에 임베딩 추가
임베딩을 생성한 후 벡터 검색과 같은 벡터 데이터베이스에 임베딩을 추가할 수 있습니다. 이렇게 하면 지연 시간이 짧은 검색이 가능하며, 데이터 크기가 커질수록 매우 중요합니다.
벡터 검색에 대한 자세한 내용은 벡터 검색 개요를 참조하세요.
다음 단계
- 비율 제한에 대한 자세한 내용은 Vertex AI의 생성형 AI 비율 제한을 참고하세요.
- 임베딩을 일괄 예측하려면 일괄 텍스트 임베딩 예측 가져오기를 참조하세요.
- 멀티모달 임베딩에 대한 자세한 내용은 멀티모달 임베딩 가져오기를 참조하세요.
- 임베딩을 조정하려면 텍스트 임베딩 조정을 참고하세요.
text-embedding-005
및text-multilingual-embedding-002
에 대한 관련 연구에 대해 자세히 알아보려면 연구 논문 Gecko: 대규모 언어 모델에서 추출한 다목적 텍스트 임베딩을 참고하세요.