1. Antes de começar
Confira algumas observações antes de continuar este codelab.
Pré-requisitos
- Noções básicas sobre LLMs
- Conhecimento básico de sistemas RAG
O que você vai aprender
- Como criar um mecanismo de pesquisa com qualidade do Google que possa responder às suas perguntas com base nos dados que você envia
- Como criar um repositório de dados da Vertex AI
- Como criar agentes da Vertex AI
- Como usar o Cloud Run para implantar o aplicativo
O que é necessário
- Uma conta do Google Cloud
- um projeto do Google Cloud;
- Um ambiente de desenvolvimento integrado com terminal
Introdução
A Pesquisa Google é uma ferramenta eficiente que usa um índice enorme de páginas da Web e outros conteúdos para fornecer resultados relevantes às consultas dos usuários. Isso é possível graças a uma técnica chamada geração aumentada de recuperação (RAG), que é fundamental na IA moderna.
A RAG funciona primeiro recuperando passagens relevantes de um corpus de documentos. Isso é feito usando vários métodos, como correspondência de palavras-chave, similaridade semântica e machine learning. Depois que os trechos relevantes são recuperados, eles são usados para gerar um resumo ou uma resposta à consulta do usuário.
O principal benefício da RAG é que ela permite que os modelos de linguagem evitem alucinações. Alucinação é um termo usado para descrever a geração de texto que não é respaldada pelas evidências no corpus do documento. Isso pode acontecer quando os modelos de linguagem não conseguem distinguir entre informações relevantes e irrelevantes.
A RAG ajuda a evitar alucinações, garantindo que o texto gerado seja sempre baseado em evidências do corpus de documentos. Isso a torna uma fonte de informações mais confiável.
A RAG é uma técnica poderosa que está sendo usada em vários aplicativos, incluindo mecanismos de pesquisa, chatbots e sistemas de resposta a perguntas. É provável que ele tenha um papel cada vez mais importante na IA nos próximos anos.
Confira alguns exemplos de como a RAG está sendo usada na prática:
- Muitos sistemas de pesquisa usam a RAG para gerar resultados relevantes para a consulta do usuário.
- Os chatbots usam a RAG para gerar respostas informativas e interessantes às perguntas dos usuários.
- Os sistemas de respostas a perguntas usam a RAG para gerar respostas precisas e abrangentes às perguntas dos usuários.
A RAG é uma técnica versátil que pode ser usada para gerar texto em vários domínios e aplicativos. É uma ferramenta poderosa que ajuda a tornar a IA mais inteligente e informativa.
Neste codelab, vamos criar um sistema de RAG que pode ajudar a responder suas perguntas com o corpus fornecido e enviado por você. A plataforma RAG pronta para uso chamada Vertex AI para Pesquisa/Agent Builder ajuda a acelerar a criação de sistemas RAG, evitando o trabalho manual de coletar documentos, analisar, dividir em partes, gerar embeddings, expansão de consultas, recuperação e classificação de candidatos. Embora o sistema RAG pronto para uso ajude você a começar rapidamente, o Google Cloud também oferece APIs discretas para cada processo. Assim, é possível criar seus próprios sistemas RAG personalizados, o que ajuda a ajustar esses sistemas para atender aos requisitos da sua empresa.
O que você vai criar
Ao final deste codelab, você terá um sistema RAG funcional implantado que pode ajudar a responder suas perguntas com informações factuais, fundamentadas e citadas com as referências corretas.
Você também vai entender melhor como usar as APIs do Vertex AI para Pesquisa para criar essa arquitetura de RAG no Google Cloud. Além disso, você também vai aprender a implantar esse aplicativo de arquitetura RAG (com front-end e back-end) no Cloud Run, uma plataforma sem servidor para implantar aplicativos como contêineres no Google Cloud.

Como a solicitação funciona
- Fazer upload dos seus dados: os usuários podem fazer upload do próprio corpus de dados, ou seja, um arquivo PDF como entrada.
- Fazer consultas na barra de pesquisa: os usuários podem fazer perguntas na barra de pesquisa com base no corpus de dados enviados.
- Recuperar respostas: os usuários podem recuperar os resultados/candidatos da pesquisa e verificar a veracidade/fundamentação da resposta recuperada com base na relevância da consulta.
2. Configuração do ambiente
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Verifique se o faturamento está ativado para o projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
- Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud. Para acessar, clique em "Ativar Cloud Shell" na parte de cima do console do Google Cloud.

