Entendendo o custo dos Cortex Search Services¶
Categorias de custo¶
Os Cortex Search Services incorrem nos seguintes tipos de custos:
Categoria |
Descrição |
---|---|
Computação de warehouse virtual |
Um Cortex Search Service requer um warehouse virtual para atualizar o serviço: para executar consultas em objetos de base quando eles são inicializados e atualizados, incluindo a orquestração de trabalhos de incorporação de texto e a criação do índice de pesquisa. Essas operações usam recursos de computação, que consomem créditos. Se nenhuma alteração for identificada durante uma atualização, os créditos do warehouse virtual não serão consumidos, pois não há novos dados para atualizar. |
Computação de tokens EMBED_TEXT |
Um Cortex Search Service incorpora automaticamente cada linha de texto na coluna de pesquisa especificada no parâmetro |
Computação de serviços |
Um Cortex Search Service usa computação de serviço multilocatário, separada de um warehouse virtual fornecido pelo usuário, para estabelecer um serviço de baixa latência e alta taxa de transferência. O custo de computação para esse componente é incorrido por GB por mês (GB/mo) de dados indexados não compactados, em que os dados indexados são os dados fornecidos pelo usuário na consulta de origem do Cortex Search, além de incorporações de vetor computados em nome do usuário. Você incorre nesses custos enquanto o serviço estiver disponível para responder às consultas, mesmo que nenhuma consulta seja atendida durante um determinado período. Para obter a taxa de crédito de serviços do Cortex Search por GB/mo de dados indexados, consulte a Snowflake Service Consumption Table. |
Armazenamento |
O Cortex Search Services materializa a consulta de origem em uma tabela armazenada em sua conta. Esta tabela é transformada em estruturas de dados otimizadas para serviços de baixa latência, também armazenadas em sua conta. O armazenamento da tabela e das estruturas de dados intermediárias é baseado em uma taxa fixa por terabyte (TB). |
Computação de serviços de nuvem |
Os Cortex Search Services usam a computação dos serviços de nuvem para identificar alterações nos objetos de base subjacentes e se o warehouse virtual precisa ser chamado. O custo de computação dos serviços de nuvem está sujeito à restrição de que a Snowflake cobra apenas se o custo diário dos serviços de nuvem for superior a 10% do custo diário do warehouse da conta. |
Este tópico fornece informações sobre esses custos, bem como recomendações para gerenciá-los de forma eficaz.
Gerenciamento de custos de indexação¶
Você pode achar as dicas a seguir úteis para gerenciar os custos de indexação de um Cortex Search Service:
- Minimize o tamanho do warehouse
A maioria dos serviços não apresenta melhora no desempenho de indexação além de um warehouse LARGE, e muitos precisam apenas de MEDIUM. A maior parte do tempo de computação usado na criação de um índice é consumida pela função de incorporação de texto, que não se beneficia de mais núcleos ou memória adicional quando já tem recursos suficientes.
- Suspenda a indexação quando a atualidade não for importante
Suspenda a indexação (ou aumente o atraso de destino) quando não precisar que as alterações nos documentos sejam imediatamente propagadas ao serviço de busca (ou seja, quando a atualidade não for tão importante por algum período).
- Defina o atraso de destino de acordo com os requisitos do negócio
Nem todos os aplicativos de pesquisa exigem indexação em tempo real. Um atraso de destino muito baixo pode fazer com que o índice seja atualizado com mais frequência do que o necessário. Por exemplo, se os dados de origem são atualizados a cada cinco minutos, mas o consumidor dos dados só consulta o serviço de pesquisa uma vez por hora, defina o atraso de destino para uma hora, não para cinco minutos.
- Agrupe mudanças
Há um componente fixo no custo de uma atualização, portanto, atualizações menores e maiores são mais baratas do que atualizações menores e mais frequentes. Da mesma forma, qualquer alteração em qualquer valor de uma linha aciona a reincorporação da coluna de pesquisa nessa linha, mesmo que os dados dessa coluna de pesquisa permaneçam inalterados, portanto, é melhor acumular todas as alterações em uma linha em uma única atualização.
- Minimize as alterações nos dados de origem
Qualquer alteração no esquema da consulta de origem causa uma atualização completa do serviço, incluindo incorporações e índices de vetores. Ao criar um serviço grande, considere a possibilidade de incluir colunas extras de carga útil para uso posterior, para que não seja necessário acionar uma atualização completa alterando o esquema quando for necessário adicionar uma coluna. O custo das colunas adicionais é baixo.
Dica
A materialização de dados em uma tabela na consulta de origem com um comando CREATE OR REPLACE faz com que o serviço atualize totalmente e incorpore novamente todos os vetores. É melhor atualizar a tabela de origem de forma incremental (por exemplo, com MERGE INTO).
- Mantenha a consulta de origem o mais simples possível
As junções ou outras operações complexas podem aumentar o custo de indexação (e pode ser melhor aplicá-las durante o ETL ou em outro estágio). Consulte as práticas recomendadas de tabelas dinâmicas para obter mais informações sobre a otimização de pipelines.
Gerenciamento dos custos de serviço¶
Você pode achar as dicas a seguir úteis para gerenciar os custos de serviços de um Cortex Search Service:
- Suspenda o serviço quando não estiver atendendo às consultas
Um serviço de pesquisa em execução incorre em custos mesmo que não esteja atendendo a consultas. Suspenda o serviço quando ele não for necessário, por exemplo, durante o desenvolvimento. Normalmente, leva apenas alguns minutos para retomar um serviço suspenso.
Custos de observação¶
Para saber mais sobre os custos de seus serviços Cortex Search, use as seguintes exibições Account Usage.
Exibição CORTEX_SEARCH_DAILY_USAGE_HISTORY contém totais diários para computação de tokens EMBED_TEXT e uso de computação de crédito de serviço por serviço. A Snowflake também pretende oferecer o uso de warehouses virtuais nessa exibição no futuro.
Exibição CORTEX_SEARCH_SERVING_USAGE_HISTORY inclui créditos por hora de serviço por serviço.
A Snowflake pretende disponibilizar essas informações na interface de administração do Cortex Search no futuro.
Estimativa de custos¶
Computação de tokens EMBED_TEXT¶
A computação de tokens EMBED_TEXT é cobrada por token de texto na coluna de pesquisa, por documento, cobrada no custo da taxa de crédito do modelo de incorporação selecionado. Esse custo de computação é incorrido para cada linha inserida ou atualizada, inclusive para cada linha na coluna ON durante a inicialização do serviço e para cada inserção ou atualização posterior. Para obter informações sobre o custo por token de cada modelo de incorporação, consulte os modelos de incorporação do Cortex Search:
Por exemplo, se você criar um serviço em uma consulta de origem com 10 milhões de linhas, cada uma com 500 tokens, e o modelo de incorporação selecionado incorrer em 0,05 crédito por 1 milhão de tokens, você deverá pagar o seguinte pela atualização inicial:
(0,05 crédito por 1 milhão de tokens) *(10.000.000 linhas) * (500 tokens por linha) / (1.000.000 tokens)
= 250 créditos
Para cada linha inserida ou atualizada depois disso, você incorreria em um custo de 0,05 crédito por 1 milhão de tokens.
Dica
Como aproximação, um token é equivalente a cerca de 3/4 de uma palavra em inglês, ou cerca de 4 caracteres. Para obter uma estimativa precisa de tokens por linha, use a função COUNT_TOKENS com uma amostra representativa de seus dados reais.
Computação de serviços¶
A computação de serviço é cobrada por gigabyte/mês de dados indexados, em que os dados indexados são os dados fornecidos pelo usuário na consulta de origem do Cortex Search, além das incorporações de vetores computadas em nome do usuário. Esse é um custo contínuo que é incorrido enquanto o status de atendimento do serviço for retomado. Esse custo é baseado no número de linhas indexadas, no tamanho do total de dados indexados e na dimensionalidade do modelo de incorporação de vetor selecionado. Para obter informações sobre a dimensionalidade de cada modelo de incorporação, consulte os modelos de incorporação do Cortex Search:
Por exemplo, se você tiver um serviço com 10 milhões de linhas, o modelo de incorporação selecionado tiver uma dimensão de 768, cada linha na consulta de origem tiver cerca de 1.000 bytes (incluindo a coluna de pesquisa) e o custo de crédito por GB/mo de dados indexados for 6,3, você deverá pagar o seguinte custo por mês:
(6,3 créditos por GB) * (10.000.000 linhas) * (768 dimensões * 4 bytes por dimensão + 1.000 bytes por linha) / (1.000.000.000 bytes por GB)
= 256,5 créditos mensais
Nota
O tamanho dos dados por linha varia de acordo com o caso de uso e aumenta com a quantidade de dados (número de linhas e colunas) indexados pelo serviço, independentemente da designação de uma coluna como coluna de pesquisa ou de atributo.
Computação de warehouse¶
O custo de computação do warehouse virtual para o Cortex Search Services pode variar de acordo com a taxa de alteração dos dados, o atraso de destino e o tamanho do warehouse. Em geral, o Cortex Search Services com valores de atraso de destino mais baixos e taxas de alteração mais altas nos dados subjacentes incorrerão em custos de computação mais altos relacionados ao warehouse.
Dica
Para obter uma compreensão clara dos custos do warehouse relacionados aos pipelines do Cortex Search, teste o Cortex Search usando warehouses dedicados para que o consumo do warehouse virtual atribuído às atualizações do Cortex Search possa ser isolado. Você pode transferir o Cortex Search Service para um warehouse compartilhado depois de estabelecer uma linha de base de custos.
Armazenamento¶
O Cortex Search Services requer armazenamento para guardar os resultados materializados da consulta de origem, bem como o índice de pesquisa. O tamanho dos dados armazenados pode ser estimado pela materialização da consulta de origem em uma tabela usando a função de tabela CORTEX_SEARCH_DATA_SCAN e, em seguida, examinando o tamanho dessa tabela.
Para obter informações detalhadas sobre como esse armazenamento gera custos, consulte Explicação do custo de armazenamento.
Serviços de nuvem¶
O Cortex Search Services usa a computação de serviços de nuvem para acionar atualizações quando um objeto base subjacente é alterado. Esses custos podem variar de acordo com a taxa de alteração de seus dados, o atraso de destino e o tamanho do warehouse. O custo dos serviços de nuvem para o controle de alterações no Cortex Search tende a ser menor para casos de uso com baixas taxas de alteração. O custo de computação dos serviços de nuvem está sujeito à restrição de que a Snowflake cobra apenas se o custo diário dos serviços de nuvem for superior a 10% do custo diário do warehouse da conta.