Manages environment variables for storing API keys and configuration settings for Pinecone and Gemini services
Provides the API framework for exposing the RAG functionality through endpoints like /mcp/ask with interactive documentation
Integrates with Google's Gemini LLM for generating responses based on retrieved context
Enables visualization of the MCP architecture through diagrams showing the relationships between components
Serves as the core programming environment with requirements for Python 3.9+ and package management
Projeto de RAG com Arquitetura MCP
Aplicação de Busca Aumentada por Geração (RAG) para consulta de documentos, reestruturada com a arquitetura Memory, Controller, Policy (MCP) para maior clareza, manutenibilidade e escalabilidade.
Relatório de Melhorias: Da Arquitetura Inicial para MCP
1. Estado Inicial do Projeto
O projeto inicial já era funcional e implementava um fluxo RAG básico. No entanto, a arquitetura apresentava os seguintes desafios:
- Alto Acoplamento: A lógica de negócio, as chamadas à API do Pinecone e a formatação de prompts para o LLM estavam misturadas nos mesmos arquivos de rota da API (ex:
llm_router.py
). - Dificuldade de Manutenção: Qualquer alteração, como a troca do modelo de embedding ou a adição de uma nova regra de negócio, exigiria modificar múltiplos arquivos e funções interligadas.
- Baixa Escalabilidade: Adicionar novos fluxos, como um histórico de conversas ou regras de acesso mais complexas, seria complicado e tornaria o código progressivamente mais confuso.
2. Solução Implementada (Arquitetura MCP)
Para resolver esses desafios, o projeto foi refatorado para adotar o padrão de arquitetura Memory, Controller, Policy (MCP), que separa claramente as responsabilidades do sistema.
Componentes da Arquitetura MCP:
Memory
(Memória):- Responsabilidade: Gerenciar o estado e o conhecimento de longo prazo do sistema.
- Implementação: A pasta
memory/
e o arquivopinecone_memory.py
agora centralizam toda a interação com o banco de dados vetorial (Pinecone). Qualquer operação de busca ou salvamento de documentos passa por esta camada.
Policy
(Política):- Responsabilidade: Aplicar regras de negócio, validações e restrições.
- Implementação: A pasta
policy/
e o arquivopolicy.py
contêm a lógica para validar perguntas, filtrar resultados com base em score de relevância, ou aplicar quaisquer outras regras de negócio (ex: anonimização de dados, controle de acesso).
Controller
(Controlador):- Responsabilidade: Orquestrar todo o fluxo de uma requisição. Ele atua como o "cérebro" da operação.
- Implementação: A pasta
controller/
e o arquivocontroller.py
recebem a requisição, utilizam aMemory
para buscar o contexto, aplicam as regras daPolicy
e, finalmente, montam o prompt e chamam o LLM (Gemini) para gerar a resposta.
3. Principais Vantagens da Nova Arquitetura
- Separação de Responsabilidades: Cada componente tem um único trabalho, tornando o código mais limpo e fácil de entender.
- Facilidade de Manutenção: Precisa trocar o Pinecone por outro banco vetorial? Modifique apenas a camada de
Memory
. Quer adicionar novas regras de negócio? Trabalhe apenas na camada dePolicy
. - Escalabilidade: É simples adicionar novas funcionalidades. Por exemplo, para implementar um histórico de conversas, basta expandir a camada de
Memory
e ajustar oController
para usá-lo. - Testabilidade: Cada camada (Memory, Controller, Policy) pode ser testada de forma isolada, garantindo maior qualidade e confiabilidade do código.
Diagrama da Nova Arquitetura
Como Configurar e Rodar o Projeto
Pré-requisitos
- Python 3.9+
- Conta no Pinecone
- Chave de API da Google (Gemini)
1. Crie o Ambiente Virtual
2. Ative o Ambiente Virtual
- Windows (PowerShell):
- Linux/macOS:
3. Instale as Dependências
4. Configure as Variáveis de Ambiente
- Renomeie o arquivo
.env.example
para.env
. - Abra o arquivo
.env
e preencha com suas chaves de API:
5. Rodar o Back-End
6. Rodar o Front-End
7. Rode o Servidor da API
O servidor estará disponível em http://127.0.0.1:8000/docs
.
Como Usar a API
- Acesse a documentação interativa no seu navegador: http://127.0.0.1:8000/docs.
- Encontre o endpoint
POST /mcp/ask
. - Clique em "Try it out".
- Preencha o corpo da requisição com sua pergunta. Exemplo:
- Clique em "Execute" para ver a resposta gerada pelo sistema.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
An API that enables document querying through a Retrieval-Augmented Generation system implemented with Memory-Controller-Policy architecture for improved maintainability and scalability.
Related MCP Servers
- AsecurityAlicenseAqualityAn open-source platform for Retrieval-Augmented Generation (RAG). Upload documents and query them ⚡Last updated -1415JavaScriptMIT License
- -security-license-qualityA Retrieval-Augmented Generation server that enables semantic PDF search with OCR capabilities, allowing users to query document content through any MCP client and receive intelligent answers.Last updated -1PythonApache 2.0
- -securityFlicense-qualityImplements Retrieval-Augmented Generation (RAG) using GroundX and OpenAI, allowing users to ingest documents and perform semantic searches with advanced context handling through Modern Context Processing (MCP).Last updated -1Python
- -securityFlicense-qualityA server that implements Retrieval-Augmented Generation using GroundX and OpenAI, enabling semantic search and document retrieval with Modern Context Processing for enhanced context handling.Last updated -Python