As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implemente um caso de uso do RAG AWS usando o Terraform e o Amazon Bedrock
Martin Maritsch, Nicolas Jacob Baer, Olivier Brique, Julian Ferdinand Grueber, Alice Morano e Nicola D Orazio, Amazon Web Services
Resumo
AWS fornece várias opções para criar seus casos de uso de IA generativa habilitados para Retrieval Augmented Generation (RAG)
O usuário faz o upload manual de um arquivo para um bucket do Amazon Simple Storage Service (Amazon S3), como um arquivo do Microsoft Excel ou um documento em PDF. (Para obter mais informações sobre os tipos de arquivo compatíveis, consulte a documentação do Unstructured
.) O conteúdo do arquivo é extraído e incorporado a um banco de dados de conhecimento baseado no Aurora compatível com PostgreSQL e com tecnologia sem servidor, que permite a ingestão de documentos quase em tempo real no armazenamento de vetores. Com essa abordagem, o modelo RAG consegue acessar e recuperar informações relevantes em casos de uso nos quais a baixa latência é importante.
Quando o usuário interage com o modelo de geração de texto, a experiência é aprimorada por meio da ampliação da recuperação de conteúdo relevante dos arquivos enviados anteriormente.
O padrão usa o Incorporador de Texto do Amazon Titan v2 como o modelo de incorporação e o Anthropic Claude 3 Sonnet
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS.
AWS Command Line Interface (AWS CLI) instalado e configurado com o seu Conta da AWS. Para obter instruções de instalação, consulte Instalar ou atualizar para a versão mais recente do AWS CLI na AWS CLI documentação. Para revisar suas AWS credenciais e seu acesso à sua conta, consulte Configuração e configurações do arquivo de credenciais na AWS CLI documentação.
Acesso ao modelo que está habilitado para os modelos de linguagem grande necessários (LLMs) no console Amazon Bedrock do seu Conta da AWS. Esse padrão requer o seguinte LLMs:
amazon.titan-embed-text-v2:0anthropic.claude-3-sonnet-20240229-v1:0
Limitações
Esta arquitetura de amostra não inclui uma interface para responder perguntas de forma programática com o banco de dados de vetores. Se seu caso de uso exigir uma API, considere adicionar o Amazon API Gateway com uma AWS Lambda função que executa tarefas de recuperação e resposta a perguntas.
Essa arquitetura de amostra não inclui recursos de monitoramento para a infraestrutura implantada. Se o seu caso de uso exigir monitoramento, considere adicionar os serviços de monitoramento da AWS.
Se você fizer o upload de muitos documentos para o bucket do Amazon S3 em um curto período de tempo, a função do Lambda pode atingir limites de taxa. Para resolver isso, é possível desacoplar a função do Lambda ao usar uma fila do Amazon Simple Queue Service (Amazon SQS), em que é possível controlar a taxa de invocações do Lambda.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte Serviços da AWS by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Versões do produto
Arquitetura
O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

