Pular para o conteúdo principal
Background

Crie um chatbot RAG baseado em evidências no Kubernetes

Use Python, LangGraph, PostgreSQL e LKE para transformar políticas complexas de companhias aéreas em respostas sensíveis ao contexto, com referências.

Assista à criação do chatbot RAG

Acompanhe todo o processo de criação, desde o provisionamento da infraestrutura do Kubernetes até a indexação de documentos de políticas e o teste de respostas baseadas em evidências.

Antes de começar

Reúna as credenciais e as ferramentas de linha de comando necessárias para provisionar a infraestrutura, enviar documentos e implantar a aplicação.

  • Conta do Akamai Cloud e token da API
  • Chave de API da OpenAI
  • Terraform instalado localmente
  • kubectl installed locally
  • s3cmd installed locally
  • Acesso ao repositório do GitHub
  • Par de chaves SSH para a chave de implantação

Crie o chatbot RAG em quatro etapas

Provisione a infraestrutura, faça o upload da base de conhecimento, implante a aplicação e valide o chatbot concluído.

Clone o projeto:

git clone https://github.com/akamai-developers/rag-langgraph-k8s-quickstart.git
cd rag-langgraph-k8s-quickstart

Copie o arquivo de exemplo do Terraform e configure-o com seu token da API do Akamai Cloud e as configurações de recursos de sua preferência:

cp terraform/terraform.tfvars.example terraform/terraform.tfvars

Provisione o cluster LKE, dois bancos de dados PostgreSQL e um bucket de Object Storage:

cd terraform
terraform init
terraform plan
terraform apply

Mantenha as saídas do Terraform em segurança. Elas contêm detalhes confidenciais de conexão.

Carregue as saídas do Terraform em variáveis de ambiente:

export S3_BUCKET=$(terraform output -raw S3_BUCKET_NAME)
export S3_ENDPOINT=$(terraform output -raw S3_ENDPOINT)
export S3_ACCESS_KEY=$(terraform output -raw S3_ACCESS_KEY)
export S3_SECRET_KEY=$(terraform output -raw S3_SECRET_KEY)

Carregue os documentos de política da companhia aérea incluídos:

s3cmd sync ../documents/ s3://${S3_BUCKET}/ \
--host=${S3_ENDPOINT} \
--host-bucket=${S3_ENDPOINT} \
--access_key=${S3_ACCESS_KEY} \
--secret_key=${S3_SECRET_KEY}

Você pode substituir as políticas de exemplo por seus próprios documentos em PDF, HTML ou texto.

Defina o kubeconfig gerado:

export KUBECONFIG=./kubeconfig.yaml

Recupere as credenciais iniciais da App Platform no namespace keycloak e faça login.

Na App Platform:

  1. Instale o registro de contêineres Harbor.
  2. Gere uma chave de implantação do GitHub.
  3. Adicione a chave pública ao repositório.
  4. Armazene a chave privada como um Segredo Selado.
  5. Conecte o repositório de código.
  6. Compile a imagem da aplicação.
  7. Crie Sealed Secrets para a OpenAI, o PostgreSQL, o Object Storage e a chave da API de administração.
  8. Adicione políticas de rede para ambos os bancos de dados PostgreSQL.
  9. Crie a workload usando charts/workflow.example.yaml.
  10. Crie um serviço público para a aplicação.

Não codifique credenciais no repositório ou na configuração da workload.

Verifique se a aplicação está em execução:

curl http://<your-service-endpoint>/api/health

Inicialize os bancos de dados:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/initialize_databases

Indexe os documentos de política:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents

Use o ID da tarefa retornado para verificar o andamento:

curl -X GET \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents/<job-id>

Quando a indexação estiver concluída, acesse o endpoint do serviço e faça uma consulta sobre as políticas enviadas.

Perguntas frequentes (FAQ)

Perguntas frequentes (FAQ)

Ele recupera seções relevantes dos documentos de políticas das companhias aéreas e as utiliza para gerar respostas com citações de apoio.

A aplicação pode processar arquivos PDF, HTML e de texto armazenados no Object Storage.

Um armazena representações vetoriais para recuperação semântica. O segundo armazena o histórico de conversas e o estado do LangGraph.

Não. O projeto atual usa APIs da OpenAI para representações vetoriais e autocompletar mensagens de chat. Posteriormente, você poderá adaptá-lo para executar um modelo de código aberto em nós LKE com suporte a GPU.

Sim. Substitua os exemplos de políticas de companhias aéreas no diretório documents pelos seus próprios arquivos compatíveis antes de enviá-los.

O projeto utiliza o Sealed Secrets para credenciais da OpenAI, do banco de dados, do Object Storage, da chave de implantação e de administrador.

O endpoint de indexação retorna um ID de tarefa. Use o endpoint de status para monitorar a tarefa antes de testar o chatbot.

Não. Os créditos do Akamai Cloud se aplicam à infraestrutura elegível do Akamai Cloud. O uso da API da OpenAI é cobrado separadamente.