Reclasificación para el motor de RAG de Vertex AI

En la página, se explican el nuevo ranking y los tipos de clasificadores. 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 recuperadas.

Rerankers disponibles

Opciones del ranking Descripción Latencia Exactitud Precios
API de Vertex AI Ranking La API de clasificación de Vertex AI es un rerankificador semántico independiente diseñado para la puntuación de relevancia de alta precisión y la baja latencia.

Para obtener más información sobre la API de clasificación de Vertex AI, consulta Mejora la calidad de la búsqueda y de la RAG con la API de clasificación.
Muy baja (menos de 100 milisegundos) Rendimiento de vanguardia Por solicitud del motor de RAG de Vertex AI
Clasificador de LLM El rerank LLM usa una llamada separada a Gemini para evaluar la relevancia de los fragmentos para una búsqueda. Alta (1 a 2 segundos) Dependiente del modelo Precios de los tokens de LLM

Usa la API de clasificación de Vertex AI

Para usar la API de Vertex AI Ranking, debes habilitar la API de Discovery Engine. Todos los modelos compatibles se pueden encontrar en Mejora la calidad de la búsqueda y la RAG con la API de clasificación.

En estos ejemplos de código, se muestra cómo habilitar la clasificación de nuevo con la API de Vertex AI Ranking en la configuración de la herramienta.

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 proyecto de Google Cloud .
  • LOCATION: Es la región para procesar la solicitud.
  • MODEL_NAME: Es un modelo de LLM para la generación de contenido. Por ejemplo, gemini-2.0-flash.
  • INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido.
  • RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opcional: La cantidad de contextos principales que se recuperarán.
  • RANKER_MODEL_NAME: Es el nombre del modelo que se usa para la clasificación de nuevo. 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 RAG_CORPUS_RESOURCE cuando realizas la solicitud, el modelo recupera automáticamente datos del motor de RAG de Vertex AI.

Reemplaza las siguientes variables que se usan en el código de muestra:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • LOCATION: Es la región para procesar la solicitud.
  • MODEL_NAME: Es un modelo de LLM para la generación de contenido. Por ejemplo, gemini-2.0-flash.
  • GENERATION_METHOD: Es el método de LLM para la generación de contenido. Las opciones incluyen generateContent y streamGenerateContent.
  • INPUT_PROMPT: Es el texto enviado al LLM para la generación de contenido.
  • RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG.
    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opcional: La cantidad de contextos principales que se recuperarán.
  • RANKER_MODEL_NAME: Es el nombre del modelo que se usa para la clasificación de nuevo. 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"
            }
          }
        }
      }
    }
  }
}'

Usa el rerank LLM en Vertex AI RAG Engine

En esta sección, se presentan los requisitos previos y las muestras de código para usar un rerank LLM.

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

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

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 proyecto de Google Cloud .
  • 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 búsqueda para obtener contextos relevantes.
  • MODEL_NAME: Es el nombre del modelo que se usó para la clasificación.
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

Reemplaza las siguientes variables que se usan en la muestra de código:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • 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 búsqueda para obtener contextos relevantes.
  • MODEL_NAME: Es el nombre del modelo que se usó para la clasificación.
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"
          }
        }
      }
    }
  }'

¿Qué sigue?