Este diagrama ilustra o seguinte:
Quando um objeto é criado no bucket do Amazon S3
bedrock-rag-template-<account_id>, uma notificação do Amazon S3 invoca a função do Lambdadata-ingestion-processor.A função do Lambda
data-ingestion-processoré baseada em uma imagem do Docker armazenada no repositóriobedrock-rag-templatedo Amazon Elastic Container Registry (Amazon ECR).A função usa o LangChain S3 FileLoader
para ler o arquivo como um LangChain documento . Em seguida, LangChain RecursiveCharacterTextSplitter fragmente cada documento, dados a CHUNK_SIZEe a, dependendo do tamanho máximo do token do modelo de incorporação Amazon Titan Text Embedding V2.CHUNK_OVERLAPEm seguida, a função do Lambda invoca o modelo de incorporação no Amazon Bedrock para transformar os blocos em representações vetoriais numéricas. Por fim, esses vetores são armazenados no banco de dados do Aurora PostgreSQL. Para acessar o banco de dados, a função Lambda primeiro recupera o nome de usuário e a senha de. AWS Secrets ManagerNa instância do notebook Amazon SageMaker AI
aws-sample-bedrock-rag-template, o usuário pode escrever uma solicitação de pergunta. O código invoca o Claude 3 no Amazon Bedrock e adiciona as informações da base de conhecimento ao contexto do prompt. Como resultado, o Claude 3 fornece respostas com base nas informações contidas nos documentos.
A abordagem deste padrão em relação à rede e à segurança é a seguinte:
A função do Lambda
data-ingestion-processorestá em uma sub-rede privada na nuvem privada virtual (VPC). A função do Lambda não tem permissão para enviar tráfego para a internet pública devido ao seu grupo de segurança. Como resultado, o tráfego destinado ao Amazon S3 e ao Amazon Bedrock é roteado apenas pelos endpoints da VPC. Dessa forma, o tráfego não passa pela internet pública, diminuindo a latência e oferecendo uma camada adicional de segurança na rede.Todos os recursos e dados são criptografados sempre que aplicável usando a chave AWS Key Management Service (AWS KMS) com o alias
aws-sample/bedrock-rag-template.
Automação e escala
Esse padrão usa o Terraform para implantar a infraestrutura do repositório de código em uma Conta da AWS.
Ferramentas
Serviços da AWS
O Amazon Aurora Edição Compatível com PostgreSQL é um mecanismo de banco de dados relacional totalmente gerenciado e compatível com ACID que ajuda você a configurar, operar e escalar implantações do PostgreSQL. Neste padrão, o Aurora compatível com PostgreSQL faz uso do plug-in “pgvector” como banco de dados de vetores.
O Amazon Bedrock é um serviço totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) das principais startups de IA e da Amazon para seu uso por meio de uma API unificada.
AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável. Neste padrão, o Amazon ECR hospeda a imagem do Docker da função do Lambda
data-ingestion-processor.AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O AWS Key Management Service (AWS KMS) ajuda na criação e no controle de chaves criptográficas, contribuindo para a proteção dos seus dados.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado. Neste padrão, a Lambda ingere dados no armazenamento de vetores.
O Amazon SageMaker AI é um serviço gerenciado de aprendizado de máquina (ML) que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.
O AWS Secrets Manager ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. A VPC inclui sub-redes e tabelas de rotas para controlar o fluxo de tráfego.
Outras ferramentas
O Docker
é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. O HashiCorp Terraform
é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. O Poetry
é uma ferramenta para gerenciamento de dependências e empacotamento em Python. Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório GitHub terraform-rag-template-using-amazon-bedrock
Práticas recomendadas
Embora esse exemplo de código possa ser implantado em qualquer um Região da AWS, recomendamos que você use o Leste dos EUA (Norte da Virgínia)
us-east-1ou Oeste dos EUA (Norte da Califórnia).us-west-1Essa recomendação baseia-se na disponibilidade de modelos de base e de modelos de incorporação no Amazon Bedrock no momento da publicação deste padrão. Para obter uma up-to-date lista do suporte ao modelo da Amazon Bedrock Foundation em Regiões da AWS, consulte Model support by Região da AWS na documentação do Amazon Bedrock. Para obter informações sobre como implantar esta amostra de código em outras regiões, consulte Informações adicionais.Esse padrão fornece somente uma demonstração proof-of-concept (PoC) ou piloto. Se você pretende implantar o código para produção, certifique-se de seguir as seguintes práticas recomendadas:
Habilite o registro em log de acesso ao servidor para o Amazon S3.
Configure o monitoramento e a geração de alertas para a função do Lambda.
Se seu caso de uso exigir uma API, considere adicionar o Amazon API Gateway junto com uma função do Lambda que execute tarefas de recuperação e de resposta a perguntas.
Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clonar o repositório. | Para clonar o GitHub repositório fornecido com esse padrão, use o seguinte comando:
| AWS DevOps |
Configure as variáveis. | Para configurar os parâmetros deste padrão, execute as seguintes etapas:
| AWS DevOps |
Implante a solução. | Para implantar a solução, faça o seguinte:
A implantação da infraestrutura provisiona uma instância de SageMaker IA dentro da VPC e com as permissões para acessar o banco de dados Aurora PostgreSQL. | AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Execute a demonstração. | Após a implantação da infraestrutura anterior ter sido concluída com êxito, siga as seguintes etapas para executar a demonstração em um caderno Jupyter:
O caderno Jupyter orienta você pelo seguinte processo:
| AWS geral |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Limpe a infraestrutura. | Para remover todos os recursos que você criou quando não forem mais necessários, use o seguinte comando:
| AWS DevOps |
Recursos relacionados
AWS recursos
Outros recursos
Mais informações
Implementação de um banco de dados de vetores
Este padrão usa o Aurora compatível com PostgreSQL para implementar um banco de dados de vetores para RAG. Como alternativa ao Aurora PostgreSQL, AWS fornece outros recursos e serviços para o RAG, como o Amazon Bedrock Knowledge Bases e o Amazon Service. OpenSearch Você pode escolher a solução que melhor se adapta aos seus requisitos específicos:
O Amazon OpenSearch Service fornece mecanismos distribuídos de pesquisa e análise que você pode usar para armazenar e consultar grandes volumes de dados.
As Bases de Conhecimento para Amazon Bedrock foram projetadas para criar e implantar bases de conhecimento como uma camada adicional para simplificar o processo de ingestão e a recuperação da RAG. As bases de conhecimento Amazon Bedrock podem funcionar tanto com o Aurora OpenSearch PostgreSQL quanto com o Amazon Service.
Implantação em outros Regiões da AWS
Conforme descrito na seção Arquitetura, recomendamos que você use a região Leste dos EUA (Norte da Virgínia) (us-east-1) ou Oeste dos EUA (N. da Califórnia) (us-west-1) para implantar esta amostra de código. No entanto, existem duas formas possíveis de implantar esta amostra de código em regiões diferentes de us-east-1 e us-west-1. É possível configurar a região de implantação no arquivo commons.tfvars. Para acesso a modelos base em diferentes regiões, considere as seguintes opções:
Atravessando a internet pública: se o tráfego puder ser transferido pela internet pública, adicione gateways da internet à VPC. Em seguida, ajuste o grupo de segurança atribuído à função Lambda
data-ingestion-processore à instância do notebook SageMaker AI para permitir o tráfego de saída para a Internet pública.Sem atravessar a internet pública: para implantar este exemplo em qualquer região diferente de
us-east-1ou deus-west-1, faça o seguinte:
Em qualquer uma das regiões
us-east-1ouus-west-1, crie uma VPC adicional, incluindo um endpoint da VPC parabedrock-runtime.Crie uma conexão de emparelhamento usando o emparelhamento da VPC ou um gateway de trânsito para a VPC da aplicação.
Ao configurar o cliente boto3 do
bedrock-runtimeem qualquer função do Lambda externa àus-east-1ouus-west-1, transfira o nome de DNS privado do endpoint da VPC parabedrock-runtimeemus-east-1ou us-west-1 comoendpoint_urlpara o cliente boto3.