Esta página explica a classificação e mostra como usar a API para classificar novamente as respostas recuperadas.
A reclassificação pós-recuperação é uma técnica que melhora a relevância dos resultados de recuperação. O mecanismo RAG da Vertex AI oferece reclassificadores opcionais que melhoram a relevância dos resultados recuperados durante as consultas. Os reclassificadores avaliam a relevância dos blocos de uma consulta e reordenam os resultados de acordo. A nova ordem leva a respostas mais adequadas à consulta ou pode ser incluída em comandos para inferência de modelo para gerar respostas mais relevantes e precisas.
Rerankers disponíveis
Esta seção aborda os tipos de reclassificadores.
Reranker de LLM
O reclassificador de LLM é o reclassificador que usa um LLM para avaliar a relevância de partes de uma consulta e reordenar os resultados de acordo, levando a respostas mais adequadas ou comandos aprimorados para inferência de modelos.
Reclassificador de serviço de classificação da Vertex AI
O reclassificador de serviço de classificação é baseado na API de classificação que recebe uma lista de documentos e os classifica novamente com base na relevância deles para uma consulta. Em comparação com os embeddings, que consideram apenas a semelhança semântica de um documento e uma consulta, isso pode fornecer pontuações precisas sobre a capacidade de um documento responder a uma consulta específica.
Considerações ao escolher um reranker
Considere o seguinte ao escolher um reranker:
- Os rerankers de serviço de LLM e classificação usam a reordenação para melhorar a relevância dos contextos recuperados, o que permite que o modelo forneça respostas melhores.
- Os reclassificadores introduzem latência, que aumenta com o número de contextos processados.
- O custo de um reranker de LLM depende do número de tokens processados, mas o custo de usar o reranker do serviço de classificação é fixo por consulta.
Como usar rerankers
Esta seção apresenta os pré-requisitos e exemplos de código para usar os rerankers.
Pré-requisitos para usar o reranker de LLM
O reclassificador de LLM oferece suporte apenas a modelos do Gemini, que são acessíveis quando a API RAG está ativada. Para conferir a lista de modelos compatíveis, consulte Modelos do Gemini.
Extrair contextos relevantes usando a API RAG
Este exemplo de código demonstra como recuperar contextos relevantes usando a API RAG.
REST
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus
RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: o texto da consulta para receber contextos relevantes.
- MODEL_NAME: o nome do modelo usado para reclassificar.
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": """RAG_CORPUS_RESOURCE"
}
},
"query": {
"text": "TEXT",
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
Python
Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus
RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: o texto da consulta para receber contextos relevantes.
- MODEL_NAME: o nome do modelo usado para reclassificar.
from vertexai.preview import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/[RAG_CORPUS_ID]"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
rag_retrieval_config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=MODEL_NAME
)
)
)
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
text="TEXT",
rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
# contexts {
# source_uri: "gs://your-bucket-name/file.txt"
# text: "....
# ....
Gerar conteúdo usando a API RAG
REST
Para gerar conteúdo usando modelos do Gemini, faça uma chamada para a
API GenerateContent
da Vertex AI. Ao especificar o
RAG_CORPUS_RESOURCE
na solicitação, o modelo recupera automaticamente os dados
da Pesquisa da Vertex AI.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- MODEL_ID: modelo LLM para geração de conteúdo. Por exemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: método LLM para geração de conteúdo.
As opções são
generateContent
estreamGenerateContent
. - INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Use uma instrução relevante para os documentos na pesquisa da Vertex AI.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus da RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: opcional. O número de principais contextos a serem recuperados.
- MODEL_NAME: o nome do modelo usado para reclassificar.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
"contents": {
"role": "user",
"parts": {
"text": "INPUT_PROMPT"
}
},
"tools": {
"retrieval": {
"disable_attribution": false,
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
Python
Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- MODEL_ID: modelo LLM para geração de conteúdo. Por exemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: método LLM para geração de conteúdo.
As opções são
generateContent
estreamGenerateContent
. - INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Use uma instrução relevante para os documentos na pesquisa da Vertex AI.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus da RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: opcional. O número de principais contextos a serem recuperados.
- MODEL_NAME: o nome do modelo usado para reclassificar.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=MODEL_NAME
)
)
)
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
rag_retrieval_config=config
),
)
)
rag_model = GenerativeModel(
model_name=MODEL_NAME, tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
# The sky appears blue due to a phenomenon called Rayleigh scattering.
# Sunlight, which contains all colors of the rainbow, is scattered
# by the tiny particles in the Earth's atmosphere....
# ...
Pré-requisitos do serviço de reclassificação de classificação da Vertex
Para usar o reranker do serviço de classificação da Vertex AI, a API Discovery Engine precisa estar ativada. Todos os modelos compatíveis podem ser encontrados no documento.
Extrair contextos relevantes usando a API RAG
Depois de criar o corpus RAG, os contextos relevantes podem ser recuperados da
Vertex AI Search pela API RetrieveContexts
.
Estes exemplos de código demonstram como usar a API para extrair contextos da pesquisa da Vertex AI.
REST
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar sua solicitação.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus RAG.
Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: o texto da consulta para receber contextos relevantes.
- MODEL_NAME: o nome do modelo usado para reclassificar.
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
}
},
"query": {
"text": "TEXT",
"rag_retrieval_config": {
"top_k": 5,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
Python
Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar sua solicitação.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus
RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: o texto da consulta para receber contextos relevantes.
- MODEL_NAME: o nome do modelo usado para reclassificar.
from vertexai.preview import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
rag_retrieval_config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=MODEL_NAME
)
)
)
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
text="TEXT",
rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
# contexts {
# source_uri: "gs://your-bucket-name/file.txt"
# text: "....
# ....
Gerar conteúdo usando a API RAG
REST
Para gerar conteúdo usando modelos do Gemini, faça uma chamada para a
API GenerateContent
da Vertex AI. Ao especificar o
RAG_CORPUS_RESOURCE
na solicitação, o modelo recupera automaticamente os dados
da Pesquisa da Vertex AI.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- MODEL_ID: modelo LLM para geração de conteúdo. Por exemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: método LLM para geração de conteúdo.
As opções incluem
generateContent
estreamGenerateContent
. - INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Use uma instrução relevante para os documentos na pesquisa da Vertex AI.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus da RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: opcional. O número de principais contextos a serem recuperados.
- MODEL_NAME: o nome do modelo usado para reclassificar.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
"contents": {
"role": "user",
"parts": {
"text": "INPUT_PROMPT"
}
},
"tools": {
"retrieval": {
"disable_attribution": false,
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
Python
Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Substitua as seguintes variáveis usadas no exemplo de código:
- PROJECT_ID: o ID do projeto Google Cloud .
- LOCATION: a região para processar a solicitação.
- MODEL_ID: modelo LLM para geração de conteúdo. Por exemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: método LLM para geração de conteúdo.
As opções incluem
generateContent
estreamGenerateContent
. - INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Use uma instrução relevante para os documentos na pesquisa da Vertex AI.
- RAG_CORPUS_RESOURCE: o nome do recurso do corpus da RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: opcional. O número de principais contextos a serem recuperados.
- MODEL_NAME: o nome do modelo usado para reclassificar.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=MODEL_NAME
)
)
)
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
rag_retrieval_config=config
),
)
)
rag_model = GenerativeModel(
model_name="MODEL_NAME", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
print(response.text)
# Example response:
# The sky appears blue due to a phenomenon called Rayleigh scattering.
# Sunlight, which contains all colors of the rainbow, is scattered
# by the tiny particles in the Earth's atmosphere....
# ...
A seguir
- Para saber mais sobre as respostas da RAG, consulte Saída de recuperação e geração do mecanismo de RAG da Vertex AI.
- Gerenciar a base de conhecimento (corpus) da RAG