Esta página se aplica a Apigee, pero no a Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Información general
La política SemanticCacheLookup es una política de almacenamiento en caché avanzada diseñada para optimizar el rendimiento de las cargas de trabajo de IA, especialmente las que implican modelos de lenguaje extensos (LLMs).
La política usa la API de inserciones de texto de Vertex AI para generar inserciones de texto y Vector Search para encontrar peticiones similares basadas en la similitud semántica, en lugar de en coincidencias exactas.
La política SemanticCacheLookup reduce los tiempos de respuesta de las consultas repetidas y optimiza los costes al reducir el volumen de llamadas a los LLMs.
Esta política funciona junto con la política SemanticCachePopulate.
Esta política es una política extensible y su uso puede tener implicaciones en cuanto a costes o utilización, en función de tu licencia de Apigee. Para obtener información sobre los tipos de políticas y las implicaciones de uso, consulta Tipos de políticas.
Antes de empezar
Antes de usar la política SemanticCacheLookup, completa las siguientes tareas:
- Crea un proyecto de Vertex AI.
- Crea un índice de Vector Search.
- Crea un endpoint de Vertex AI para el índice.
- Crea una política SemanticCachePopulate.
Para obtener más información sobre cómo completar estas tareas, consulta el artículo Empezar a usar políticas de almacenamiento semántico en caché.
Roles obligatorios
Para obtener los permisos que necesitas para aplicar y usar la política SemanticCacheLookup, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Usuario de AI Platform (roles/aiplatform.user
) en la cuenta de servicio que usas para implementar proxies de Apigee.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Habilitar APIs
Enable the Compute Engine, Vertex AI, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
Elemento <SemanticCacheLookup>
Define una política SemanticCacheLookup.
Valor predeterminado | Consulta la pestaña Política predeterminada que aparece más abajo. |
¿Es obligatorio? | Obligatorio |
Tipo | Objeto complejo |
Elemento principal | N/A |
Elementos secundarios |
<DisplayName> <IgnoreUnresolvedVariables> <UserPromptSource> <Embeddings> <SimilaritySearch> |
El elemento <SemanticCacheLookup>
utiliza la siguiente sintaxis:
Sintaxis
El elemento <SemanticCacheLookup>
utiliza la siguiente sintaxis:
<SemanticCacheLookup async="false" continueOnError="false" enabled="true" name="SCL-lookup"> <DisplayName>SCL-lookup</DisplayName> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}</UserPromptSource> <Embeddings> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:predict</URL> </VertexAI> </Embeddings> <SimilaritySearch> <VertexAI> <URL>https://{PUBLIC_DOMAIN_NAME}/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexEndpoints/{INDEX_ENDPOINT_ID}:findNeighbors</URL> <DeployedIndexID>{DEPLOYED_INDEX_ID}</DeployedIndexID> <Threshold>0.95</Threshold> </VertexAI> </SimilaritySearch> </SemanticCacheLookup>
Política predeterminada
En el siguiente ejemplo se muestran los ajustes predeterminados al añadir una política SemanticCacheLookup a tu flujo en la interfaz de usuario de Apigee:
<SemanticCacheLookup async="false" continueOnError="false"enabled="true" name="SCL-lookup"> <DisplayName>SCL-lookup</DisplayName> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}</UserPromptSource> <Embeddings> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:predict </URL> </VertexAI> </Embeddings> <SimilaritySearch> <VertexAI> <URL>https://{PUBLIC_DOMAIN_NAME}/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexEndpoints/{INDEX_ENDPOINT_ID}:findNeighbors</URL> <Threshold>0.9</Threshold> <DeployedIndexID>{DEPLOYED_INDEX_ID}</DeployedIndexID> </VertexAI> </SimilaritySearch> </SemanticCacheLookup>
Cuando insertas una política SemanticCacheLookup en la interfaz de usuario de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Consulta la información sobre los elementos obligatorios más abajo.
Este elemento tiene los siguientes atributos, que son comunes a todas las políticas:
Atributo | Predeterminado | ¿Es obligatorio? | Descripción |
---|---|---|---|
name |
N/A | Obligatorio |
El nombre interno de la política. El valor del atributo Opcionalmente, usa el elemento |
continueOnError |
falso | Opcional | Asigna el valor false para devolver un error cuando falle una política. Este es el comportamiento esperado de la mayoría de las políticas. Asigna el valor true para que la ejecución del flujo continúe incluso después de que falle una política. Consulta también:
|
enabled |
true | Opcional | Asigna el valor true para aplicar la política. Selecciona false para desactivar la política. La política no se aplicará aunque siga adjunta a un flujo. |
async |
falso | Obsoleto | Este atributo está obsoleto. |
En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <SemanticCacheLookup>
:
Elemento secundario | ¿Es obligatorio? | Descripción |
---|---|---|
<DisplayName> |
Opcional | El nombre de la política. |
<IgnoreUnresolvedVariables> |
Opcional | Determina si el procesamiento se detiene cuando no se resuelve una variable.
Asigna el valor true para ignorar las variables sin resolver y continuar con el proceso.
|
<UserPromptSource> |
Opcional | Ubicación de la carga útil del texto de la petición del usuario que se va a extraer. Solo se admiten valores de texto de cadena.
Este campo admite la sintaxis de las plantillas de mensajes de Apigee, incluido el uso de variables o funciones de ruta JSON. Por ejemplo: {jsonPath('$.contents[-1].parts[-1].text',request.content,true)} |
<Embeddings> |
Obligatorio | Elemento que contiene la información necesaria para generar las inserciones. |
<SimilaritySearch> |
Obligatorio | Elemento que contiene la información necesaria para realizar búsquedas por similitud.
Para obtener más información, consulta Consultar el índice público para obtener los vecinos más cercanos. |
Referencia de elemento secundario
En esta sección se describen los elementos secundarios de <SemanticCacheLookup>
.
<DisplayName>
Se usa junto con el atributo name
para etiquetar la política en el editor de proxy de la interfaz de usuario de gestión con un nombre diferente que suene más natural.
El elemento <DisplayName>
es común a todas las políticas.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional. Si omite <DisplayName> , se usará el valor del atributo name de la política. |
Tipo | Cadena |
Elemento principal | <PolicyElement> |
Elementos secundarios | Ninguno |
El elemento <DisplayName>
utiliza la siguiente sintaxis:
Sintaxis
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Ejemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
El elemento <DisplayName>
no tiene atributos ni elementos secundarios.
<IgnoreUnresolvedVariables>
Determina si el procesamiento se detiene cuando no se resuelve una variable. Asigna el valor true
para ignorar las variables sin resolver y continuar con el procesamiento.
IgnoreUnresolvedVariables
no se aplica cuando se proporciona <DefaultValue>
.
Valor predeterminado | Falso |
¿Es obligatorio? | Opcional |
Tipo | Booleano |
Elemento principal |
<SemanticCacheLookup>
|
Elementos secundarios | Ninguno |
<UserPromptSource>
Ubicación de la carga útil del texto de la petición del usuario que se va a extraer. Solo se admiten valores de texto de cadena.
Este campo admite la sintaxis de las plantillas de mensajes de Apigee, incluido el uso de variables o funciones de ruta JSON.
Por ejemplo:
{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}
Valor predeterminado | {jsonPath('$.contents[-1].parts[-1].text',request.content,true)} |
¿Es obligatorio? | Opcional |
Tipo | Cadena |
Elemento principal |
<SemanticCacheLookup>
|
Elementos secundarios | Ninguno |
<Embeddings>
Este elemento contiene la información necesaria para generar las inserciones de texto.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Cadena |
Elemento principal |
<SemanticCacheLookup>
|
Elementos secundarios |
<VertexAI>
|
El elemento <Embeddings>
utiliza la siguiente sintaxis:
<Embeddings> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:predict</URL> </VertexAI> </Embeddings>
<VertexAI> (subetiqueta de <Embeddings>
)
Contiene el elemento <URL> de los atributos específicos de Vertex AI.
Valor predeterminado | N/A |
¿Es obligatorio? | Obligatorio |
Tipo | Cadena |
Elemento principal |
<Embeddings>
|
Elementos secundarios |
<URL> |
El elemento VertexAI
utiliza la siguiente sintaxis:
<VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:predict</URL> </VertexAI>
<URL> (elemento secundario de <VertexAI>
)
URL usada para generar incrustaciones de texto. Consulta la lista de modelos admitidos que proporcionan inserciones de texto para la política SemanticCacheLookup.
Valor predeterminado | N/A |
¿Es obligatorio? | Obligatorio |
Tipo | Cadena |
Elemento principal |
<VertexAI>
|
Elementos secundarios |
Ninguno |
El elemento URL
utiliza la siguiente sintaxis:
<URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:predict</URL>
El elemento URL
admite el uso de plantillas de URL. Si quiere, puede proporcionar una variable en este elemento para almacenar el valor de la URL, como se muestra en el siguiente ejemplo:
<URL>https://{URL_VARIABLE}</URL>
<SimilaritySearch>
Este elemento contiene la información necesaria para realizar búsquedas por similitud.
Para obtener más información, consulta Consultar el índice público para obtener los vecinos más cercanos.
Valor predeterminado | N/A |
¿Es obligatorio? | Obligatorio |
Tipo | Cadena |
Elemento principal |
<SemanticCacheLookup>
|
Elementos secundarios |
<VertexAI> |
El elemento <SimilaritySearch>
utiliza la siguiente sintaxis:
<SimilaritySearch> <VertexAI> <URL>https://{PUBLIC_DOMAIN_NAME}/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexEndpoints/{INDEX_ENDPOINT_ID}:findNeighbors </URL> <Threshold>0.9</Threshold> <DeployedIndexID>{DEPLOYED_INDEX_ID}</DeployedIndexID> </VertexAI> </SimilaritySearch>
<VertexAI> (subetiqueta de <SimilaritySearch>
)
Contiene el elemento <URL> de los atributos específicos de Vertex AI.
Valor predeterminado | N/A |
¿Es obligatorio? | Obligatorio |
Tipo | Cadena |
Elemento principal |
<SimilaritySearch>
|
Elementos secundarios |
<URL> |
El elemento VertexAI
utiliza la siguiente sintaxis:
<VertexAI> <URL>https://{PUBLIC_DOMAIN_NAME}/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexEndpoints/{INDEX_ENDPOINT_ID}:findNeighbors</URL> <Threshold>0.9</Threshold> <DeployedIndexID>{DEPLOYED_INDEX_ID}</DeployedIndexID> </VertexAI>
En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <VertexAI>
.
Elemento secundario | ¿Es obligatorio? | Descripción |
---|---|---|
<URL> |
Obligatorio | Cadena La URL que se usa para realizar búsquedas de similitud. El punto de datos que mejor se ajusta, según el umbral de similitud, es el único que se utiliza. El elemento <URL>https://{URL_VARIABLE}</URL> |
<Threshold> |
Opcional | Cadena Puntuación de similitud que se usa para determinar si dos peticiones se consideran una coincidencia. Un valor entre 0 y 1. El valor predeterminado es 0,9. Consulta |
<DeployedIndexID> |
Obligatorio | Cadena ID del índice implementado en el endpoint de índice usado para el almacenamiento en caché semántico. |
Variables de flujo
Las variables de flujo configuran el comportamiento dinámico del tiempo de ejecución de las políticas y los flujos en función de los encabezados HTTP, el contenido de los mensajes o el contexto disponible en el flujo. Para obtener más información sobre las variables de flujo, consulta la referencia de variables de flujo.
Esta política proporciona el siguiente conjunto de variables de flujo de solo lectura durante la ejecución. Puede usar estas variables de flujo con la política DataCapture para crear informes analíticos personalizados. Para obtener más información, consulta el artículo Recoger datos de clientes con la política DataCapture.
Nombre de variable | Descripción |
---|---|
request.content |
Contiene el contenido completo de la solicitud de API entrante. |
request.url |
Contiene la URL de la solicitud de API entrante. |
semanticcache.lookup.policy_name.user_prompt |
Contiene componentes específicos extraídos de la petición, que se usa para generar inserciones o realizar búsquedas de similitud. |
semanticcache.lookup.policy_name.embeddings_request |
Contiene la carga útil de la solicitud enviada a la API Embeddings de Vertex AI para generar las inserciones de texto del texto de entrada. |
semanticcache.lookup.policy_name.embeddings_response |
Contiene la respuesta de la API Vertex AI Embeddings, que incluye las inserciones de texto generadas. |
semanticcache.lookup.policy_name.dense_embeddings |
Contiene los valores de incrustación numéricos reales generados por la API Vertex AI Embeddings. |
semanticcache.lookup.policy_name.is_nearest_neighbor_hit |
Especifica si se ha encontrado un vecino más cercano en la base de datos de vectores para la solicitud dada y si el punto de datos cumple el umbral de similitud. |
semanticcache.lookup.policy_name.cache_hit |
Especifica si la respuesta se ha encontrado en la caché semántica. |
semanticcache.lookup.policy_name.cached_llm_response |
Contiene la respuesta obtenida de la caché semántica (si se ha encontrado en la caché). |
Referencia de errores
En esta sección se describen los códigos de error y los mensajes de error que devuelve Apigee, así como las variables de error que define Apigee, en relación con la política <SemanticCacheLookup>
. Es importante que conozcas esta información si vas a desarrollar reglas de errores para gestionarlos. Para obtener más información, consulta Qué debes saber sobre los errores de política y Gestionar errores.
Errores de tiempo de ejecución
Estos errores se producen cuando se ejecuta la política.
Código de fallo | Estado de HTTP | Causa |
---|---|---|
steps.semanticcache.lookup.MessageTemplateExtractionFailed |
400 |
No se han podido extraer datos de la solicitud mediante la expresión de ruta JSON. |
steps.semanticcache.lookup.FailedToExtractUserPrompt |
500 |
No se ha podido extraer la petición del usuario de la solicitud de la API. |
steps.semanticcache.lookup.EmbeddingsServiceUnavailable |
400 |
El servicio Vertex AI Embeddings no está disponible en este momento. |
steps.semanticcache.lookup.EmbeddingsAPIFailed |
400 |
Se ha producido un error en el servicio Vertex AI Embeddings. |
steps.semanticcache.lookup.VectorSearchServiceUnavailable |
400 |
El servicio Vertex AI Vector Search no está disponible en este momento. |
steps.semanticcache.lookup.VectorSearchAPIFailed |
400 |
El servicio Vertex AI Vector Search ha fallado. |
steps.semanticcache.lookup.AuthenticationFailure |
500 |
La cuenta de servicio no tiene los permisos necesarios. |
steps.semanticcache.lookup.InternalError |
500 |
Se ha producido un error inesperado en la política SemanticCacheLookup. |
steps.semanticcache.lookup.CalloutError |
500 |
No se ha podido llamar al servicio Vertex AI. |
Errores de implementación
Estos errores se producen cuando implementas un proxy que contiene esta política.
Nombre del error | Causa |
---|---|
The Embeddings/VertexAI element is required. |
Se produce si el elemento <VertexAI> de <Embeddings> está vacío. |
The SimilaritySearch/VertexAI element is required. |
Se produce si el elemento <VertexAI> de <SimilaritySearch> está vacío. |
The Embeddings/URL element is required. |
Se produce si el elemento <URL> de <Embeddings> está vacío. |
The SimilaritySearch/URL element is required. |
Se produce si el elemento <URL> de <SimilaritySearch> está vacío. |
Embeddings URL {url} is invalid. |
Se produce si el elemento <URL> de <Embeddings> está vacío o no es válido. |
The SimilaritySearch URL {url} is invalid. |
Se produce si el elemento <URL> de <SimilaritySearch> está vacío o no es válido. |
The scheme {http-scheme} of Embeddings URL {url} must be one of http, https. |
Se produce si el esquema http del elemento <URL> de Embeddings no es válido. |
The scheme {http-scheme} of SimilaritySearch URL {url} must be one of http, https. |
Se produce si el esquema http del elemento <URL> de SimilaritySearch no es válido. |
SimilaritySearch/Threshold element must be >= 0 and <= 1. |
Si el atributo no está entre 0 y 1, se produce un error al implementar el proxy de API. |
SimilaritySearch/DeployedIndexID element is required. |
Se produce si el elemento <DeployedIndexID> de <SimilaritySearch> está vacío. |
SimilaritySearch/DeployedIndexID element must not contain spaces. |
Se produce si el elemento <DeployedIndexID> de <SimilaritySearch> contiene espacios. |
Variables de error
Esta política define estas variables cuando se produce un error durante el tiempo de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de las políticas.
Variables | Dónde | Ejemplo |
---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME es el nombre del fallo, tal como se indica en la tabla Errores de tiempo de ejecución de arriba. El nombre del error es la última parte del código de error. | fault.name Matches "UnresolvedVariable" |
semanticcachelookup.POLICY_NAME.failed |
POLICY_NAME es el nombre de la política especificado por el usuario que ha provocado el error. | semanticcachelookup.SC-lookup.failed = true |
Ejemplo de respuesta de error
{ "fault": { "faultstring": "SemanticCacheLookup[SC-lookup]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.semanticcachelookup.UnresolvedVariable" } } }
Regla de fallo de ejemplo
<FaultRule name="SemanticCacheLookup Faults"> <Step> <Name>SCL-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(semanticcachelookup.failed = true)</Condition> </FaultRule>
Esquemas
Cada tipo de política se define mediante un esquema XML (.xsd
). Puedes consultar los esquemas de políticas en GitHub.