- Depois de se conectar ao Cloud Shell, verifique se sua conta já está autenticada e se o projeto está configurado com o ID do seu projeto usando o seguinte comando:
gcloud auth list
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
- Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>
- Verifique se as seguintes APIs estão ativadas:
- Cloud Run
- Vertex AI
- Cloud Storage
A alternativa ao uso do comando gcloud é acessar o console usando este link. Consulte a documentação para ver o uso e os comandos gcloud.
3. Etapa 1: criar um bucket do GCP
- Acesse o console e, na barra de pesquisa, digite "Cloud Storage".
- Selecione o Cloud Storage nos resultados sugeridos.

- Clique em "Criar bucket".

- Dê um nome globalmente exclusivo ao bucket
- Clique em "Continuar"
- Em "Tipo de local", selecione "Multirregional".
- No menu suspenso, selecione a opção
us (multiple regions in United States).

- Clique em "Criar bucket".

- Depois que o bucket for criado, faça upload do
alphabet-metadata.jsondo repositório.
4. Etapa 2: criar um Datastore da Vertex AI
- Na barra de pesquisa da página do console, digite "Vertex AI Agent Builder".
- Selecione o primeiro produto, "Agent Builder".

- Na página do Agent Builder, clique em "Repositórios de dados", conforme mostrado na barra de navegação à esquerda.

- Clique em "Criar repositório de dados".

- Selecione o Cloud Storage como seu repositório de dados
- Clique em "Selecionar" abaixo do ícone do Cloud Storage.

- Na guia abaixo da opção "Pasta", clique no botão "Procurar".
- Selecione o bucket criado na etapa 1.
- Nas opções abaixo, selecione "Documentos não estruturados com links (JSONL com metadados)".
- Clique em Continuar

- Na página "Configuração", selecione "global" como o local do repositório de dados.
- Dê um nome identificável ao repositório de dados
- Clique em "Criar".

Brownie:
- Logo acima do botão "Criar", você encontra a opção de processamento de documentos.
- Você pode usar diferentes analisadores, como digital, OCR ou de layout.
- Você também pode ativar o chunking avançado e fornecer seus próprios limites de tamanho de bloco personalizados.

5. Etapa 3: criar um agente
- Depois que o repositório de dados for criado, clique no app na barra de navegação à esquerda e escolha "Apps".
- Clique no botão "Criar app".
- Selecione o tipo de app como "Pesquisa". Também é possível criar agentes, bots de conversa, recomendações etc.

- Verifique se a opção "Genérico" está selecionada em "Conteúdo". Você também pode selecionar "Mídia" ou "Recomendações" com base no repositório de dados e no tipo de dados e sistemas que você quer criar.
- Ative a edição Enterprise e os recursos avançados de LLM.
- Informe o nome do aplicativo
- Informe o nome da sua empresa

- Selecione a região como "global".
- Clique em "Continuar"

- Na próxima tela, selecione o repositório de dados criado na etapa 2.
- Clique em "Criar".

