Reclassement pour le moteur RAG Vertex AI

La page explique le reranking et les types de rankers. Cette page explique également comment utiliser l'API Vertex AI Ranking pour réorganiser les réponses récupérées.

Rerankers disponibles

Options de classement Description Latence Justesse Tarifs
API Vertex AI Ranking L'API Vertex AI Ranking est un reranker sémantique autonome conçu pour un scoring de pertinence très précis et une faible latence.

Pour en savoir plus sur l'API Vertex AI Ranking, consultez Améliorer la qualité de la recherche et de la RAG avec l'API Ranking.
Très faible (moins de 100 millisecondes) Bénéficiez de performances optimales Par requête du moteur RAG Vertex AI
Reranker LLM Le reranker LLM utilise un appel distinct à Gemini pour évaluer la pertinence des blocs par rapport à une requête. Élevée (1 à 2 secondes) Dépend du modèle Tarification des jetons LLM

Utiliser l'API Vertex AI Ranking

Pour utiliser l'API Vertex AI Ranking, vous devez activer l'API Discovery Engine. Tous les modèles compatibles sont disponibles dans Améliorer la qualité de la recherche et de RAG avec l'API Ranking.

Ces exemples de code montrent comment activer le re-classement avec l'API Vertex AI Ranking dans la configuration de l'outil.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

Remplacez les variables suivantes utilisées dans l'exemple de code :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : région dans laquelle traiter la requête.
  • MODEL_NAME : LLM pour la génération de contenu. Exemple : gemini-2.0-flash.
  • INPUT_PROMPT : texte envoyé au LLM pour la génération de contenu.
  • RAG_CORPUS_RESOURCE : nom de la ressource du corpus RAG.
    Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K (facultatif) : nombre de contextes principaux à récupérer.
  • RANKER_MODEL_NAME : nom du modèle utilisé pour le reclassement. Par exemple, 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

Pour générer du contenu à l'aide de modèles Gemini, appelez l'API GenerateContent Vertex AI. En spécifiant RAG_CORPUS_RESOURCE lorsque vous envoyez la requête, le modèle récupère automatiquement les données du moteur RAG Vertex AI.

Remplacez les variables suivantes utilisées dans l'exemple de code :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : région dans laquelle traiter la requête.
  • MODEL_NAME : LLM pour la génération de contenu. Exemple : gemini-2.0-flash.
  • GENERATION_METHOD : méthode LLM pour la génération de contenu. Les options sont generateContent et streamGenerateContent.
  • INPUT_PROMPT : texte envoyé au LLM pour la génération de contenu.
  • RAG_CORPUS_RESOURCE : nom de la ressource du corpus RAG.
    Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K (facultatif) : nombre de contextes principaux à récupérer.
  • RANKER_MODEL_NAME : nom du modèle utilisé pour le reclassement. Par exemple, 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"
            }
          }
        }
      }
    }
  }
}'

Utiliser le reranker LLM dans le moteur RAG Vertex AI

Cette section présente les conditions préalables et les exemples de code pour utiliser un reranker LLM.

Le reranker LLM n'est compatible qu'avec les modèles Gemini, qui sont accessibles lorsque l'API Vertex AI RAG Engine est activée. Pour afficher la liste des modèles compatibles, consultez Modèles Gemini.

Pour récupérer des contextes pertinents à l'aide de l'API Vertex AI RAG Engine, procédez comme suit :

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

Remplacez les variables suivantes utilisées dans l'exemple de code :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : région dans laquelle traiter la requête.
  • RAG_CORPUS_RESOURCE : nom de la ressource du corpus RAG. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT : texte de la requête permettant d'obtenir les contextes pertinents.
  • MODEL_NAME : nom du modèle utilisé pour le reclassement.
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

Remplacez les variables suivantes utilisées dans l'exemple de code :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : région dans laquelle traiter la requête.
  • RAG_CORPUS_RESOURCE : nom de la ressource du corpus RAG. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT : texte de la requête permettant d'obtenir les contextes pertinents.
  • MODEL_NAME : nom du modèle utilisé pour le reclassement.
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"
          }
        }
      }
    }
  }'

Étapes suivantes