Règle SemanticCachePopulate

Présentation

La stratégie SemanticCachePopulate est une stratégie de mise en cache avancée conçue pour optimiser les performances des charges de travail d'IA, en particulier celles impliquant des grands modèles de langage (LLM).

La stratégie utilise l'API d'embeddings textuels Vertex AI pour générer des embeddings pour le texte et la recherche vectorielle pour mettre en cache les réponses de l'API en fonction de la similarité sémantique, plutôt que des correspondances exactes.

La règle SemanticCachePopulate peut réduire les temps de réponse des requêtes répétées et optimiser les coûts en réduisant le volume d'appels aux LLM.

Cette règle est utilisée avec la règle SemanticCacheLookup.

Cette règle est une règle extensible et son utilisation peut avoir des conséquences sur le coût ou l'utilisation, en fonction de votre licence Apigee. Pour en savoir plus sur les types de règles et les implications en termes d'utilisation, consultez la section Types de règles.

Avant de commencer

Avant d'utiliser la stratégie SemanticCachePopulate, vous devez effectuer les tâches suivantes :

  • Créez un projet Vertex AI.
  • Créez un index Vector Search.
  • Créez un point de terminaison Vertex AI pour l'index.
  • Créez une stratégie SemanticCachePopulate.

Pour en savoir plus sur la réalisation de ces tâches, consultez Premiers pas avec les règles de mise en cache sémantique.

Rôles et autorisations

Pour obtenir les autorisations nécessaires pour appliquer et utiliser la règle SemanticCachePopulate, demandez à votre administrateur de vous accorder le rôle IAM Utilisateur de la plate-forme AI (roles/aiplatform.user) sur le compte de service que vous utilisez pour déployer des proxys Apigee. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Activer les API

Enable the Compute Engine, Vertex AI, and Cloud Storage APIs.

Enable the APIs

Élément <SemanticCachePopulate>

Définit une règle SemanticCachePopulate.

Valeur par défaut Consultez l'onglet Règles par défaut ci-dessous.
Obligatoire ? Obligatoire
Type Objet complexe
Élément parent ND
Éléments enfants <DisplayName>
<IgnoreUnresolvedVariables>
<SimilaritySearch>
<TTLInSeconds>

L'élément <SemanticCachePopulate> utilise la syntaxe suivante :

Syntaxe

L'élément <SemanticCachePopulate> utilise la syntaxe suivante :

<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate">
  <DisplayName>SCP-populate</DisplayName>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <SimilaritySearch>
    <VertexAI>
      <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
    </VertexAI>
  </SimilaritySearch>
  <TTLInSeconds>{EXPIRATION_TIME_IN_SECONDS}</TTLInSeconds>
</SemanticCachePopulate>

Règle par défaut

L'exemple suivant montre les paramètres par défaut lorsque vous ajoutez une règle SemanticCachePopulate à votre proxy d'API dans l'UI Apigee :

<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate">
  <DisplayName>SCP-populate</DisplayName>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <SimilaritySearch>
    <VertexAI>
      <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
    </VertexAI>
  </SimilaritySearch>
  <TTLInSeconds>60</TTLInSeconds>
</SemanticCachePopulate>

Lorsque vous insérez une nouvelle règle SemanticCachePopulate dans l'interface utilisateur d'Apigee, le modèle contient des bouchons pour toutes les opérations possibles. Vous trouverez ci-dessous des informations sur les éléments requis.

Cet élément possède les attributs suivants qui sont communs à toutes les règles :

Attribut Par défaut Obligatoire ? Description
name ND Obligatoire

Nom interne de la règle. La valeur de l'attribut name peut contenir des lettres, des chiffres, des espaces, des tirets, des traits de soulignement et des points. Cette valeur ne peut pas dépasser 255 caractères.

Vous pouvez également utiliser l'élément <DisplayName> pour ajouter un libellé à la règle dans l'éditeur de proxy de l'interface utilisateur de gestion avec un nom différent, en langage naturel.

