Batch Cortex Search¶
Batch Cortex Search é uma função de tabela que permite enviar um lote de consultas a um Cortex Search Service. Ele é destinado a casos de uso offline com requisitos de alta taxa de transferência, como tarefas de resolução de entidade, desduplicação ou clustering.
Os trabalhos enviados a um Cortex Search Service com a função CORTEX_SEARCH_BATCH usam recursos de computação adicionais para oferecer uma taxa de transferência significativamente maior (consultas por segundo) do que as áreas de consulta de pesquisa da API interativa (Python, REST ou SEARCH_PREVIEW).
Sintaxe¶
Use a seguinte sintaxe para consultar um Cortex Search Service no modo de lote usando a função de tabela CORTEX_SEARCH_BATCH:
Parâmetros¶
A função CORTEX_SEARCH_BATCH oferece suporte aos seguintes parâmetros:
service_name(cadeia de caracteres, obrigatório)Nome totalmente qualificado do Cortex Search Service a ser consultado.
query(cadeia de caracteres, opcional)Coluna contendo a cadeia de caracteres de consulta para a pesquisa do serviço.
multi_index_query(variante, opcional)Um objeto que especifica uma ou mais entradas de consulta de vetor ou palavra-chave para pesquisar no índice de serviço. Consulte multi_index_query para obter detalhes sobre como construir este parâmetro.
Nota
Por motivos de desempenho, o
multi_index_queryoferece suporte a no máximo uma entrada de índice vetorial na matriz de consulta.filter(variante, opcional)Coluna contendo objetos de filtro a serem aplicados aos resultados da pesquisa.
limit(inteiro, opcional)Número máximo de resultados a serem retornados por consulta. Padrão: sem valor. 10
options(variante, opcional)Coluna contendo um objeto VARIANT com configurações opcionais por consulta. As chaves de nível superior compatíveis incluem:
scoring_config(objeto, opcional): mesma estrutura que o parâmetroscoring_configpara consultas interativas do Cortex Search (Python, REST ouSEARCH_PREVIEW). Use-o para personalizar a classificação da consulta em lote dessa linha. Consulte Personalizando a pontuação do Cortex Search.replicas(inteiro, opcional): quantas cópias do índice de pesquisa atendem à consulta em lote dessa linha. Padrão: sem valor. 2. Valores mais altos podem melhorar a taxa de transferência; o custo de atendimento aumenta proporcionalmente à contagem de réplicas.experimental(objeto, opcional): objeto reservado para comportamento de pesquisa experimental ou de versão preliminar. Os campos e a semântica podem mudar sem aviso prévio. Use somente quando a documentação ou o suporte Snowflake orientarem você a definir chaves específicas.
Nota
Pelo menos um dentre query, multi_index_query ou filter deve ser especificado.
Notas de uso¶
A taxa de transferência da função de pesquisa em lote pode variar dependendo da quantidade de dados indexados no Cortex Search Service consultado e da complexidade das consultas de pesquisa. Execute a função em um pequeno número de consultas para medir a taxa de transferência da sua carga de trabalho específica. Em geral, as consultas em serviços maiores com mais condições de filtro têm uma taxa de transferência menor.
A taxa de transferência da função de pesquisa em lote, o número de consultas de pesquisa processadas por segundo, não é influenciada pelo tamanho do warehouse usado para a consulta.
Como a pesquisa em lote ativa recursos dedicados para processar cada trabalho, ela incorre em latência de inicialização adicional. Se você precisa executar menos de 2.000 consultas, normalmente obtém resultados mais rápidos usando a Cortex Search API interativa (Python ou API REST) em vez da pesquisa em lote.
Diferente da Cortex Search API interativa, a função de pesquisa em lote pode consultar serviços que estão suspensos.
Um único Cortex Search Service pode ser consultado no modo interativo e em lote simultaneamente sem qualquer degradação no desempenho ou na taxa de transferência da consulta interativa. Recursos de computação separados são usados para processar consultas interativas e em lote.
Considerações sobre custo¶
A pesquisa em lote tem três componentes de custo:
- Custo de processamento
Uma cobrança baseada no tamanho dos dados do índice de pesquisa e na duração do trabalho de pesquisa em lote, excluindo o tempo de inicialização. Também reflete o valor
replicasemoptions(padrão 2); consulte a opçãoreplicasacima.- Custo de incorporação de consulta
Uma cobrança pelo número de tokens incorporados como resultado das consultas de entrada. Ao contrário do Cortex Search interativo, a incorporação de consulta não é gratuita para pesquisa em lote.
- Custo do warehouse virtual
Uma cobrança pela computação do warehouse virtual usada para executar o trabalho em lote.
Para rastreamento de uso, consulte a visualização do uso da conta CORTEX_SEARCH_BATCH_QUERY_USAGE_HISTORY. Para obter mais informações sobre os custos do Cortex Search, consulte Considerações sobre custo.
Disponibilidade regional¶
A pesquisa em lote está disponível em todas as regiões onde o Cortex Search está disponível. Consulte Disponibilidade regional para conferir a lista completa das regiões compatíveis.
Exemplo de uso¶
Neste exemplo, combine os produtos em um formulário de pedido enviado pelo usuário com um catálogo de produtos «ouro». A chamada CORTEX_SEARCH_BATCH usa options para que as incorporações sejam computadas sem o prefixo de consulta de pesquisa padrão; consulte Desabilitando o prefixo de consulta para incorporações de vetores. Use essa configuração somente quando você tiver avaliado o impacto na qualidade do resultado.
O exemplo a seguir usa multi_index_query para enviar incorporações pré-computadas como entrada de consulta em vez de texto bruto. Aqui, a tabela de origem my_db.my_schema.product_embeddings contém uma coluna embedding com vetores pré-computados, e o Cortex Search Service my_db.my_schema.golden_product_service foi criado com uma configuração «traga seu próprio vetor» (Bring-Your-Own-Vector, BYOV). Para obter detalhes sobre a construção de multi_index_query, consulte multi_index_query.