Skip to content

Latest commit

 

History

History
168 lines (103 loc) · 13.5 KB

File metadata and controls

168 lines (103 loc) · 13.5 KB

Construindo Aplicações de Busca

Introdução à IA Generativa e Modelos de Linguagem Grandes

Clique na imagem acima para assistir ao vídeo desta lição

Os LLMs vão além de chatbots e geração de texto. Também é possível construir aplicações de busca utilizando Embeddings. Embeddings são representações numéricas de dados, também conhecidas como vetores, e podem ser usadas para busca semântica de informações.

Nesta lição, você vai construir uma aplicação de busca para nossa startup educacional. Nossa startup é uma organização sem fins lucrativos que oferece educação gratuita para estudantes em países em desenvolvimento. A startup possui um grande número de vídeos no YouTube que os estudantes podem usar para aprender sobre IA. Nossa startup quer criar uma aplicação de busca que permita aos estudantes encontrar um vídeo no YouTube digitando uma pergunta.

Por exemplo, um estudante pode digitar "O que são Jupyter Notebooks?" ou "O que é Azure ML?" e a aplicação de busca retornará uma lista de vídeos do YouTube relevantes para a pergunta. Melhor ainda, a aplicação de busca retornará um link para o momento exato no vídeo onde a resposta à pergunta está localizada.

Introdução

Nesta lição, vamos abordar:

  • Busca semântica vs busca por palavras-chave.
  • O que são Embeddings de Texto.
  • Criando um Índice de Embeddings de Texto.
  • Buscando em um Índice de Embeddings de Texto.

Objetivos de Aprendizado

Após concluir esta lição, você será capaz de:

  • Diferenciar busca semântica de busca por palavras-chave.
  • Explicar o que são Embeddings de Texto.
  • Criar uma aplicação usando Embeddings para buscar informações.

Por que construir uma aplicação de busca?

Criar uma aplicação de busca ajudará você a entender como usar Embeddings para buscar informações. Você também aprenderá a construir uma aplicação de busca que pode ser usada por estudantes para encontrar informações rapidamente.

A lição inclui um Índice de Embeddings das transcrições do YouTube do canal AI Show da Microsoft. O AI Show é um canal no YouTube que ensina sobre IA e aprendizado de máquina. O Índice de Embeddings contém os Embeddings de cada transcrição do YouTube até outubro de 2023. Você usará o Índice de Embeddings para construir uma aplicação de busca para nossa startup. A aplicação de busca retorna um link para o momento exato no vídeo onde a resposta à pergunta está localizada. Esta é uma ótima maneira para os estudantes encontrarem rapidamente as informações de que precisam.

A seguir, um exemplo de uma consulta semântica para a pergunta "é possível usar rstudio com azure ml?". Confira a URL do YouTube, você verá que ela contém um timestamp que leva ao momento exato no vídeo onde a resposta à pergunta está localizada.

Consulta semântica para a pergunta "é possível usar rstudio com Azure ML"

O que é busca semântica?

Agora você pode estar se perguntando, o que é busca semântica? Busca semântica é uma técnica de busca que utiliza os significados das palavras em uma consulta para retornar resultados relevantes.

Aqui está um exemplo de busca semântica. Digamos que você esteja procurando comprar um carro, você pode buscar por "meu carro dos sonhos". A busca semântica entende que você não está sonhando com um carro, mas sim procurando comprar seu carro ideal. A busca semântica compreende sua intenção e retorna resultados relevantes. A alternativa seria a busca por palavras-chave, que buscaria literalmente por sonhos sobre carros e frequentemente retornaria resultados irrelevantes.

O que são Embeddings de Texto?

Embeddings de texto são uma técnica de representação de texto usada em processamento de linguagem natural. Embeddings de texto são representações numéricas semânticas de texto. Embeddings são usados para representar dados de uma forma que seja fácil para uma máquina entender. Existem muitos modelos para construir embeddings de texto, nesta lição, vamos focar em gerar embeddings usando o OpenAI Embedding Model.

Aqui está um exemplo, imagine que o seguinte texto está em uma transcrição de um dos episódios do canal AI Show no YouTube:

Today we are going to learn about Azure Machine Learning.

Passaríamos o texto para a API de Embedding da OpenAI e ela retornaria o seguinte embedding composto por 1536 números, também conhecido como vetor. Cada número no vetor representa um aspecto diferente do texto. Para simplificar, aqui estão os primeiros 10 números do vetor.

[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]

Como o Índice de Embeddings é criado?

O Índice de Embeddings para esta lição foi criado com uma série de scripts em Python. Você encontrará os scripts junto com as instruções no README na pasta 'scripts' desta lição. Você não precisa executar esses scripts para concluir esta lição, pois o Índice de Embeddings já está fornecido.

Os scripts realizam as seguintes operações:

  1. A transcrição de cada vídeo do YouTube na playlist do AI Show é baixada.
  2. Usando Funções da OpenAI, tenta-se extrair o nome do palestrante dos primeiros 3 minutos da transcrição do YouTube. O nome do palestrante de cada vídeo é armazenado no Índice de Embeddings chamado embedding_index_3m.json.
  3. O texto da transcrição é então dividido em segmentos de texto de 3 minutos. O segmento inclui cerca de 20 palavras sobrepostas do próximo segmento para garantir que o Embedding do segmento não seja cortado e para fornecer melhor contexto de busca.
  4. Cada segmento de texto é então passado para a API de Chat da OpenAI para resumir o texto em 60 palavras. O resumo também é armazenado no Índice de Embeddings embedding_index_3m.json.
  5. Finalmente, o texto do segmento é passado para a API de Embedding da OpenAI. A API de Embedding retorna um vetor de 1536 números que representam o significado semântico do segmento. O segmento junto com o vetor de Embedding da OpenAI é armazenado em um Índice de Embeddings embedding_index_3m.json.