continueOnError faux Facultatif Définissez sur false pour afficher une erreur en cas d'échec d'une règle. Il s'agit du comportement attendu pour la plupart des règles. Définissez sur true pour que l'exécution du flux se poursuive même après l'échec d'une règle. Voir aussi :
enabled true Facultatif Définissez sur true pour appliquer la règle. Définissez sur false pour désactiver la règle. La règle ne sera pas appliquée même si elle reste associée à un flux.
async   faux Obsolète Cet attribut est obsolète.

Le tableau suivant fournit une description détaillée des éléments enfants de <SemanticCachePopulate> :

Élément enfant Obligatoire ? Description
<DisplayName> Facultatif Nom de la règle.

<IgnoreUnresolvedVariables> Facultatif Détermine si le traitement s'arrête lorsqu'un ensemble de propriétés n'est pas résolu.
<SimilaritySearch> Obligatoire Élément contenant les informations requises pour mettre à jour l'index vectoriel.

Pour en savoir plus, consultez Insérer des points de données.

Le délai d'expiration des points de données est <TTLInSeconds> à partir du moment de l'entrée.

<TTLInSeconds> Facultatif Valeur TTL (Time To Live) des réponses mises en cache, en secondes.

La valeur par défaut est 60.

Exemple

Cette section fournit un exemple utilisant <SemanticCachePopulate>.

<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate">
  <DisplayName>SCP-populate</DisplayName>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <SimilaritySearch>
    <VertexAI>
      <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
    </VertexAI>
  </SimilaritySearch>
  <TTLInSeconds>60</TTLInSeconds>
</SemanticCachePopulate>

Référence d'élément enfant

Cette section décrit les éléments enfants de <SemanticCachePopulate>.

<DisplayName>

Utilisez-le, en plus de l'attribut name, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent et plus naturel.

L'élément <DisplayName> est commun à toutes les règles.

Valeur par défaut N/A
Obligatoire ? Facultatif. Si vous omettez <DisplayName>, la valeur de l'attribut name de la règle est utilisée.
Type Chaîne
Élément parent <PolicyElement>
Éléments enfants Aucun

L'élément <DisplayName> utilise la syntaxe suivante :

Syntaxe

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Exemple

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

L'élément <DisplayName> ne comporte aucun attribut ni élément enfant.

<IgnoreUnresolvedVariables>

Détermine si le traitement s'arrête lorsqu'une variable n'est pas résolue. Définissez la valeur sur true pour ignorer les variables non résolues et poursuivre le traitement.

IgnoreUnresolvedVariables n'est pas applicable lorsque <DefaultValue> est fourni.

Valeur par défaut Faux
Obligatoire ? Facultatif
Type Booléen
Élément parent <SemanticCachePopulate>
Éléments enfants Aucun

<SimilaritySearch>

Élément contenant les informations requises pour mettre à jour l'index vectoriel.

Pour en savoir plus, consultez Insérer des points de données.

Le délai d'expiration des points de données est de <TTLInSeconds> à compter de la date d'entrée.

Valeur par défaut N/A
Obligatoire ? Obligatoire
Type Chaîne
Élément parent <SemanticCachePopulate>
Éléments enfants <VertexAI>

L'élément <SimilaritySearch> utilise la syntaxe suivante :

<SimilaritySearch>
  <VertexAI>
    <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
  </VertexAI>
</SimilaritySearch>

<VertexAI> (enfant de <SimilaritySearch>)

Contient l'élément <URL> pour les attributs spécifiques à Vertex AI.

Valeur par défaut N/A
Obligatoire ? Obligatoire
Type Chaîne
Élément parent <SimilaritySearch>
Éléments enfants <URL>

L'élément VertexAI utilise la syntaxe suivante :

<VertexAI>
  <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
</VertexAI>

<URL> (enfant de <VertexAI>)

URL utilisée pour effectuer une opération upsert sur des points de données dans l'index vectoriel.

Valeur par défaut N/A
Obligatoire ? Obligatoire
Type Chaîne
Élément parent <VertexAI>
Éléments enfants Aucune

L'élément URL utilise la syntaxe suivante :

<URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>

<TTLInSeconds>

Élément spécifiant la valeur TTL (Time To Live) des réponses mises en cache, en secondes. La valeur par défaut est 60.

