이 페이지에서는 임베딩 모델의 선택사항을 설명하고 선택사항을 사용하여 RAG 코퍼스를 만드는 방법을 보여줍니다. 모델과 RAG 코퍼스 간의 연결은 RAG 코퍼스의 전체 기간 동안 고정된 상태로 유지됩니다.
임베딩은 입력을 숫자로 표현한 것입니다. 애플리케이션에서 임베딩을 사용하여 복잡한 의미와 의미 관계를 인식하고 언어를 처리하고 생성할 수 있습니다.
임베딩은 텍스트, 이미지, 동영상을 벡터라고 하는 부동 소수점 숫자 배열로 변환하여 작동합니다. 두 벡터가 임베딩 공간에서 가까울수록 입력의 유사성이 높습니다.
임베딩 모델은 시맨틱 검색 시스템의 중요한 구성요소입니다. 검색 시스템의 성능은 임베딩 모델이 데이터의 관계를 얼마나 잘 매핑하는지에 따라 달라집니다.
RAG 엔진은 검색 증강 생성 (RAG)을 구현하며, RAG 자료 내에서 사용할 다음과 같은 임베딩 모델을 선택할 수 있습니다.
- Vertex AI 텍스트 임베딩 모델: Google과 같은 게시자가 학습한 모델입니다. 이 모델은 대규모 텍스트 데이터 세트를 대상으로 학습되며 많은 태스크에 강력한 기준을 제공합니다.
- 미세 조정된 Vertex AI 텍스트 임베딩 모델: 특수 지식 또는 고도로 맞춤설정된 성능을 갖도록 학습된 모델입니다.
- OSS 임베딩 모델: 영어 전용 및 다국어 버전의 서드 파티 오픈소스 임베딩 모델입니다.
Vertex AI 텍스트 임베딩 모델 사용
Vertex AI 텍스트 임베딩 API는 768차원의 밀집 임베딩 벡터를 생성하는 Gecko 임베딩 모델을 사용합니다. 밀집 임베딩은 단어를 숫자에 직접 매핑하는 경향이 있는 희소 벡터와 달리 텍스트의 의미를 저장합니다. 생성형 AI에서 밀집 벡터 임베딩을 사용할 때의 이점은 직접 단어 또는 문법 일치를 검색하는 대신 문구의 언어가 다른 경우에도 쿼리의 의미와 일치하는 문구를 더 효과적으로 검색할 수 있다는 것입니다.
Gecko 모델은 영어 전용 버전과 다국어 버전으로 제공됩니다. 미세 조정된 Gecko 모델과 달리 게시자 Gecko 모델은 배포할 필요가 없으므로 RAG 엔진에서 가장 쉽게 사용할 수 있는 모델입니다. 다음 Gecko 모델은 RAG 자료와 함께 사용하는 것이 좋습니다.
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@003
textembedding-gecko-multilingual@001
RAG 코퍼스를 만들 때 임베딩 모델을 지정하지 않으면 RAG 엔진은 기본적으로 RAG 코퍼스에 text-embedding-004
모델을 할당합니다.
게시자 Gecko 모델이 지원 중단될 수 있습니다. 이 경우 게시자 Gecko 모델은 지원 중단 전에 생성된 RAG 자료의 경우에도 RAG 엔진과 함께 사용할 수 없습니다. Gecko 모델이 지원 중단되면 RAG 코퍼스를 이전해야 합니다. 즉, RAG 코퍼스를 만들고 데이터를 가져와야 합니다. 또는 모델이 지원 중단된 후에 지원되는 미세 조정된 Gecko 모델 또는 자체 배포된 OSS 삽입 모델을 사용할 수 있습니다.
다음 코드 샘플은 게시자 Gecko 모델로 RAG 코퍼스를 만드는 방법을 보여줍니다.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
// Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Python용 Vertex AI SDK
import vertexai
from vertexai.preview import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Configure a Google first-party embedding model
embedding_model_config = rag.EmbeddingModelConfig(
publisher_model="publishers/google/models/text-embedding-004"
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
)
미세 조정된 Vertex AI 텍스트 임베딩 모델 사용
기반 게시자 모델은 대규모 텍스트 데이터 세트를 대상으로 학습되며 많은 태스크에 강력한 기준을 제공하지만, 모델에 전문 지식이나 고도로 맞춤설정된 성능이 필요한 시나리오가 있을 수 있습니다. 이 경우 모델 조정을 통해 관련 데이터를 사용하여 모델의 표현을 미세 조정할 수 있습니다. 이 접근 방식의 또 다른 이점은 모델을 미세 조정할 때 생성된 이미지가 개발자가 소유하며 Gecko 모델 지원 중단의 영향을 받지 않는다는 점입니다. 모든 미세 조정된 Gecko 임베딩 모델은 768차원 벡터로 임베딩을 생성합니다. 이러한 모델에 관한 자세한 내용은 텍스트 임베딩 가져오기를 참고하세요.
Gecko 모델을 미세 조정하려면 텍스트 임베딩 조정을 참고하세요.
이 코드 샘플은 배포되고 미세 조정된 Gecko 모델로 RAG 코퍼스를 만드는 방법을 보여줍니다.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex AI endpoint resource with the deployed fine-tuned Gecko model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Python용 Vertex AI SDK
import vertexai
from vertexai.preview import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"
embedding_model_config = rag.EmbeddingModelConfig(
endpoint=${MODEL_ENDPOINT},
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=${DISPLAY_NAME}, embedding_model_config=embedding_model_config
)
OSS 임베딩 모델 사용
RAG 엔진은 영어 전용 및 다국어 버전의 서드 파티 오픈소스 임베딩 모델을 지원합니다. 이 표에는 지원되는 E5 모델이 나와 있습니다.
모델 버전 | 기본 모델 | 매개변수 | 임베딩 차원 | 영어로만 제공 |
---|---|---|---|---|
e5-base-v2 |
MiniLM |
1억 9천만 | 768 | ✔ |
e5-large-v2 |
MiniLM |
335M | 1,024 | ✔ |
e5-small-v2 |
MiniLM |
3,300만 | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560M | 1,024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
1.18억 | 384 | ✗ |
RAG 엔진에서 E5 모델을 사용하려면 Model Garden에서 E5 모델을 배포해야 합니다. Google Cloud 콘솔에서 E5 텍스트 임베딩을 참고하여 E5 모델을 배포합니다.
다음 코드 샘플은 배포된 E5 모델로 RAG 코퍼스를 만드는 방법을 보여줍니다.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex Endpoint resource with the deployed E5 model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Python용 Vertex AI SDK
import vertexai
from vertexai.preview import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=PROJECT_ID, location="us-central1")
# Your Vertex Endpoint resource with the deployed E5 model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"
embedding_model_config = rag.EmbeddingModelConfig(
endpoint=MODEL_ENDPOINT,
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
)
다음 단계
- 텍스트 임베딩 모델에서 지원하는 언어에 관한 자세한 내용은 지원되는 텍스트 언어를 참고하세요.
- 그라운딩에 대한 자세한 내용은 그라운딩 개요를 참고하세요.
- RAG 엔진에 대해 자세히 알아보려면 RAG 엔진 사용을 참고하세요.
- 그라운딩 및 RAG에 대한 자세한 내용은 RAG를 사용하여 응답 그라운딩을 참고하세요.