En esta página, se explica el restablecimiento de la clasificación y se muestra cómo usar la API para volver a clasificar las respuestas recuperadas.
El rediseño de clasificación posterior a la recuperación es una técnica que mejora la relevancia de los resultados de la recuperación. El motor de RAG de Vertex AI ofrece reclasificadores opcionales que mejoran la relevancia de los resultados recuperados durante las consultas. Los reclasificadores evalúan la relevancia de los fragmentos de una consulta y vuelven a ordenar los resultados según corresponda. El nuevo orden genera respuestas más adecuadas a la consulta o se puede incluir en instrucciones para que la inferencia del modelo genere respuestas más relevantes y precisas.
Reclasificadores disponibles
En esta sección, se exploran los tipos de reclasificadores.
Reclasificador de LLM
El reclasificador de LLM es el reclasificador que usa un LLM para evaluar la relevancia de los fragmentos para una consulta y reordenar los resultados según corresponda, lo que genera respuestas más adecuadas o instrucciones mejoradas para la inferencia de modelos.
Reclasificador del servicio de clasificación de Vertex AI
El servicio de clasificación se basa en la API de clasificación que toma una lista de documentos y los vuelve a clasificar en función de su relevancia para una consulta. En comparación con las incorporaciones, que solo consideran la similitud semántica de un documento y una consulta, esto puede brindarte puntuaciones precisas sobre qué tan bien un documento responde una consulta determinada.
Cómo usar los reclasificadores
En esta sección, se presentan los requisitos previos y las muestras de código para usar los reclasificadores.
Requisitos previos para usar el reclasificador de LLM
El reclasificador de LLM solo admite modelos de Gemini, a los que se puede acceder cuando está habilitada la API de RAG. Para ver la lista de modelos compatibles, consulta Modelos de Gemini.
Cómo recuperar contextos relevantes con la API de RAG
En esta muestra de código, se muestra cómo recuperar contextos relevantes con la API de RAG.
REST
Reemplaza las siguientes variables que se usan en la muestra de código:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: Es el texto de la consulta para obtener contextos relevantes.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Reemplaza las siguientes variables que se usan en la muestra de código:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: Es el texto de la consulta para obtener contextos relevantes.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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: "....
# ....
Genera contenido con la API de RAG
REST
Para generar contenido con modelos de Gemini, realiza una llamada a la
API de GenerateContent
de Vertex AI. Cuando especificas el RAG_CORPUS_RESOURCE
en la solicitud, el modelo recupera automáticamente datos de Vertex AI Search.
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- MODEL_ID: Es un modelo de LLM para la generación de contenido. Por ejemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: Es el método LLM para la generación de contenido.
Las opciones son
generateContent
ystreamGenerateContent
. - INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido. Usa una instrucción relevante para los documentos en Vertex AI Search.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: Opcional: Es la cantidad de contextos principales que se recuperarán.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- MODEL_ID: Es un modelo de LLM para la generación de contenido. Por ejemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: Es el método LLM para la generación de contenido.
Las opciones son
generateContent
ystreamGenerateContent
. - INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido. Usa una instrucción relevante para los documentos en Vertex AI Search.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: Opcional: Es la cantidad de contextos principales que se recuperarán.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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 = vertexai.preview.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....
# ...
Requisitos previos del reclasificador del servicio de clasificación de Vertex
Para usar el reclasificador de servicios de clasificación de Vertex AI, se debe habilitar la API de Discovery Engine.
Cómo recuperar contextos relevantes con la API de RAG
Después de crear tu corpus de RAG, los contextos relevantes se pueden recuperar de Vertex AI Search a través de la API de RetrieveContexts
.
En estas muestras de código, se muestra cómo usar la API para recuperar contextos de Vertex AI Search.
REST
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar tu solicitud.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: Es el texto de la consulta para obtener contextos relevantes.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar tu solicitud.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: Es el texto de la consulta para obtener contextos relevantes.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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: "....
# ....
Genera contenido con la API de RAG
REST
Para generar contenido con modelos de Gemini, realiza una llamada a la
API de GenerateContent
de Vertex AI. Cuando especificas el RAG_CORPUS_RESOURCE
en la solicitud, el modelo recupera automáticamente datos de Vertex AI Search.
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- MODEL_ID: Es un modelo de LLM para la generación de contenido. Por ejemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: Es el método LLM para la generación de contenido.
Las opciones incluyen
generateContent
ystreamGenerateContent
. - INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido. Usa una instrucción relevante para los documentos en Vertex AI Search.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: Opcional: Es la cantidad de contextos principales que se recuperarán.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Reemplaza las siguientes variables que se usan en el código de muestra:
- PROJECT_ID: Es el ID de tu Google Cloud proyecto.
- LOCATION: Es la región para procesar la solicitud.
- MODEL_ID: Es un modelo de LLM para la generación de contenido. Por ejemplo,
gemini-1.5-flash-002
. - GENERATION_METHOD: Es el método LLM para la generación de contenido.
Las opciones incluyen
generateContent
ystreamGenerateContent
. - INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido. Usa una instrucción relevante para los documentos en Vertex AI Search.
- RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: Opcional: Es la cantidad de contextos principales que se recuperarán.
- MODEL_NAME: Es el nombre del modelo que se usa para volver a clasificar.
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 = vertexai.preview.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....
# ...