Reclasificación para el motor de RAG de Vertex AI

En la página se explica el proceso de reordenación y los tipos de ordenadores. En la página también se muestra cómo usar la API de clasificación de Vertex AI para volver a clasificar las respuestas obtenidas.

Rerankers disponibles

Opciones de ordenación Descripción Latencia Precisión Precios
API de ranking de Vertex AI La API Vertex AI Ranking es un reclasificador semántico independiente diseñado para ofrecer puntuaciones de relevancia de alta precisión y baja latencia.

Para obtener más información sobre la API de clasificación de Vertex AI, consulta Mejorar la calidad de la búsqueda y de RAG con la API de clasificación.
Muy baja (menos de 100 milisegundos) Rendimiento de última generación Por solicitud de Vertex AI RAG Engine
LLM reranker El reranqueador LLM usa una llamada independiente a Gemini para evaluar la relevancia de los fragmentos en relación con una consulta. Alto (de 1 a 2 segundos) Dependiente del modelo Precios de tokens de LLM

Usar la API Ranking de Vertex AI

Para usar la API Ranking de Vertex AI, debes habilitar la API Discovery Engine. Todos los modelos admitidos se pueden encontrar en la API Improve search and RAG quality with ranking (Mejorar la calidad de la búsqueda y de la RAG con la clasificación).

Estos ejemplos de código muestran cómo habilitar la función de volver a clasificar con la API Vertex AI Ranking en la configuración de la herramienta.

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta el artículo Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • MODEL_NAME: modelo de LLM para generar contenido. Por ejemplo, gemini-2.0-flash.
  • INPUT_PROMPT: texto enviado al LLM para generar contenido.
  • RAG_CORPUS_RESOURCE: nombre del recurso del corpus de RAG.
    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: opcional. Número de contextos principales que se van a recuperar.
  • RANKER_MODEL_NAME: el nombre del modelo usado para volver a clasificar. Por ejemplo, semantic-ranker-default@latest.
from vertexai import rag
from vertexai.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=RANKER_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....
#   ...

REST

Para generar contenido con los modelos de Gemini, llama a la API de GenerateContent de Vertex AI. Si especificas el RAG_CORPUS_RESOURCE al hacer la solicitud, el modelo recuperará automáticamente los datos del motor RAG de Vertex AI.

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • MODEL_NAME: modelo de LLM para generar contenido. Por ejemplo, gemini-2.0-flash.
  • GENERATION_METHOD: método de LLM para generar contenido. Entre las opciones disponibles se incluyen generateContent y streamGenerateContent.
  • INPUT_PROMPT: texto enviado al LLM para generar contenido.
  • RAG_CORPUS_RESOURCE: nombre del recurso del corpus de RAG.
    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: opcional. Número de contextos principales que se van a recuperar.
  • RANKER_MODEL_NAME: el nombre del modelo usado para volver a clasificar. Por ejemplo, semantic-ranker-default@latest.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_NAME: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": SIMILARITY_TOP_K,
          "ranking": {
            "rank_service": {
              "model_name": "RANKER_MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Usar el reranqueador LLM en el motor de RAG de Vertex AI

En esta sección se presentan los requisitos previos y los ejemplos de código para usar un reranqueador LLM.

El reranqueador LLM solo admite modelos de Gemini, a los que se puede acceder cuando la API del motor RAG de Vertex AI está habilitada. Para ver la lista de modelos compatibles, consulta Modelos de Gemini.

Para recuperar contextos relevantes con la API Vertex AI RAG Engine, haz lo siguiente:

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta el artículo Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • RAG_CORPUS_RESOURCE: nombre del recurso de corpus de RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: el texto de la consulta para obtener contextos relevantes.
  • MODEL_NAME: nombre del modelo usado para volver a clasificar.
from vertexai 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(
        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: "....
#   ....

REST

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • RAG_CORPUS_RESOURCE: nombre del recurso de corpus de RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: el texto de la consulta para obtener contextos relevantes.
  • MODEL_NAME: nombre del modelo usado 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/v1/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"
          }
        }
      }
    }
  }'

Siguientes pasos