Esta página descreve as opções de modelos de embedding e mostra como usar sua escolha para criar um corpus RAG. A associação entre o modelo e o corpus RAG permanece fixo durante todo o ciclo de vida dele.
Embeddings são representações numéricas de entradas. É possível usar embeddings em seus aplicativos para reconhecer significados complexos e relações semânticas, além de processar e produzir linguagem.
Os embeddings funcionam convertendo texto, imagem e vídeo em matrizes de elementos flutuantes números de ponto, chamados vetores. Quanto mais próximos dois vetores estiverem em seu espaço de embedding, maior será a semelhança de suas entradas.
Os modelos de embedding são um componente importante dos sistemas de recuperação semântica. O desempenho de um sistema de recuperação depende de como o modelo de embedding mapeia as relações nos dados.
O LlamaIndex na Vertex AI para RAG implementa a geração aumentada de recuperação (RAG) e oferece a escolha entre os seguintes modelos de embedding para usar em um corpus de RAG:
- Modelos de embedding de texto da Vertex AI: modelos treinados por um editor, como o Google. Os modelos são treinados em um grande conjunto de dados de texto, e fornecem um valor de referência para muitas tarefas.
- Modelos de embedding de texto da Vertex AI ajustados: modelos treinados para ter um conhecimento especializado ou desempenho altamente personalizado.
- Modelos de embedding OSS: modelos de embedding de código aberto de terceiros em variantes somente em inglês e multilíngues.
Usar modelos de embedding de texto da Vertex AI
A API de embedding de texto da Vertex AI usa o embedding Gecko de ML, que produz um vetor de embedding denso com 768 dimensões. Os embeddings densos armazenam o significado do texto, ao contrário dos vetores esparsos, que tendem a mapear diretamente palavras para números. O benefício de usar embeddings de vetores densos na IA generativa é que, em vez de pesquisar correspondências de palavra direta ou sintaxe, é possível pesquisar melhor trechos que se alinhem ao significado da consulta, mesmo que os trechos não usam o mesmo idioma.
Os modelos do Gecko estão disponíveis em versões somente em inglês e multilíngues. Diferente dos modelos Gecko ajustados, os modelos do editor Gecko não precisam ser implantados, o que os torna o conjunto de modelos mais fácil de usar com o LlamaIndex na Vertex AI para RAG. Os seguintes modelos Gecko são recomendados para uso com um corpus RAG:
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@003
textembedding-gecko-multilingual@001
Se você não especificar um modelo de embedding ao criar o corpus RAG,
O LlamaIndex na Vertex AI para RAG atribui por padrão o modelo text-embedding-004
aos seu
corpus RAG.
Os modelos do editor Gecko podem ser descontinuados. Se isso acontecer, os modelos do editor Gecko não poderão ser usados com o LlamaIndex na Vertex AI para RAG, mesmo para um corpus de RAG que foi criado antes da descontinuação. Quando o modelo do Gecko for descontinuado, será necessário migrar o corpus de RAG, ou seja, criar um corpus de RAG e importar os dados. Uma alternativa é usar um modelo do Gecko ajustado ou um modelo de embedding de OSS autoimplantado, que tem suporte após a descontinuação do modelo.
Estes exemplos de código demonstram como criar um corpus RAG com um modelo de editor do Gecko.
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}"\"'
}
}
}'
SDK da Vertex AI para Python
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
)
Use modelos de embedding de texto da Vertex AI ajustados
Embora os modelos de editores de base sejam treinados em um grande conjunto de dados de texto e ofereçam um valor de referência sólido para muitas tarefas, pode haver cenários em que você pode exigir que os modelos tenham um conhecimento especializado ou um desempenho personalizado. Nesses casos, o ajuste de modelo permite ajustar representações de vetor usando seus dados relevantes. Outro benefício dessa abordagem é que, quando o modelo é ajustado, a imagem resultante é de sua propriedade e não é afetada pela descontinuação do modelo Gecko. Todos os modelos de embedding do Gecko ajustados produzem embeddings com vetores de 768 dimensões. Para saber mais sobre esses modelos, consulte Receber embeddings de texto.
Para ajustar um modelo Gecko, consulte Ajustar embeddings de texto.
Esses exemplos de código demonstram como criar um corpus RAG com seu modelo Gecko ajustado.
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}"\"'
}
}
}'
SDK da Vertex AI para Python
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
)
Usar modelos de embedding do OSS
O LlamaIndex na Vertex AI para RAG oferece suporte a modelos de embedding de código aberto de terceiros em variantes somente em inglês e multilíngues. Esta tabela lista os modelos E5 compatíveis.
Versão do modelo | Modelo base | Parâmetros | Dimensão do embedding | Somente em inglês. |
---|---|---|---|---|
e5-base-v2 |
MiniLM |
109 milhões | 768 | ✔ |
e5-large-v2 |
MiniLM |
335 milhões | 1.024 | ✔ |
e5-small-v2 |
MiniLM |
33 milhões | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560 milhões | 1.024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
118 milhões | 384 | ✗ |
Para usar modelos E5 com o LlamaIndex na Vertex AI para RAG, o modelo E5 precisa ser implantado no Model Garden. Consulte Embedding de texto E5 no console do Google Cloud para implantar seu modelo E5.
Estes exemplos de código demonstram como criar um corpus RAG com o modelo E5 implantado.
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}"\"'
}
}
}'
SDK da Vertex AI para Python
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
)
A seguir
- Para saber mais sobre os idiomas compatíveis com os modelos de embedding de texto, consulte Idiomas de texto compatíveis.
- Para saber mais sobre o embasamento, consulte Visão geral do embasamento.
- Para saber mais sobre o LlamaIndex na Vertex AI para RAG, consulte Usar o LlamaIndex na Vertex AI para RAG.
- Para saber mais sobre embasamento e RAG, consulte Embasar respostas usando RAG.