Bancos de Dados de Vetores

Para simplificar a lição, o Índice de Embeddings é armazenado em um arquivo JSON chamado embedding_index_3m.json e carregado em um DataFrame do Pandas. No entanto, em produção, o Índice de Embeddings seria armazenado em um banco de dados de vetores como Azure Cognitive Search, Redis, Pinecone, Weaviate, entre outros.

Entendendo a similaridade cosseno

Aprendemos sobre embeddings de texto, o próximo passo é aprender como usar embeddings de texto para buscar informações e, em particular, encontrar os embeddings mais semelhantes a uma consulta usando similaridade cosseno.

O que é similaridade cosseno?

Similaridade cosseno é uma medida de similaridade entre dois vetores, também conhecida como busca de vizinho mais próximo. Para realizar uma busca de similaridade cosseno, você precisa vetorizar o texto da consulta usando a API de Embedding da OpenAI. Em seguida, calcular a similaridade cosseno entre o vetor da consulta e cada vetor no Índice de Embeddings. Lembre-se, o Índice de Embeddings possui um vetor para cada segmento de texto da transcrição do YouTube. Por fim, ordenar os resultados pela similaridade cosseno, e os segmentos de texto com maior similaridade cosseno são os mais semelhantes à consulta.

Do ponto de vista matemático, a similaridade cosseno mede o cosseno do ângulo entre dois vetores projetados em um espaço multidimensional. Essa medida é útil porque, se dois documentos estão distantes em distância euclidiana devido ao tamanho, eles ainda podem ter um ângulo menor entre si e, portanto, maior similaridade cosseno. Para mais informações sobre equações de similaridade cosseno, veja Similaridade cosseno.

Construindo sua primeira aplicação de busca

A seguir, vamos aprender como construir uma aplicação de busca usando Embeddings. A aplicação de busca permitirá que os estudantes busquem por um vídeo digitando uma pergunta. A aplicação de busca retornará uma lista de vídeos relevantes para a pergunta. A aplicação de busca também retornará um link para o momento exato no vídeo onde a resposta à pergunta está localizada.

Esta solução foi construída e testada no Windows 11, macOS e Ubuntu 22.04 usando Python 3.10 ou superior. Você pode baixar o Python em python.org.

Tarefa - construindo uma aplicação de busca para capacitar estudantes

Apresentamos nossa startup no início desta lição. Agora é hora de capacitar os estudantes a construir uma aplicação de busca para suas avaliações.

Nesta tarefa, você criará os Serviços Azure OpenAI que serão usados para construir a aplicação de busca. Você criará os seguintes Serviços Azure OpenAI. Será necessário uma assinatura do Azure para concluir esta tarefa.

Iniciar o Azure Cloud Shell

  1. Faça login no portal do Azure.
  2. Selecione o ícone do Cloud Shell no canto superior direito do portal do Azure.
  3. Selecione Bash como tipo de ambiente.

Criar um grupo de recursos

Para estas instruções, estamos usando o grupo de recursos chamado "semantic-video-search" no Leste dos EUA. Você pode alterar o nome do grupo de recursos, mas ao mudar a localização dos recursos, verifique a tabela de disponibilidade de modelos.

az group create --name semantic-video-search --location eastus

Criar um recurso de Serviço Azure OpenAI

No Azure Cloud Shell, execute o seguinte comando para criar um recurso de Serviço Azure OpenAI.

az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
    --location eastus --kind OpenAI --sku s0

Obter o endpoint e as chaves para uso nesta aplicação

No Azure Cloud Shell, execute os seguintes comandos para obter o endpoint e as chaves para o recurso de Serviço Azure OpenAI.

az cognitiveservices account show --name semantic-video-openai \
   --resource-group  semantic-video-search | jq -r .properties.endpoint
az cognitiveservices account keys list --name semantic-video-openai \
   --resource-group semantic-video-search | jq -r .key1

Implantar o modelo de Embedding da OpenAI

No Azure Cloud Shell, execute o seguinte comando para implantar o modelo de Embedding da OpenAI.

az cognitiveservices account deployment create \
    --name semantic-video-openai \
    --resource-group  semantic-video-search \
    --deployment-name text-embedding-ada-002 \
    --model-name text-embedding-ada-002 \
    --model-version "2"  \
    --model-format OpenAI \
    --sku-capacity 100 --sku-name "Standard"

Solução

Abra o notebook de solução no GitHub Codespaces e siga as instruções no Jupyter Notebook.

Quando você executar o notebook, será solicitado que insira uma consulta. A caixa de entrada será assim:

Caixa de entrada para o usuário inserir uma consulta

Ótimo Trabalho! Continue Aprendendo

Após concluir esta lição, confira nossa coleção de aprendizado sobre IA Generativa para continuar aprimorando seus conhecimentos sobre IA Generativa!

Vá para a Lição 9, onde veremos como construir aplicações de geração de imagens!


Aviso Legal:
Este documento foi traduzido usando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.