Partilhar via


Introdução ao Serverless AI Chat com RAG usando LlamaIndex

Simplifique o desenvolvimento de aplicativos de IA com o RAG usando seus próprios dados gerenciados pelas tecnologias LlamaIndex, Azure Functions e Serverless. Essas ferramentas gerenciam a infraestrutura e o dimensionamento automaticamente, permitindo que você se concentre na funcionalidade do chatbot. O LlamaIndex lida com o pipeline de dados desde a ingestão até a resposta transmitida.

Captura de tela do aplicativo de bate-papo no navegador mostrando a entrada do bate-papo e a resposta.

Descrição geral da arquitetura

O fluxo de aplicação inclui:

  • Usando a interface de chat para inserir um prompt.
  • Enviar o prompt do usuário para a API Serverless por meio de chamadas HTTP.
  • Receber o prompt do usuário e, em seguida, usar a estrutura LlamaIndex para processar e transmitir a resposta. A API sem servidor usa um mecanismo para criar uma conexão com o modelo de linguagem grande (LLM) do Azure OpenAI e o índice vetorial do LlamaIndex.

Uma arquitetura simples do aplicativo de bate-papo é mostrada no diagrama a seguir:

Diagrama da arquitetura para o aplicativo de bate-papo LlamaIndex RAG.

Este exemplo usa LlamaIndex para gerar incorporações e armazenar em seu próprio repositório vetorial. O LlamaIndex também fornece integração com outros repositórios de vetores, incluindo o Azure AI Search. Essa integração não é demonstrada neste exemplo.

Onde está o Azure nesta arquitetura?

A arquitetura do aplicativo depende dos seguintes serviços e componentes:

  • O Azure OpenAI representa o provedor de IA para o qual enviamos as consultas do usuário.
  • LlamaIndex é a estrutura que nos ajuda a ingerir, transformar e vetorizar o nosso conteúdo (ficheiro PDF) e criar um índice de pesquisa a partir dos nossos dados.
  • Os Aplicativos de Contêiner do Azure são o ambiente de contêiner onde o aplicativo está hospedado.
  • O Azure Managed Identity ajuda-nos a garantir a melhor segurança da sua classe e elimina os requisitos para que você, como desenvolvedor, lide com credenciais e chaves de API.

O LlamaIndex gere os dados desde a ingestão até à recuperação

Para implementar um sistema RAG (Retrieval-Augmented Generation) usando o LlamaIndex, as principais etapas são identificadas abaixo com a funcionalidade LlamaIndex especificada:

Processo Description LlamaIndex
Ingestion de Dados Importe dados de fontes como PDFs, APIs ou bancos de dados. SimpleDirectoryReader
Fragmentar documentos Divida documentos grandes em pedaços menores. Divisor de Sentenças
Criação de índice vetorial Crie um índice vetorial para pesquisas de semelhança eficientes. VectorStoreIndex
Recuperação recursiva (opcional) do índice Gerencie conjuntos de dados complexos com recuperação hierárquica.
Converter em mecanismo de consulta Converta o índice vetorial em um mecanismo de consulta. asQueryEngine
Configuração avançada de consultas (opcional) Use agentes para um sistema multiagente.
Implementar o pipeline RAG Defina uma função objetiva que atenda às consultas do usuário e recupere partes relevantes do documento.
Executar recuperação Processar consultas e reclassificar documentos. RetrieverQueryEngine, CohereRerank

Pré-requisitos

Um ambiente de contêiner de desenvolvimento está disponível com todas as dependências necessárias para concluir este artigo. Você pode executar o contêiner de desenvolvimento no GitHub Codespaces (em um navegador) ou localmente usando o Visual Studio Code.

Para usar este artigo, você precisa dos seguintes pré-requisitos:

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Permissões da conta do Azure - Sua Conta do Azure deve ter permissões Microsoft.Authorization/roleAssignments/write, como Administrador de Acesso de Usuário ou Proprietário.
  • Acesso concedido ao Azure OpenAI na subscrição pretendida do Azure. Atualmente, o acesso a este serviço é concedido apenas por pedido. Você pode solicitar acesso ao Azure OpenAI preenchendo o formulário em https://aka.ms/oai/access. Abra um problema neste repositório para entrar em contato conosco se tiver um problema.
  • Conta do GitHub

Ambiente de desenvolvimento aberto

Comece agora com um ambiente de desenvolvimento que tenha todas as dependências instaladas para concluir este artigo.

O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code for the Web como interface do usuário. Para o ambiente de desenvolvimento mais simples, use o GitHub Codespaces para que você tenha as ferramentas de desenvolvedor corretas e as dependências pré-instaladas para concluir este artigo.

