Vista geral
A política SemanticCachePopulate é uma política de colocação em cache avançada concebida para otimizar o desempenho das cargas de trabalho de IA, especialmente as que envolvem grandes modelos de linguagem (GMLs).
A política usa a API Text embeddings da Vertex AI para gerar incorporações de texto e a pesquisa vetorial para colocar em cache as respostas da API com base na semelhança semântica, em vez de correspondências exatas.
A política SemanticCachePopulate pode reduzir os tempos de resposta para consultas repetidas e otimizar os custos, reduzindo o volume de chamadas para os MDIs.
Esta política é usada em conjunto com a política SemanticCacheLookup.
Esta política é uma política extensível e a utilização desta política pode ter implicações de custo ou utilização, consoante a sua licença do Apigee. Para ver informações sobre os tipos de políticas e as implicações de utilização, consulte Tipos de políticas.
Antes de começar
Antes de usar a política SemanticCachePopulate, tem de concluir as seguintes tarefas:
- Crie um projeto do Vertex AI.
- Crie um índice de pesquisa vetorial.
- Crie um ponto final da Vertex AI para o índice.
- Crie uma política SemanticCachePopulate.
Para mais informações sobre como concluir estas tarefas, consulte o artigo Comece a usar as políticas de cache semântica.
Funções e permissões
Para receber as autorizações de que
precisa para aplicar e usar a política SemanticCachePopulate,
peça ao seu administrador para lhe conceder a função de IAM
Utilizador da AI Platform (roles/aiplatform.user
)
na conta de serviço que usa para implementar proxies do Apigee.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Ativar APIs
Enable the Compute Engine, Vertex AI, and Cloud Storage APIs.
<SemanticCachePopulate>
elemento
Define uma política SemanticCachePopulate.
Valor predefinido | Consulte o separador Política predefinida abaixo |
Obrigatório? | Obrigatória |
Tipo | Objeto complexo |
Elemento principal | N/A |
Elementos subordinados |
<DisplayName> <IgnoreUnresolvedVariables> <SimilaritySearch> <TTLInSeconds> |
O elemento <SemanticCachePopulate>
usa a seguinte sintaxe:
Sintaxe
O elemento <SemanticCachePopulate>
usa a seguinte sintaxe:
<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>
Política predefinida
O exemplo seguinte mostra as predefinições quando adiciona uma política SemanticCachePopulate ao seu proxy de API na IU do 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>
Quando insere uma nova política SemanticCachePopulate na IU do Apigee, o modelo contém marcadores para todas as operações possíveis. Consulte abaixo informações sobre os elementos obrigatórios.
Este elemento tem os seguintes atributos comuns a todas as políticas:
Atributo | Predefinição | Obrigatório? | Descrição |
---|---|---|---|
name |
N/A | Obrigatório |
O nome interno da política. O valor do atributo Opcionalmente, use o elemento |
continueOnError |
falso | Opcional | Definido como false para devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido como true para que a execução do fluxo continue mesmo depois de uma política falhar. Veja também:
|
enabled |
verdadeiro | Opcional | Defina como true para aplicar a política. Defina como false para desativar a política. A política não é aplicada, mesmo que permaneça anexada a um fluxo. |
async |
falso | Descontinuado | Este atributo foi descontinuado. |
A tabela seguinte fornece uma descrição de alto nível dos elementos subordinados de
<SemanticCachePopulate>
:
Elemento secundário | Obrigatório? | Descrição |
---|---|---|
<DisplayName> |
Opcional | O nome da política. |
<IgnoreUnresolvedVariables> |
Opcional | Determina se o processamento é interrompido quando um conjunto de propriedades não é resolvido. |
<SimilaritySearch> |
Obrigatória | Elemento que contém as informações necessárias para atualizar o índice vetorial.
Para mais informações, consulte o artigo Inserir ou atualizar pontos de dados. O tempo de validade dos pontos de dados é de <TTLInSeconds> a partir do momento da entrada. |
<TTLInSeconds> |
Opcional | O tempo de vida (TTL) das respostas em cache, em segundos.
O valor predefinido é |
Exemplo
Esta secção apresenta um exemplo com <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>
Referência de elemento secundário
Esta secção descreve os elementos subordinados de <SemanticCachePopulate>
.
<DisplayName>
Use em conjunto com o atributo name
para etiquetar a política no editor de proxy da IU de gestão com um nome diferente e mais natural.
O elemento <DisplayName>
é comum a todas as políticas.
Valor predefinido | N/A |
Obrigatório? | Opcional. Se omitir <DisplayName> , é usado o valor do atributo name da política. |
Tipo | String |
Elemento principal | <PolicyElement> |
Elementos subordinados | Nenhum |
O elemento <DisplayName>
usa a seguinte sintaxe:
Sintaxe
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Exemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
O elemento <DisplayName>
não tem atributos nem elementos subordinados.
<IgnoreUnresolvedVariables>
Determina se o processamento é interrompido quando uma variável não é resolvida. Definido como
true
para ignorar as variáveis não resolvidas e continuar o processamento.
IgnoreUnresolvedVariables
não é aplicável quando <DefaultValue>
é fornecido.
Valor predefinido | Falso |
Obrigatório? | Opcional |
Tipo | Booleano |
Elemento principal |
<SemanticCachePopulate>
|
Elementos subordinados | Nenhum |
<SimilaritySearch>
Elemento que contém as informações necessárias para atualizar o índice vetorial.
Para mais informações, consulte o artigo Inserir ou atualizar pontos de dados.
O tempo de validade dos pontos de dados é de <TTLInSeconds>
a partir do momento da entrada.
Valor predefinido | N/A |
Obrigatório? | Obrigatória |
Tipo | String |
Elemento principal |
<SemanticCachePopulate>
|
Elementos subordinados |
<VertexAI> |
O elemento <SimilaritySearch>
usa a seguinte sintaxe:
<SimilaritySearch> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI> </SimilaritySearch>
<VertexAI> (elemento secundário de <SimilaritySearch>
)
Contém o elemento <URL> para atributos específicos da Vertex AI.
Valor predefinido | N/A |
Obrigatório? | Obrigatória |
Tipo | String |
Elemento principal |
<SimilaritySearch>
|
Elementos subordinados |
<URL> |
O elemento VertexAI
usa a seguinte sintaxe:
<VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI>
<URL> (elemento secundário de <VertexAI>
)
O URL usado para inserir ou atualizar pontos de dados no índice vetorial.
Valor predefinido | N/A |
Obrigatório? | Obrigatória |
Tipo | String |
Elemento principal |
<VertexAI>
|
Elementos subordinados |
Nenhum |
O elemento URL
usa a seguinte sintaxe:
<URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
<TTLInSeconds>
Elemento que especifica o tempo de vida (TTL) para as respostas em cache, em segundos. O valor predefinido é 60.
Para mais informações, consulte o artigo Atualize e recrie um índice ativo.
Valor predefinido | N/A |
Obrigatório? | Opcional |
Tipo | String |
Elemento principal |
<SemanticCachePopulate>
|
Elementos subordinados |
Nenhum |
Variáveis de fluxo
As variáveis de fluxo podem ser usadas para configurar o comportamento dinâmico de tempo de execução para políticas e fluxos, com base nos cabeçalhos HTTP ou no conteúdo das mensagens, ou no contexto disponível no fluxo. Para mais informações acerca das variáveis de fluxo, consulte o artigo Referência de variáveis de fluxo.
A política pode definir estas variáveis de só de leitura durante a execução.
Nome da variável | Descrição |
---|---|
response.content |
Contém o conteúdo completo da resposta da API. |
semanticcache.populate.policy_name.upsert_index_request |
Contém o payload do pedido enviado para a API Vertex AI Vector Search para atualizar o índice vetorial com novas incorporações e metadados. |
semanticcache.populate.policy_name.upsert_index_response |
Contém a resposta da API Vertex AI Vector Search, indicando o êxito ou a falha da operação de atualização do índice. |
Referência de erro
Esta secção descreve os códigos de falhas e as mensagens de erro devolvidas, bem como as variáveis de falhas definidas pelo Apigee específicas da política <SemanticCachePopulate>
.
É importante conhecer estas informações se estiver a desenvolver regras de falhas para processar falhas. Para saber mais, consulte os artigos O que precisa de saber acerca dos erros de políticas e Como resolver
falhas.
Erros de tempo de execução
Estes erros podem ocorrer quando a política é executada.
Código de falha | Estado de HTTP | Causa |
---|---|---|
steps.semanticcachepopulate.VectorSearchUpsertServiceUnavailable
|
400 |
Este erro ocorre se a API Vector Search Upsert Datapoints estiver indisponível. |
steps.semanticcache.populate.VectorSearchUpsertAPIFailed |
500 |
Este erro ocorre se o serviço da API Vector Search Upsert Datapoints falhar. |
steps.semanticcache.populate.AuthenticationFailure |
500 |
Este erro ocorre se a conta de serviço não tiver as autorizações necessárias. |
steps.semanticcache.populate.CalloutError |
500 |
A chamada do serviço Vertex AI falhou. |
steps.semanticcache.populate.InternalError |
500 |
Este erro ocorre no caso de um erro inesperado na política |
Erros de implementação
Estes erros podem ocorrer quando implementa um proxy que contém esta política.
Nome do erro | Causa |
---|---|
The SimilaritySearch URL {url} is invalid. |
Ocorre se o elemento <URL> em <SimilaritySearch> estiver vazio ou for inválido. |
The scheme {http-scheme} of SimilaritySearch URL {url} must be one of http, https. |
Ocorre se o esquema http do elemento <URL> do SimilaritySearch for inválido. |
The TTLInSeconds element must be >= 0. |
Se o valor for definido como zero ou um número negativo, a implementação do proxy de API falha. |
Variáveis de falha
Estas variáveis são definidas quando esta política aciona um erro no tempo de execução. Para mais informações, consulte o artigo O que precisa de saber sobre os erros de políticas.
Variáveis | Onde | Exemplo |
---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME é o nome da falha, conforme indicado na tabela Erros de tempo de execução acima. O nome da falha é a última parte do código de falha. | fault.name Matches "UnresolvedVariable" |
semanticcachepopulate.POLICY_NAME.failed |
POLICY_NAME é o nome especificado pelo utilizador da política que gerou a falha. | semanticcachepopulate.SC-populate.failed = true |
Exemplo de resposta de erro
{ "fault": { "faultstring": "SemanticCacheLookup[SC-populate]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.semanticcachepopulate.UnresolvedVariable" } } }
Exemplo de regra de falha
<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 é definido por um esquema XML (.xsd
). Para referência, os esquemas de políticas
estão disponíveis no GitHub.