Gemini API는 단어, 문구, 코드, 문장에 대한 임베딩을 생성하는 여러 임베딩 모델을 지원합니다. 그러면 결과 임베딩을 시맨틱 검색, 텍스트 분류, 클러스터링과 같은 다양한 태스크에 사용할 수 있습니다.
임베딩이란 무엇일까요?
임베딩은 입력 간의 관계를 캡처하는 텍스트 (또는 기타 미디어 형식)의 수치적 표현입니다. 텍스트 임베딩은 텍스트를 벡터라고 하는 부동 소수점 수 배열로 변환하여 작동합니다. 이러한 벡터는 텍스트의 의미를 포착하도록 설계되었습니다. 임베딩 배열의 길이를 벡터의 차원이라고 합니다. 텍스트 한 구절은 수백 개의 차원을 포함하는 벡터로 표현될 수 있습니다.
임베딩은 시맨틱 의미와 맥락을 캡처하므로 의미가 유사한 텍스트의 임베딩이 '더 가까운' 임베딩이 됩니다. 예를 들어 '강아지를 동물병원에 데려갔습니다'와 '고양이를 동물병원에 데려갔습니다'라는 문장은 벡터 공간에서 서로 가까운 임베딩을 갖습니다.
임베딩을 사용하여 여러 텍스트를 비교하고 서로 어떤 관련이 있는지 파악할 수 있습니다. 예를 들어 'cat'과 'dog' 텍스트의 임베딩이 서로 가까우면 이 단어의 의미, 맥락 또는 둘 다 유사하다고 추론할 수 있습니다. 이를 통해 다양한 일반적인 AI 사용 사례를 지원할 수 있습니다.
임베딩 생성
embedContent
메서드를 사용하여 텍스트 임베딩을 생성합니다.
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?")
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
});
console.log(response.embeddings);
}
main();
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
em := client.EmbeddingModel("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))
if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]}
}'
여러 청크를 문자열 목록으로 전달하여 한 번에 여러 청크의 임베딩을 생성할 수도 있습니다.
할 일 유형
검색 증강 생성 (RAG) 시스템을 빌드할 때 일반적인 설계는 텍스트 임베딩을 사용하여 유사성 검색을 수행하는 것입니다. 경우에 따라 질문과 답변이 의미론적으로 유사하지 않아 품질이 저하될 수 있습니다. 예를 들어 '하늘은 왜 파란색이야?'와 같은 질문과 '햇빛의 산란으로 인해 파란색이 나타납니다.'와 같은 답변은 문장으로서 의미가 서로 다릅니다. 즉, RAG 시스템은 두 문장의 관계를 자동으로 인식하지 못합니다.
태스크 유형을 사용하면 특정 태스크에 최적화된 임베딩을 생성할 수 있으므로 시간과 비용을 절약하고 성능을 개선할 수 있습니다.
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?",
config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
config: {
taskType: "SEMANTIC_SIMILARITY",
}
});
console.log(response.embeddings);
}
main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]},
"taskType": "SEMANTIC_SIMILARITY"
}'
지원되는 태스크 유형
작업 유형 | 설명 |
---|---|
SEMANTIC_SIMILARITY |
텍스트 유사성을 평가하도록 최적화된 임베딩을 생성하는 데 사용됩니다. |
CLASSIFICATION |
사전 설정된 라벨에 따라 텍스트를 분류하도록 최적화된 임베딩을 생성하는 데 사용됩니다. |
CLUSTERING |
유사성을 기반으로 텍스트를 클러스터링하는 데 최적화된 임베딩을 생성하는 데 사용됩니다. |
RETRIEVAL_DOCUMENT , RETRIEVAL_QUERY , QUESTION_ANSWERING , FACT_VERIFICATION |
문서 검색이나 정보 검색에 최적화된 임베딩을 생성하는 데 사용됩니다. |
CODE_RETRIEVAL_QUERY |
배열 정렬 또는 연결 리스트 역순과 같은 자연어 쿼리를 기반으로 코드 블록을 검색하는 데 사용됩니다. 코드 블록의 임베딩은 RETRIEVAL_DOCUMENT 를 사용하여 계산됩니다. |
사용 사례
텍스트 임베딩은 다음과 같은 다양한 일반적인 AI 사용 사례에 사용됩니다.
정보 검색: 임베딩을 사용하여 입력 텍스트가 주어질 때 의미적으로 유사한 텍스트를 검색할 수 있습니다.
클러스터링: 임베딩 그룹을 비교하면 숨겨진 동향을 파악하는 데 도움이 될 수 있습니다.
벡터 데이터베이스: 프로덕션에 다양한 임베딩 사용 사례를 적용할 때는 일반적으로 벡터 데이터베이스에 임베딩을 저장합니다.
분류: 임베딩을 사용하여 모델을 학습하여 문서를 카테고리로 분류할 수 있습니다.
임베딩 모델
Gemini API는 텍스트 임베딩을 생성하는 세 가지 모델을 제공합니다.
다음 단계
임베딩 빠른 시작 노트북을 확인하세요.