Importante

Todas as contas do GitHub podem usar o Codespaces por até 60 horas gratuitas por mês com 2 instâncias principais. Para obter mais informações, consulte GitHub Codespaces mensalmente incluído armazenamento e horas principais.

  1. Abra no Codespace.

    Abrir no GitHub Codespaces

  2. Aguarde até que o espaço de código inicie. Este processo de arranque pode demorar alguns minutos.

  3. No terminal na parte inferior da tela, entre no Azure com a CLI do Azure Developer.

    azd auth login
    

    Conclua o processo de autenticação.

  4. As tarefas restantes neste artigo ocorrem no contexto desse contêiner de desenvolvimento.

Implantar e executar

O repositório de exemplo contém todos os arquivos de código e configuração necessários para implantar o aplicativo de chat sem servidor no Azure. As etapas a seguir orientam você pelo processo de implantação do exemplo no Azure.

Implantar o aplicativo de chat no Azure

Importante

Os recursos do Azure criados nesta seção incorrem em custos imediatos, principalmente do recurso Azure AI Search. Esses recursos podem acumular custos mesmo se você interromper o comando antes que ele seja totalmente executado.

  1. Para provisionar os recursos do Azure e implantar o código-fonte, execute o seguinte comando da CLI do Desenvolvedor do Azure:

    azd up
    
  2. Use a tabela a seguir para responder aos prompts:

    Pedido Resposta
    Nome do ambiente Mantenha-o curto e minúsculo. Adicione o seu nome ou alias. Por exemplo, john-chat. Ele é usado como parte do nome do grupo de recursos.
    Subscrição Selecione a assinatura na qual criar os recursos.
    Localização (para hospedagem) Selecione um local perto de você na lista.
    Localização para o modelo OpenAI Selecione um local perto de você na lista. Se o mesmo local estiver disponível como seu primeiro local, selecione isso.
  3. Aguarde até que o aplicativo seja implantado. Pode levar de 5 a 10 minutos para que a implantação seja concluída.

  4. Depois que o aplicativo for implantado com êxito, você verá duas URLs exibidas no terminal.

  5. Selecione esse URL rotulado Deploying service webapp para abrir o aplicativo de bate-papo em um navegador.

    Captura de tela da saída do comando deployment mostrando a URL do aplicativo Web.

Use o aplicativo de bate-papo para obter respostas de arquivos PDF

O aplicativo de bate-papo é pré-carregado com informações sobre os padrões físicos para correio postal doméstico de um catálogo de arquivos PDF. Você pode usar o aplicativo de bate-papo para fazer perguntas sobre a carta de correspondência e pacotes. As etapas a seguir orientam você pelo processo de uso do aplicativo de bate-papo.

  1. No navegador, selecione ou digite Quanto custa enviar um pacote grande para a França?.

  2. LlamaIndex deriva a resposta usa o arquivo PDF e transmite a resposta.

    Captura de tela do aplicativo de bate-papo no navegador mostrando a entrada do bate-papo e a resposta.

    A resposta vem do Azure OpenAI com influência dos dados PDF ingeridos no repositório vetorial LlamaIndex.

Clean up resources (Limpar recursos)

Para limpar recursos, há duas coisas a serem abordadas:

  • Recursos do Azure, você pode limpá-los com a CLI do Azure Developer, azd.
  • Seu ambiente de desenvolvedor, independentemente de você ter usado o GitHub Codespaces ou o DevContainers por meio do Visual Studio Code.

Limpar recursos do Azure

Os recursos do Azure criados neste artigo são cobrados na sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais cobranças.

Execute o seguinte comando da CLI do Desenvolvedor do Azure para excluir os recursos do Azure e remover o código-fonte:

azd down --purge

Limpe os ambientes dos desenvolvedores

Excluir o ambiente do GitHub Codespaces garante que você possa maximizar a quantidade de direitos de horas gratuitas por núcleo que você obtém para sua conta.

Importante

Para obter mais informações sobre os direitos da sua conta do GitHub, consulte Codespaces do GitHub mensalmente incluídos armazenamento e horas principais.

  1. Entre no painel do GitHub Codespaces (https://github.com/codespaces).

  2. Localize seus Codespaces atualmente em execução provenientes do Azure-Samples/llama-index-javascript repositório GitHub.

    Captura de tela de todos os Codespaces em execução, incluindo seu status e modelos.

  3. Abra o menu de contexto, , para o espaço de código e, em seguida, ...selecione Excluir.

Obter ajuda

Este repositório de exemplo oferece informações de solução de problemas.

Se o problema não for resolvido, registre-o nos Problemas do repositório.

Próximo passo