Récupération et classement

Cette page explique le reclassement et vous montre comment utiliser l'API pour reclasser vos réponses récupérées.

Le reclassement post-récupération est une technique qui améliore la pertinence des résultats de récupération. Le moteur RAG Vertex AI propose des reclasseurs facultatifs qui améliorent la pertinence des résultats récupérés lors des requêtes. Les outils de réajustement évaluent la pertinence des segments d'une requête et réorganisent les résultats en conséquence. Le nouvel ordre permet d'obtenir des réponses plus adaptées à la requête ou peut être inclus dans les requêtes d'inférence de modèle pour générer des réponses plus pertinentes et précises.

Reclasseurs disponibles

Cette section présente les types de reclasseurs.

Reclassement LLM

Le reranker LLM est le reranker qui utilise un LLM pour évaluer la pertinence des fragments par rapport à une requête et réorganiser les résultats en conséquence, ce qui permet d'obtenir des réponses plus adaptées ou des requêtes améliorées pour l'inférence de modèle.

Reclassement du service de classement Vertex AI

Le reclassement du service de classement est basé sur l'API de classement, qui prend une liste de documents et les reclasse en fonction de leur pertinence par rapport à une requête. Par rapport aux représentations vectorielles continues, qui ne tiennent compte que de la similarité sémantique d'un document et d'une requête, cette approche peut vous fournir des scores précis sur la qualité de la réponse d'un document à une requête donnée.

Éléments à prendre en compte lors du choix d'un outil de reclassement

Tenez compte des points suivants lorsque vous choisissez un outil de reclassement:

  • Les reclasseurs du LLM et du service de classement utilisent le réordonnancement pour améliorer la pertinence des contextes récupérés, ce qui permet au modèle de fournir de meilleures réponses.
  • Les reclasseurs introduisent une latence, qui augmente avec le nombre de contextes traités.
  • Le coût d'un outil de reclassement LLM dépend du nombre de jetons traités, mais le coût de l'outil de reclassement du service de classement est fixe par requête.

Utiliser les rerankers

Cette section présente les conditions préalables et les exemples de code pour utiliser les rerankers.

Conditions préalables à l'utilisation du rerankeur LLM

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

Récupérer des contextes pertinents à l'aide de l'API RAG

Cet exemple de code montre comment récupérer des contextes pertinents à l'aide de l'API RAG.

REST

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

  • PROJECT_ID: ID de votre Google Cloud projet.
  • 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 requête permettant d'obtenir des 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"
          }
        }
      }
    }
  }'

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 Google Cloud projet.
  • 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 requête permettant d'obtenir des 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_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: "....
#   ....

Générer du contenu à l'aide de l'API RAG

REST

Pour générer du contenu à l'aide de modèles Gemini, appelez l'API GenerateContent Vertex AI.

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

  • PROJECT_ID: ID de votre Google Cloud projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-flash-002.
  • 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.
  • MODEL_NAME: nom du modèle utilisé pour le reclassement.
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_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

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 Google Cloud projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-flash-002.
  • 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.
  • MODEL_NAME: nom du modèle utilisé pour le reclassement.
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"
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érequis du rerankeur du service de classement Vertex

Pour utiliser le reclassement du service de classement Vertex AI, l'API Discovery Engine doit être activée. Vous trouverez tous les modèles compatibles dans le document.

Récupérer des contextes pertinents à l'aide de l'API RAG

Une fois que vous avez créé votre corpus RAG, vous pouvez récupérer les contextes pertinents à partir du moteur RAG Vertex AI via l'API RetrieveContexts.

Ces exemples de code montrent comment utiliser l'API pour récupérer des contextes à partir du moteur RAG Vertex AI.

REST

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

  • PROJECT_ID: ID de votre Google Cloud projet.
  • LOCATION: région dans laquelle traiter votre requête.
  • RAG_CORPUS_RESOURCE: nom de la ressource du corpus RAG. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: texte de requête permettant d'obtenir des 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": 5,
        "ranking": {
          "rank_service": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

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 Google Cloud projet.
  • LOCATION: région dans laquelle traiter votre requête.
  • RAG_CORPUS_RESOURCE: nom de la ressource du corpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: texte de requête permettant d'obtenir des 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(
        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: "....
#   ....

Générer du contenu à l'aide de l'API RAG

REST

Pour générer du contenu à l'aide de modèles Gemini, appelez l'API GenerateContent Vertex AI. En spécifiant le RAG_CORPUS_RESOURCE dans 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 Google Cloud projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-flash-002.
  • GENERATION_METHOD: méthode LLM pour la génération de contenu. Les options incluent 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.
  • MODEL_NAME: nom du modèle utilisé pour le reclassement.
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_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

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 Google Cloud projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-flash-002.
  • GENERATION_METHOD: méthode LLM pour la génération de contenu. Les options incluent 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.
  • MODEL_NAME: nom du modèle utilisé pour le reclassement.
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=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....
#   ...

Étape suivante