Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Faça como eu fiz: implementar RAG

Para a realização desta atividade, mantive a implementação principal no Google Colab, preservando toda a evolução do processo, inclusive os blocos que apresentaram erro, justamente para demonstrar de forma transparente as tentativas feitas, os obstáculos encontrados e a forma como o problema foi analisado tecnicamente.

A proposta inicial foi seguir a estrutura completa de implementação do RAG, com carregamento dos documentos, divisão em chunks com sobreposição, geração de embeddings, criação do vector store e montagem da cadeia de consulta com recuperação semântica. Todo esse fluxo foi montado e executado no ambiente do Colab, seguindo a lógica apresentada em aula. No entanto, durante a etapa de criação do vector store, o processo voltou a esbarrar em uma limitação externa de integração, relacionada à quota da API utilizada para geração de embeddings. Ou seja, não se tratou de erro de lógica ou de implementação do código, mas sim de uma limitação do ambiente gratuito e do provedor utilizado naquele momento.

Mesmo diante desse bloqueio, optei por manter no notebook os trechos que falharam, para deixar registrado que a tentativa foi feita corretamente e que o problema ocorreu em função da indisponibilidade/quota da integração, algo que já havia surgido em etapas anteriores do curso com chamadas a modelos e embeddings. Considero importante deixar isso visível porque faz parte do processo real de desenvolvimento: nem sempre o obstáculo está no código em si, mas muitas vezes na infraestrutura, na limitação de uso ou no ambiente disponível.

Como continuidade da atividade, foi construída uma solução de contorno para preservar a proposta técnica do exercício e permitir a validação prática do fluxo. Essa adaptação funcionou muito bem e permitiu concluir a atividade com sucesso, mantendo os conceitos centrais do RAG: processamento documental, recuperação de contexto e uso da LLM com base nos trechos mais relevantes. Dessa forma, mesmo sem a execução integral do bloco memrag.py na forma originalmente planejada, foi possível demonstrar entendimento da arquitetura, capacidade de troubleshooting e adaptação técnica diante de uma limitação externa.

Em resumo, a atividade foi importante não apenas pela implementação do RAG em si, mas também pelo exercício de análise de erro, identificação de causa raiz e aplicação de uma solução viável para seguir avançando. Isso tornou a entrega mais próxima de um cenário real de desenvolvimento, em que muitas vezes o sucesso da solução depende tanto da lógica construída quanto da capacidade de contornar limitações do ambiente.

https://github.com/Moquiuti/LangChainePython/blob/main/RAG.ipynb

2 respostas

Oi, Leandro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Muito interessante ver como você documentou todo o processo, inclusive os erros e limitações de quota. Isso mostra maturidade técnica e uma visão realista do desenvolvimento, principalmente ao identificar corretamente que o bloqueio estava na infraestrutura e não na lógica do RAG. Sua adaptação para contornar o problema também demonstra um ótimo domínio do fluxo e capacidade de troubleshooting.

Uma dica interessante para o futuro é testar um controle simples de tentativas em chamadas de API, evitando falhas imediatas por limite temporário:


import time

def tentar_chamada(func, tentativas=3):
    for i in range(tentativas):
        try:
            return func()
        except:
            time.sleep(2)
    return None

Esse código tenta executar uma função várias vezes antes de falhar, ajudando quando a API atinge limites momentâneos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Olá Rafaela, obrigado pelo feedback!
Boa dica, obrigado!