Elastic Search: Crie uma experiência de busca semântica
Visão geral
Introdução ao Elastic Search
Conheça o Elasticsearch nesta visão geral sobre como ingerir e visualizar seus dados com o Elastic Cloud.
À medida que você avança nos seus conhecimentos sobre a Elastic e começa a usar a busca vetorial, lembre-se de que há duas formas de busca vetorial: “densa” (também conhecida como busca vetorial kNN) e “esparsa”, como o Learned Sparse Encoder da Elastic (ELSER).
A Elastic oferece uma variedade de técnicas de busca, a começar pelo BM25, o padrão do setor para busca textual. Ela fornece correspondência precisa para buscas específicas, correspondendo palavras-chave exatas, e melhora com o ajuste.
A Elastic também oferece o modelo Learned Sparse Encoder pronto para uso para busca semântica. Esse modelo tem desempenho superior em uma variedade de conjuntos de dados, como dados financeiros, registros meteorológicos e pares de perguntas e respostas, entre outros. O modelo foi construído para fornecer grande relevância em todos os domínios, sem a necessidade de ajustes adicionais.
Confira esta demonstração interativa para ver como os resultados da busca são mais relevantes quando você testa o modelo Learned Sparse Encoder da Elastic em relação ao algoritmo textual BM25 da Elastic.
Além disso, a Elastic também oferece suporte para vetores densos para implementar a busca por similaridade em dados não estruturados além de texto, como vídeos, imagens e áudio.
A vantagem da busca semântica e da busca vetorial é que essas tecnologias permitem que os clientes usem uma linguagem intuitiva em suas consultas. Por exemplo, se você quiser buscar diretrizes de local de trabalho sobre uma segunda renda, poderá fazer uma busca por “fazer um bico”, que não é um termo que você provavelmente verá em um documento formal de RH.
Neste guia, demonstraremos como criar uma conta do Elastic Cloud, ingerir dados com o rastreador da web da Elastic e implementar a busca semântica com apenas alguns cliques.
Integre seus dados
Crie uma conta do Elastic Cloud
Comece com uma avaliação de 14 dias. Depois de ir para cloud.elastic.co e criar uma conta, siga as etapas abaixo para saber como executar sua primeira solução Elastic Stack em qualquer uma das mais de 50 regiões compatíveis globalmente.
Se você clicar em Edit settings (Editar configurações), poderá escolher um provedor de serviços em nuvem, incluindo AWS, Microsoft Azure ou Google Cloud. Depois de selecionar o provedor de serviços em nuvem, você poderá selecionar a região relevante. Em seguida, poderá escolher dentre alguns diferentes perfis de hardware para personalizar melhor a implantação de acordo com o que precisa. Além disso, a última versão do Elastic terá sido selecionada previamente para você.
Quando a sua implantação estiver sendo criada, você receberá um nome de usuário e uma senha. Lembre-se de copiar ou baixar esses dados, pois eles serão necessários quando você instalar suas integrações.
Faça a ingestão dos dados com o rastreador da web da Elastic
Agora que você criou sua implantação, é hora de colocar dados no Elastic. Vamos fazer isso usando o rastreador da web da Elastic. Primeiro, selecione o bloco Build a semantic search experience (Criar uma experiência de busca semântica).
A seguir, para configurar a busca semântica, você verá uma página onde poderá começar com uma destas opções:
- Elastic Learned Sparse Encoder
- Busca vetorial
- Enriquecimento de PLN
Todas essas funcionalidades e muitas outras fazem parte do Elasticsearch Relevance Engine (ESRE).
Para os fins deste guia, vamos mostrar como configurar a busca semântica com o Elastic Learned Sparse Encoder e a busca vetorial.
OBSERVAÇÃO: se você está começando a trabalhar com busca semântica e quer fazer buscas de texto, sugerimos primeiro a leitura do guia do Elastic Learned Sparse Encoder. O guia de busca vetorial kNN pode ser mais adequado para usuários que atendam a alguns destes critérios:
- Têm acesso a um conjunto de habilidades de ciência de dados
- Determinaram que o modelo de busca semântica Elastic Learned Sparse Encoder integrado não cobrirá seus casos de uso
- Têm experiência em comparar modelos de embedding e potencialmente ajustar modelos de ML
- Estão cientes de que a busca de kNN rápida pode exigir recursos de RAM significativos
Se você está com tudo pronto para começar, selecione seu método preferido para criar uma aplicação baseada em busca com IA.
Para ambos os métodos, você começará selecionando Create an index (Criar um índice). Aqui você pode selecionar o web crawler (rastreador da web) para começar a fazer a ingestão dos seus dados.
Para configurar o rastreador da web, confira este tour guiado ou siga as instruções abaixo:
Agora crie um índice. Para os fins deste guia, estamos fazendo a ingestão de todos os blogs do site elastic.co.
Depois de dar um nome ao seu índice, selecione Create index (Criar índice). Em seguida, valide o domínio (Validate Domain) e depois selecione Add domain (Adicionar domínio).
Depois de adicionar o domínio no canto inferior direito, selecione Edit (Editar) para poder adicionar um subdomínio, se necessário.
Em seguida, selecione Crawl rules (Regras de rastreamento) e adicione suas regras de rastreamento conforme mostrado abaixo.*
Além disso, quando você seleciona seu campo posteriormente, alguns campos excedem a contagem de 512 tokens, como body_content. Você deve aproveitar as regras de extração para filtrar apenas as partes relevantes dos blogs.
Ao selecionar Extraction rules (Regras de extração), clique em Add content extraction rule (Adicionar regra de extração de conteúdo).
Em seguida, em Rule description (Descrição da regra), atribua um nome que ajude outras pessoas a entender quais dados a regra extrairá. Para os fins deste guia, vamos chamá-la de “main” (principal).
Agora selecione Apply to all URLs (Aplicar a todos os URLs) e depois Add content fields (Adicionar campos de conteúdo). Um menu aparecerá. Preencha e selecione os critérios abaixo quando o menu aparecer.
- Document field (Campo do documento):
- Field name (Nome do campo): main
- Source (Origem):
- Extract content from (Extrair conteúdo de): HTML element (Elemento HTML)
- CSS selector or XPath expression (Seletor de CSS ou expressão XPath): main
- Content (Conteúdo)
- Use content from (Usar conteúdo de): Extracted Value (Valor extraído)
- Store extracted content as (Armazenar o conteúdo extraído como): A string (Uma string)
Depois de preencher esses critérios, clique em Save (Salvar) e depois em Save rule (Salvar regra).
Como trabalhar com o Elasticsearch e o ESRE
Faça a ingestão e busque em seus dados usando o Elastic Learned Sparse Encoder
Se você leu os critérios recomendados acima para começar a trabalhar com a busca vetorial e esse é o seu método preferido, navegue até Search your data using kNN vector search (Fazer buscas em seus dados usando a busca vetorial kNN) à esquerda e siga as instruções.
Caso contrário, se preferir usar o Elastic Learned Sparse Encoder, o modelo de busca semântica pronto para uso da Elastic, confira as instruções abaixo.
Para fazer isso, selecione Pipelines e Unlock your custom pipelines (Desbloquear seus pipelines customizados) selecionando Copy and customize (Copiar e customizar) na parte superior. Em seguida, em Machine Learning Inference Pipelines (Pipelines de inferência com machine learning), selecione Deploy (Implantar) para baixar o modelo e instalá-lo na sua implantação do Elasticsearch.
Após a implantação, selecione Start single-threaded (Iniciar com thread único) e depois + Add inference Pipeline (+ Adicionar pipeline de inferência). Em seguida, faça o seguinte:
- Selecione um pipeline novo ou existente
- Dê um nome a ele
- Por fim, no menu suspenso Select trained ML Model (Selecione o modelo de ML treinado), selecione ELSER Text Expansion (Expansão de texto com ELSER) e clique em Continue (Continuar).
Agora, você precisará selecionar os campos onde aplicará a expansão de texto com ELSER. Selecione “title” (título) e “main” (principal) como campos de origem e depois Add (Adicionar).
Clique em Continue (Continuar).
Pule a etapa Test your pipeline results (Teste os resultados do pipeline) clicando em Continue (Continuar) e depois em Create pipeline (Criar pipeline).
Agora que você criou seu pipeline, selecione Crawl (Rastrear) no canto superior direito e depois Crawl all domains on this index (Rastrear todos os domínios deste índice).
Agora é hora de buscar as informações que você está procurando. Existem duas maneiras recomendadas de fazer isso:
- Usar as ferramentas de desenvolvimento
- Aproveitar a funcionalidade aplicação de busca como um endpoint para sua aplicação
Quando usar cada um:
- Se você é um desenvolvedor que está implementando a busca (ou seja, para sua aplicação web), você deve usar as ferramentas de desenvolvimento para testar e refinar os resultados da busca dos seus dados indexados.
- Se quiser criar um endpoint de busca no qual você possa enviar solicitações de busca da sua própria aplicação e retornar resultados, você deverá usar a funcionalidade aplicação de busca.
Assista a estes dois breves vídeos para ver como aproveitar as ferramentas de desenvolvimento e a funcionalidade aplicação de busca. Você também pode aprender explorando este tour guiado.
Faça a ingestão e busque em seus dados usando a busca vetorial kNN
Com a Elastic, você pode usar a busca vetorial kNN em todo o seu ambiente. Conforme falamos anteriormente, a busca vetorial kNN possibilita fazer buscas em outros dados além de texto, como imagens ou áudio.
Depois de fazer a ingestão dos dados com o rastreador da web, você precisará carregar um modelo de embedding no Elasticsearch para gerar vetores para seus dados. Assista ao vídeo abaixo para saber como.
Para fazer isso, selecione Pipelines e Unlock your custom pipelines (Desbloquear seus pipelines customizados) selecionando Copy and customize (Copiar e customizar) na parte superior. Em seguida, em Machine Learning Inference Pipelines (Pipelines de inferência com machine learning), selecione Deploy (Implantar) para baixar o modelo e instalá-lo na sua implantação do Elasticsearch.
Após a implantação, selecione Start single-threaded (Iniciar com thread único) e depois + Add inference Pipeline (+ Adicionar pipeline de inferência). Em seguida, faça o seguinte:
- Selecione um pipeline novo ou existente
- Dê um nome a ele
- Por fim, no menu suspenso Select trained ML Model (Selecione o modelo de ML treinado), selecione Dense Vector Text Embedding (Embedding de texto vetorial denso) e clique em Continue (Continuar).
Agora, você precisará selecionar os campos onde vai aplicar a extensão vetorial densa. Como você está usando o rastreador da web, terá campos que poderá selecionar por padrão. Para os fins deste guia, vamos selecionar title (título) para começar para um novo campo e depois selecionar Continue (Continuar).
Em seguida, selecione Continue (Continuar) e depois Create pipeline (Criar pipeline).
Agora você terá de atualizar o mapeamento para o campo dense_vector. (Observação: com o Elasticsearch versão 8.8+, essa etapa deve ser automática.)
- No menu de navegação, clique em Dev Tools (Ferramentas de desenvolvimento). Talvez seja necessário clicar em Dismiss (Ignorar) no menu se esta for a primeira vez que você estiver abrindo as ferramentas de desenvolvimento.
- Em Dev Tools (Ferramentas de desenvolvimento), na guia Console, atualize o mapeamento para nosso campo de destino do vetor kNN com o código a seguir. Basta colá-lo na caixa de código e clicar na pequena seta à direita da linha 1.
POST search-blogs/_mapping
{
"properties": {
"title-vector": {
"type": "dense_vector",
"dims": 768,
"index": true,
"similarity": "dot_product"
}
}
}
Substitua “search-blogs” pelo nome que você deu ao seu índice. Além disso, “title-vector” é o nome do campo onde os vetores serão armazenados.
Agora que você criou seu pipeline, selecione Crawl (Rastrear) no canto superior direito e depois Crawl all domains on this index (Rastrear todos os domínios deste índice).
Por fim, é hora de executar uma busca vetorial kNN para encontrar as informações de que você precisa. Para fazer isso, você deve usar as ferramentas de desenvolvimento. Assista ao vídeo abaixo para saber como.
Próximas etapas
Agradecemos o tempo dedicado à configuração da busca semântica para seus dados com o Elastic Cloud. Ao iniciar sua jornada com o Elastic, entenda alguns componentes operacionais, de segurança e de dados que você deve gerenciar como usuário ao fazer a implantação no seu ambiente.