Pour en savoir plus, consultez la section Mettre à jour et recompiler un index actif.

Valeur par défaut N/A
Obligatoire ? Facultatif
Type Chaîne
Élément parent <SemanticCachePopulate>
Éléments enfants Aucune

Variables de flux

Les variables de flux peuvent être utilisées pour configurer le comportement d'exécution dynamique des règles et des flux en fonction des en-têtes HTTP, du contenu des messages ou du contexte disponible dans le flux. Pour en savoir plus sur les variables de flux, consultez la documentation de référence sur les variables de flux.

La règle peut définir ces variables en lecture seule lors de l'exécution.

Nom de la variable Description
response.content Contient le contenu complet de la réponse de l'API.
semanticcache.populate.policy_name.upsert_index_request Contient la charge utile de la requête envoyée à l'API Vertex AI Vector Search pour mettre à jour l'index vectoriel avec de nouveaux embeddings et métadonnées.
semanticcache.populate.policy_name.upsert_index_response Contient la réponse de l'API Vertex AI Vector Search, indiquant la réussite ou l'échec de l'opération de mise à jour de l'index.

Informations de référence sur les erreurs

Cette section décrit les codes d'erreur et les messages d'erreur renvoyés, ainsi que les variables d'erreur définies par Apigee spécifiques à la règle <SemanticCachePopulate>. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.

Erreurs d'exécution

Ces erreurs peuvent se produire lors de l'exécution de la règle.

Code d'erreur État HTTP Cause
steps.semanticcachepopulate.VectorSearchUpsertServiceUnavailable 400

Cette erreur se produit si l'API Vector Search Upsert Datapoints est indisponible.

steps.semanticcache.populate.VectorSearchUpsertAPIFailed 500

Cette erreur se produit si le service de l'API Vector Search Upsert Datapoints échoue.

steps.semanticcache.populate.AuthenticationFailure 500

Cette erreur se produit si le compte de service ne dispose pas des autorisations requises.

steps.semanticcache.populate.CalloutError 500 L'appel du service Vertex AI a échoué.
steps.semanticcache.populate.InternalError 500

Cette erreur se produit en cas d'erreur inattendue dans la règle <SemanticCachePopulate>.

Erreurs de déploiement

Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.

Nom de l'erreur Cause
The SimilaritySearch URL {url} is invalid. Se produit si l'élément <URL> de <SimilaritySearch> est vide ou non valide.
The scheme {http-scheme} of SimilaritySearch URL {url} must be one of http, https. Se produit si le schéma http de l'élément SimilaritySearch <URL> n'est pas valide.
The TTLInSeconds element must be >= 0. Si la valeur est définie sur zéro ou sur un nombre négatif, le déploiement du proxy d'API échoue.

Variables de panne

Ces variables sont définies lorsque cette règle déclenche une erreur au moment de l'exécution. Pour en savoir plus, consultez la section Ce que vous devez savoir sur les erreurs liées aux règles.

Variables Lieu Exemple
fault.name="FAULT_NAME" FAULT_NAME est le nom de l'erreur, tel qu'indiqué dans le tableau Erreurs d'exécution ci-dessus. Le nom d'erreur est la dernière partie du code d'erreur. fault.name Matches "UnresolvedVariable"
semanticcachepopulate.POLICY_NAME.failed POLICY_NAME est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. semanticcachepopulate.SC-populate.failed = true

Exemple de réponse d'erreur

{
"fault": {
  "faultstring": "SemanticCacheLookup[SC-populate]: unable to resolve variable [variable_name]",
  "detail": {
    "errorcode": "steps.semanticcachepopulate.UnresolvedVariable"
  }
}
}

Exemple de règle de défaillance

<FaultRule name="SemanticCacheLookup Faults">
  <Step>
      <Name>SCL-CustomSetVariableErrorResponse</Name>
      <Condition>(fault.name = "SetVariableFailed")</Condition>
  </Step>
  <Condition>(semanticcachelookup.failed = true)</Condition>
</FaultRule>

Schémas

Chaque type de règle est défini par un schéma XML (.xsd). Pour référence, des schémas de règles sont disponibles sur GitHub.