6. Etapa 4: criar um contêiner Docker para o aplicativo
- Abra o terminal no console do Google Cloud
- Clone o repositório <sample_repository_link> usando o comando a seguir:
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- Mude o diretório e navegue até o repositório clonado usando o seguinte comando:
cd vertex-ai-search-agent-builder-demo
- Estrutura da pasta
- Back-end: contém uma implementação de API baseada em Python que ajuda a criar endpoints RESTful para o front-end interagir.
- Front-end: vai conter um aplicativo baseado em React e veicular a interface. Isso também vai conter as chamadas necessárias no nível do aplicativo para o back-end via endpoints REST.
- Dockerfile: esse arquivo vai conter todos os comandos relevantes para criar um contêiner do Docker.
- Na raiz do diretório do repositório, execute o seguinte comando, que ajuda a criar uma imagem do Docker. Observação: use a flag
- - platformao criar contêineres do Docker em Macbooks que usam chips Apple Silicon, como M1, M2 etc. Essa flag não é necessária se você estiver criando em uma máquina Windows ou se a arquitetura de CPU for baseada em Intel.
docker build --platform linux/amd64 -t your-image-name .
- Depois que a criação do contêiner do Docker for concluída, execute o comando a seguir para adicionar tags ao contêiner e garantir que você forneça uma versão da imagem. Lembre-se de que pode haver várias versões do aplicativo e, portanto, várias versões como tags em contêineres do Docker. Garantir que a versão estável mais recente seja sempre usada é uma boa abordagem recomendada do ponto de vista de DevOps.
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Depois que a inclusão de tags na imagem do contêiner do Docker for concluída, envie a imagem para o Google Artifact Registry (GAR). O GAR é uma plataforma totalmente gerenciada do Google para ajudar a gerenciar e controlar as versões dos seus contêineres Docker. Execute o comando a seguir, que vai enviar o contêiner marcado acima para o GAR. Para mais informações, consulte o seguinte link: [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. Etapa 5: implantar o aplicativo no Cloud Run
- Minimize o terminal. Na barra de pesquisa do console do Google Cloud, procure "Cloud Run".
- Clique no produto sugerido do Cloud Run.

- Clique em "Criar serviço".
- Na próxima página, verifique se a opção "Implantar uma revisão de uma imagem de contêiner atual" está selecionada.
- Abaixo, clique em "Selecionar".
- Uma barra de navegação vai aparecer à direita.
- Verifique se o Artifact Registry está selecionado como a guia.
- Verifique se o projeto está selecionado corretamente.
- Clique na seta para abrir o acordeão no link da imagem do contêiner implantado.
- Selecione a tag de contêiner e expanda (sempre selecione as mais recentes implantadas, com as tags mais recentes corretas, ou seja, v1, v2 etc.).
- Clique na imagem do contêiner mostrada abaixo do nome da tag do contêiner.

- Na área "Configurar"
- Forneça um nome de serviço para o aplicativo do Cloud Run. Ele fará parte do URL quando você implantar o aplicativo no Cloud Run.
- Selecione a região apropriada (neste caso, us-central1 ou qualquer outra de sua escolha).
- Em "Autenticação"
- Verifique se a opção "Permitir invocações não autenticadas" está selecionada.
- Em "Alocação de CPU e preços"
- Selecione "A CPU é alocada somente durante o processamento da solicitação"
- Modifique o escalonamento automático de serviços para 1. Para fins de produção, é recomendável ter instâncias mínimas em execução para lidar com o tráfego diário. Você pode até deixar como 0, ou seja, zero.
- Defina o "Controle de entrada" como "Todos" para permitir que o tráfego da Internet acesse seu aplicativo.
- Clique em "Criar".
- Isso vai implantar uma instância do Cloud Run, e o provisionamento dela pode levar alguns minutos.

- Depois da implantação, você poderá acessar o URL disponível publicamente do aplicativo da Web.

8. Como tudo isso funciona?
- Na página inicial do aplicativo, clique no botão "Enviar documento".
- Fazer upload do arquivo PDF
- Quando o upload for concluído
- Clique na barra de pesquisa na parte de cima da página da Web.
- Comece a pesquisar consultas relacionadas ao documento enviado
- Depois de digitar a consulta e clicar em "Pesquisar", todas as respostas relevantes do documento que você acabou de enviar vão aparecer.
- Você pode testar o código de back-end e adicionar mais configurações, como as seguintes:
- Adicionar snippets
- Como adicionar segmentos extrativos
- Adicionar respostas
- Ajustar os resultados top-k para ajudar o LLM a resumir a resposta (algo como a Visão geral criada por IA na Pesquisa Google)
- Como um complemento, você também pode adicionar tags de metadados ao fazer upload do documento. Isso ajuda a gerar facetas e categorias filtráveis.
9. Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste codelab, siga estas etapas:
- No console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
- Ou acesse Cloud Run no console do Google Cloud, selecione o serviço que você acabou de implantar e exclua.
10. Parabéns
Parabéns! Você criou um sistema RAG rápido e pronto para uso com os modelos mais modernos do Google para fornecer resultados de qualidade nas suas consultas de pesquisa. Este codelab é apenas para fins de demonstração. Mais segurança e proteções precisam ser configuradas para casos de uso de produção. O link para o repositório completo está aqui. Ao aproveitar o Google Cloud e com apenas cinco etapas, podemos gerar um sistema RAG completo que pode oferecer resultados de qualidade do Google em poucos minutos. À medida que a IA generativa e os modelos de linguagem grandes evoluem, a criação desses sistemas de RAG também ajuda a evitar os problemas de alucinação e informações não citadas.
Embora esse seja apenas um ponto de partida, podemos fazer maravilhas com as APIs RAG totalmente personalizáveis, que oferecem ainda mais transparência, controle e eficiência para lidar com todas as partes do processo de pipeline de maneira eficaz.