Vertex AI 텍스트 임베딩 API를 사용하면 Vertex AI의 생성형 AI를 사용해서 텍스트 임베딩을 만들 수 있습니다. 텍스트 임베딩은 단어와 구문 간의 관계를 캡처하는 텍스트의 숫자 표현입니다. 머신러닝 모델, 특히 생성형 AI 모델은 대규모 텍스트 데이터 세트 내에서 패턴을 식별하여 이러한 임베딩을 만드는 데 적합합니다. 애플리케이션에서 텍스트 임베딩을 사용하여 언어를 처리하고 생성하고, 콘텐츠와 관련된 복잡한 의미 및 시맨틱스 관계를 인식할 수 있습니다. Google 검색을 완료하거나 음악 스트리밍 추천을 확인할 때마다 텍스트 임베딩과 상호작용합니다.
텍스트 임베딩의 몇 가지 일반적인 사용 사례는 다음과 같습니다.
- 시맨틱 검색: 의미론적 유사성에 따라 순위가 지정된 텍스트를 검색합니다.
- 분류: 해당 텍스트 속성이 지정된 텍스트와 유사한 항목의 클래스를 반환합니다.
- 클러스터링: 해당 텍스트 속성이 지정된 텍스트와 유사한 항목을 클러스터링합니다.
- 이상치 감지: 해당 텍스트 속성이 지정된 텍스트와 가장 관련이 없는 항목을 반환합니다.
- 대화 인터페이스: 대화 수준의 임베딩 공간에서와 같이 비슷한 응답으로 이어질 수 있는 문장 그룹을 클러스터링합니다.
텍스트 임베딩은 텍스트를 벡터라고 부르는 부동 소수점 숫자 배열로 변환하는 방식으로 작동합니다. 이러한 벡터는 텍스트의 의미를 캡처하도록 설계되었습니다. 임베딩 배열의 길이는 벡터의 차원이라고 합니다. 예를 들어 텍스트 문구 한 개를 수백 개의 차원을 포함하는 벡터로 표현할 수 있습니다. 그런 다음 두 텍스트의 벡터 표현 간 숫자 거리를 계산하여 애플리케이션이 객체 간의 유사성을 확인할 수 있습니다.
Vertex AI 텍스트 임베딩 API는 밀집 벡터 표현을 사용합니다. 예를 들어 text-embedding-gecko에서는 768차원 벡터를 사용합니다. 고밀도 벡터 임베딩 모델은 대규모 언어 모델에서 사용되는 것과 비슷한 딥 러닝 방법을 사용합니다. 단어를 숫자에 직접 매핑하는 희소 벡터와 달리 밀집 벡터는 텍스트의 의미를 더 잘 나타내도록 설계되었습니다. 생성형 AI에서 밀집 벡터 임베딩을 사용할 때의 이점은 직접 단어 또는 문법 일치를 검색하는 대신 문구의 언어가 다른 경우에도 쿼리의 의미와 일치하는 문구를 더 효과적으로 검색할 수 있다는 것입니다.
- 임베딩에 대한 자세한 내용은 AI 멀티툴 소개: 벡터 임베딩을 참조하세요.
- 임베딩에 대한 기본적인 ML 단기집중과정을 보려면 임베딩을 참조하세요.
- 데이터베이스에 벡터 임베딩을 저장하는 방법에 대한 자세한 내용은 탐색 페이지 및 벡터 검색 개요를 참조하세요.
기본 요건
임베딩을 성공적으로 만들기 위한 특정 기본 요건이 있습니다. 시작하려면 빠른 시작: 텍스트 임베딩 사용해 보기를 참조하세요.
이 Colab을 사용하여 새로 출시된 텍스트 임베딩 모델(
Jupyter 노트북: Colab 또는 Jupyter 노트북을 사용하여 텍스트 임베딩 모델을 호출합니다. |
사용 사례 예시: 도서 추천 챗봇 개발
도서 추천 챗봇을 개발하려면 가장 먼저 해야 할 일이 심층신경망(DNN)을 통해 각 도서를 임베딩 벡터로 변환하는 것입니다. 여기서 임베딩 벡터 하나는 도서 한 권을 나타냅니다. DNN에 대한 입력으로 도서 제목 또는 텍스트 콘텐츠만 피드할 수 있습니다. 또는 장르와 같이 책을 설명하는 다른 메타데이터와 함께 사용할 수도 있습니다.
이 예시의 임베딩은 줄거리와 장르가 있는 수천 개의 도서 제목으로 구성될 수 있으며, 에밀리 브론테의 폭풍의 언덕 및 제인 오스틴의 설득과 같이 서로 유사한 도서에 대한 표현이 있을 수 있습니다(수치 표현 간의 가까운 거리). 반면 F.스콧 피츠제럴드의 도서 개츠비에 대한 수치 표현은 시대, 장르, 줄거리가 덜 유사하기 때문에 더 거리가 멉니다.
입력은 임베딩 공간의 방향에 가장 큰 영향을 줍니다. 예를 들어 도서 제목 입력만 있는 경우 제목이 비슷하지만 줄거리가 매우 다른 두 도서는 서로 가까워질 수 있습니다. 하지만 제목과 줄거리를 포함하면 이러한 도서는 임베딩 공간에서 유사성이 떨어집니다(더 멀리 떨어져 있음).
생성형 AI를 사용하면 이 도서 추천 챗봇이 쿼리를 기반으로 사용자가 좋아하거나 싫어할 만한 도서를 요약, 추천, 표시할 수 있습니다.
지원되는 모델
사용 가능한 정식 텍스트 임베딩 모델 버전에 대한 자세한 내용은 사용 가능한 정식 모델 버전을 참조하세요. 사용 가능한 최신 텍스트 임베딩 모델 버전에 대해 알아보려면 최신 모델을 참조하세요.
정식 모델 버전을 지정하는 것이 좋습니다(예: textembedding-gecko@003
). 모델의 최신 버전은 미리보기에 있으며 정식 버전(GA)이 아닙니다.
최신 버전이 미리보기 상태이므로 프로덕션 사용이 보장되지 않습니다.
하위 호환되는 임베딩이 필요한 애플리케이션에 정식 모델 버전(예: textembedding-gecko@003
)을 사용하는 것이 특히 중요합니다. 이전 버전과의 호환성이 문제가 되지 않고 최신 모델 버전을 사용하려면 @latest
를 명시적으로 지정해야 합니다.
지정된 버전이 없으면 textembedding-gecko
의 기본값은 textembedding-gecko@003
이고 textembedding-gecko-multilingual
의 기본값은 textembedding-gecko-multilingual@001
입니다.
최신 모델
미리보기에는 두 가지 모델을 사용할 수 있습니다.
text-embedding-preview-0409
text-multilingual-embedding-preview-0409
이러한 모델은 검색 및 분류와 같은 다양한 다운스트림 태스크를 다루는 설정된 벤치마크에서 이전 모델보다 향상됩니다. 자세한 내용은 Gecko: 대규모 언어 모델에서 정제된 다양한 텍스트 임베딩을 참조하세요.
이러한 모델은 각각 textembedding-gecko@003
및 textembedding-gecko-multilingual@001
모델보다 우수한 임베딩 품질을 제공합니다. 이러한 모델은 model-name@version
이름 지정 규칙에서 벗어납니다. '@version' 서픽스 없이 이러한 모델을 지정합니다. 예를 들면 다음과 같습니다.
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/locations/us-central1/publishers/google/models/text-embedding-preview-0409:predict -d $'{
"instances": [
{ "content": "What is life?"}
],
}'
새 모델에서는 품질 개선 외에도 다음 기능이 지원됩니다.
새 매개변수
outputDimensionality
가 지원됩니다. 이 매개변수를 사용하면 스토리지 최적화 등을 위해 임베딩 크기를 줄일 수 있습니다.QUESTION_ANSWERING
FACT_VERIFICATION
두 가지 새로운 작업 유형이 지원됩니다. 더 많은 태스크 유형을 보려면 모델 참조를 확인하세요.
다음 예시는 새로운 기능을 보여줍니다.
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/locations/us-central1/publishers/google/models/text-embedding-preview-0409:predict -d $'{
"instances": [
{
"task_type": "QUESTION_ANSWERING",
"content": "What is life?"
}
],
"parameters": {
"outputDimensionality": 256
}
}'
이러한 모델을 사용할 때 다음 제한사항이 적용됩니다.
- 미션 크리티컬 시스템이나 프로덕션 시스템에서는 이러한 미리보기 모델을 사용하지 마세요.
- 이 모델은
us-central1
에서만 사용할 수 있습니다. - 일괄 예측은 지원되지 않습니다.
- 맞춤설정이 지원되지 않습니다.
텍스트 스니펫의 텍스트 임베딩 가져오기
Vertex AI API 또는 Python용 Vertex AI SDK를 사용하여 텍스트 스니펫의 텍스트 임베딩을 가져올 수 있습니다. 요청마다 us-central1
의 입력 텍스트가 250개로 제한되며 다른 리전에서는 최대 입력 텍스트가 5개입니다.
각 입력 텍스트의 토큰 한도는 3,072입니다. 이 길이보다 긴 입력은 자동으로 잘립니다. autoTruncate
를 false
로 설정하여 자동 잘림을 사용 중지할 수도 있습니다.
이 예시에서는 textembedding-gecko@003
모델을 사용합니다.
REST
텍스트 임베딩을 가져오려면 게시자 모델의 모델 ID를 지정하여 POST 요청을 전송합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- TEXT: 임베딩을 생성하려는 텍스트입니다. 한도: 텍스트당 최대 3,072개의 토큰으로 구성된 텍스트 5개입니다.
- AUTO_TRUNCATE:
false
로 설정하면 토큰 한도를 초과하는 텍스트로 인해 요청이 실패합니다. 기본값은true
입니다.
HTTP 메서드 및 URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/textembedding-gecko@003: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/textembedding-gecko@003: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/textembedding-gecko@003:predict" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다. values
는 공간 절약을 위해 잘렸습니다.
curl 명령어 예시
MODEL_ID="textembedding-gecko@003"
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
Python을 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
벡터 데이터베이스에 임베딩 추가
임베딩을 생성했으면 벡터 검색과 같은 벡터 데이터베이스에 임베딩을 추가할 수 있습니다. 이렇게 하면 지연 시간이 짧은 검색이 가능하며, 데이터 크기가 커질수록 매우 중요합니다.
벡터 검색에 대한 자세한 내용은 벡터 검색 개요를 참조하세요.
2023년 8월 이후 출시된 모델에 대한 API 변경사항
textembedding-gecko@003
및 textembedding-gecko-multilingual@001
을 포함하여 2023년 8월 이후에 출시된 모델 버전을 사용하는 경우 새로운 태스크 유형 매개변수와 선택적 제목(task_type=RETRIEVAL_DOCUMENT
에서만 유효)이 있습니다.
이러한 새 매개변수는 앞으로 이러한 공개 미리보기 모델과 모든 정식 모델에 적용됩니다.
{
"instances": [
{
"task_type": "RETRIEVAL_DOCUMENT",
"title": "document title",
"content": "I would like embeddings for this text!"
},
]
}
task_type
매개변수는 모델이 더 나은 품질의 임베딩을 생성할 수 있도록 의도된 다운스트림 애플리케이션으로 정의됩니다. 다음 값 중 하나를 사용할 수 있는 문자열입니다.
task_type |
설명 |
---|---|
RETRIEVAL_QUERY |
지정된 텍스트가 검색 또는 가져오기 설정의 쿼리임을 지정합니다. |
RETRIEVAL_DOCUMENT |
지정된 텍스트가 검색 또는 가져오기 설정의 문서임을 지정합니다. |
SEMANTIC_SIMILARITY |
지정된 텍스트를 시맨틱 텍스트 유사성(STS)에 사용하도록 지정합니다. |
CLASSIFICATION |
분류에 임베딩을 사용하도록 지정합니다. |
CLUSTERING |
클러스터링에 임베딩을 사용하도록 지정합니다. |
QUESTION_ANSWERING |
질문에 답변하는 데 쿼리 임베딩을 사용하도록 지정합니다. 문서에는 RETRIEVAL_DOCUMENT를 사용합니다. |
FACT_VERIFICATION |
사실 확인에 쿼리 임베딩을 사용하도록 지정합니다. |
textembedding-gecko-multilingual
모델의 언어 범위입니다.
textembedding-gecko-multilingual@001
모델은 다음 언어로 평가되었습니다.
Arabic (ar)
, Bengali (bn)
, English (en)
, Spanish (es)
, German (de)
,
Persian (fa)
, Finnish (fi)
, French (fr)
, Hindi (hi)
, Indonesian (id)
,
Japanese (ja)
, Korean (ko)
, Russian (ru)
, Swahili (sw)
, Telugu (te)
,
Thai (th)
, Yoruba (yo)
, Chinese (zh)
.
다음은 지원되는 언어의 전체 목록입니다.
Afrikaans
, Albanian
, Amharic
, Arabic
, Armenian
, Azerbaijani
, Basque
, Belarusian
, Bengali
, Bulgarian
, Burmese
, Catalan
, Cebuano
, Chichewa
, Chinese
, Corsican
, Czech
, Danish
, Dutch
, English
, Esperanto
, Estonian
, Filipino
, Finnish
, French
, Galician
, Georgian
, German
, Greek
, Gujarati
, Haitian Creole
, Hausa
, Hawaiian
, Hebrew
, Hindi
, Hmong
, Hungarian
, Icelandic
, Igbo
, Indonesian
, Irish
, Italian
, Japanese
, Javanese
, Kannada
, Kazakh
, Khmer
, Korean
, Kurdish
, Kyrgyz
, Lao
, Latin
, Latvian
, Lithuanian
, Luxembourgish
, Macedonian
, Malagasy
, Malay
, Malayalam
, Maltese
, Maori
, Marathi
, Mongolian
, Nepali
, Norwegian
, Pashto
, Persian
, Polish
, Portuguese
, Punjabi
, Romanian
, Russian
, Samoan
, Scottish Gaelic
, Serbian
, Shona
, Sindhi
, Sinhala
, Slovak
, Slovenian
, Somali
, Sotho
, Spanish
, Sundanese
, Swahili
, Swedish
, Tajik
, Tamil
, Telugu
, Thai
, Turkish
, Ukrainian
, Urdu
, Uzbek
, Vietnamese
, Welsh
, West Frisian
, Xhosa
, Yiddish
, Yoruba
, Zulu
.
다음 단계
- 기반 모델 조정 방법 알아보기
- 책임감 있는 AI 권장사항 및 Vertex AI 안전 필터 알아보기