Construindo RAG usando TrueFoundry e MongoDB Atlas
.webp)
Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
Introdução
A Geração Aumentada por Recuperação (RAG) combina os pontos fortes de sistemas de recuperação e modelos generativos para produzir resultados altamente relevantes e sensíveis ao contexto. Ele consulta fontes de conhecimento externas — como bancos de dados ou índices de pesquisa — para recuperar informações relevantes, que são então refinadas por um modelo generativo.
Por que RAG?
- Altamente relevantes e sensíveis ao contexto.
- Ao incorporar conhecimento dinâmico e atualizado, os sistemas RAG superam as limitações do pré-treinamento estático em modelos generativos, tornando-os altamente eficazes para aplicações como resposta a perguntas, tarefas intensivas em conhecimento e geração de conteúdo personalizado.
- A modular natureza do RAG permite a otimização tanto nas etapas de recuperação quanto de geração, possibilitando maior flexibilidade e escalabilidade no design do sistema.
Cognita da TrueFoundry: Simplificando o RAG para Aplicações Escaláveis
Apesar do seu potencial, implementar o RAG pode ser complexo, envolvendo seleção de modelos, organização de dados e melhores práticas. As ferramentas existentes simplificam a prototipagem, mas carecem de um modelo de código aberto para implantação escalável — apresentamos Cognita.
Cognita é um framework RAG de código aberto que simplifica a construção e implantação de aplicações escaláveis. Ao dividir o RAG em etapas modulares, ele garante fácil manutenção, interoperabilidade com outras ferramentas de IA, personalização e conformidade. Cognita equilibra adaptabilidade e facilidade de uso, mantendo-se escalável para avanços futuros.
Vantagens do Cognita
- Um repositório central reutilizável de parsers, carregadores, incorporadores e recuperadores.
- Capacidade para utilizadores não técnicos interagirem com a interface de utilizador - Carregar documentos e realizar Perguntas e Respostas usando módulos desenvolvidos pela equipa de desenvolvimento.
- Totalmente baseado em API - o que permite a integração com outros sistemas.
- Grandes Modelos de Linguagem (LLMs) para uma interação fácil com modelos generativos como GPT da OpenAI, modelos Hugging Face ou outras APIs de LLM.
- Integrações prontas a usar para conectar-se facilmente a Pinecone, Weaviate, ChromaDB ou MongoDB Atlas Vector Search.
Porquê MongoDB para RAG?
Usar MongoDB como uma base de dados vetorial para a sua aplicação de Geração Aumentada por Recuperação (RAG) pode ser benéfico dependendo dos seus requisitos. Eis porque o MongoDB pode ser uma boa escolha:
1. Suporte Nativo para Pesquisa Vetorial
O MongoDB suporta indexação vetorial através do seu Atlas Vector Search. Isto permite pesquisas de similaridade eficientes sobre dados de alta dimensão, o que é central para os fluxos de trabalho RAG. Principais benefícios:
- Integração com a Linguagem de Consulta do MongoDB: Combina a pesquisa vetorial com consultas tradicionais, permitindo uma composição de consultas mais flexível e poderosa.
- Pesquisa de alto desempenho: Utiliza algoritmos de vizinho mais próximo aproximado (ANN) como HNSW (Hierarchical Navigable Small World) para recuperação vetorial escalável e rápida.
2. Gestão Unificada de Dados
As aplicações RAG frequentemente exigem a gestão de ambos, dados não estruturados (ex., texto e embeddings) e dados estruturados (ex., metadados, preferências do usuário).
O MongoDB, sendo um banco de dados de documentos, permite armazenar embeddings juntamente com seus metadados associados em um único registro. Por exemplo:
{
"embedding": [0.1, 0.2, 0.3, ...],
"text": "This is a sample document.",
"metadata": {
"source": "document_1",
"timestamp": "2024-12-06T10:00:00Z"
}
}
Isso evita a complexidade de gerenciar embeddings em um sistema separado.
3. Flexibilidade e Escalabilidade
Design sem Esquema: A flexibilidade de esquema do MongoDB facilita a iteração no seu modelo de dados à medida que sua aplicação RAG evolui.
Escalabilidade Horizontal: A capacidade de sharding do MongoDB permite lidar com grandes conjuntos de dados e escalar à medida que sua aplicação cresce.
Recursos Nativos da Nuvem: O MongoDB Atlas oferece serviços totalmente gerenciados, incluindo escalabilidade, backups e monitoramento.
Implementando RAG com cognita + MongoDB
Passo 1: Configurando o MongoDB
Para um tutorial em vídeo para ver como obter seu cluster gratuito do MongoDB Atlas, clique aqui.
- Crie uma conta MongoDB Atlas visitando a Página de Registro se você ainda não tem uma conta.

- Para configurar um cluster na aba Visão Geral, clique em “Create”, selecione o cluster de acordo com suas necessidades e clique em “Create Deployment”.

- Para adicionar as autenticações necessárias, na janela “Connect to Cluster”, crie um usuário de banco de dados.
- Conectar com o driver MongoDB
- Escolha a versão do Python
- A string de conexão terá seu nome de usuário e senha. Copie a string de conexão. Ela será usada na próxima etapa.

Etapa 2: Configurando o Cognita para usar o MongoDB
- Clone o repositório do Cognita no GitHub: https://github.com/truefoundry/cognita/tree/main
- Antes de iniciar os serviços, precisamos configurar os provedores de modelo que serão necessários para incorporação e geração de respostas. Para começar, copie models_config.sample.yaml para models_config.yaml.
cp models_config.sample.yaml models_config.yaml
- Crie uma coleção MongoDB no banco de dados recém-criado, por exemplo, “cognita”. Esta é a coleção onde todos os chunks serão armazenados e usados no processo de recuperação.
- O arquivo compose usa o arquivo compose.env para variáveis de ambiente. Você pode modificá-lo conforme suas necessidades.
- Edite a chave “VECTOR_DB_CONFIG” no arquivo de ambiente. Esta configuração será usada no processo de inicialização para garantir que o MongoDB seja usado como um armazenamento de vetores durante todo o tempo de execução. A string de conexão para o MongoDB será usada aqui. A seguir, um exemplo de como isso ficaria:
VECTOR_DB_CONFIG='{"provider":"mongo","url":"mongodb+srv://username:password@clustername.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0", "config": {"database_name": "cognita"}}'
- Por padrão, a configuração tem provedores locais habilitados que precisam do Infinity e de um servidor Ollama para executar incorporação e LLMs localmente. No entanto, se você tiver uma Chave de API da OpenAI, você pode descomentar o provedor openai em models_config.yaml e atualizar OPENAI_API_KEY em compose.env. Agora, você pode executar o seguinte comando para iniciar os serviços:
docker-compose --env-file compose.env --profile ollama --profile infinity up
- O arquivo compose iniciará os seguintes serviços
- cognita-db - Instância Postgres usada para armazenar metadados para coleções e fontes de dados.
- cognita-backend - Usado para iniciar o servidor backend FastAPI para o Cognita.
- cognita-frontend - Usado para iniciar o frontend para o Cognita.
- Assim que os serviços estiverem ativos, você pode acessar o frontend em http://localhost:5001.
Passo 3: Configurar uma coleção de dados no Cognita
Depois de configurar o Cognita, os passos seguintes mostrarão como usar a UI para consultar documentos:

1. Criar Fonte de Dados
- Clique na aba Fontes de Dados
- Clique em + Nova Fonte de Dados
- O tipo de fonte de dados pode ser arquivos de um diretório local, URL da web, URL do GitHub ou fornecendo o FQN de um artefato Truefoundry. Ex: Se 'Localdir' for selecionado, carregue arquivos da sua máquina e clique em Enviar.
- A lista de Fontes de Dados criadas estará disponível na aba Fontes de Dados.
2. Criar Coleção
- Clique na aba Coleções

- Clique em + Nova Coleção

- Insira o Nome da Coleção
- Selecione o Modelo de Embedding
- Adicione a fonte de dados criada anteriormente e a configuração necessária
- Clique em Processar para criar a coleção e indexar os dados

3. Ao criar uma nova coleção, veja o que acontece nos bastidores
- Cria uma nova coleção no banco de dados MongoDB configurado. Por exemplo, se o nome do banco de dados for `cognita`, este passo cria uma coleção com o nome de entrada fornecido no banco de dados cognita no MongoDB.
- Ao criar uma coleção, um índice de busca vetorial é criado usando o seguinte trecho de código:
from pymongo.operations import SearchIndexModel
search_index_model = SearchIndexModel(
definition={
"fields": [
{
"type": "vector",
"path": "embedding",
"numDimensions": self.get_embedding_dimensions(embeddings),
"similarity": "cosine",
}
]
},
name="vector_search_index",
type="vectorSearch",
)
# Create the search index
result = self.db[collection_name].create_search_index(model=search_index_model)Isso garante que a coleção recém-criada esteja pronta para consultas de busca vetorial. Note que a criação de um índice no MongoDB pode levar até um minuto.
4. Assim que você cria a coleção, a ingestão de dados começa, você pode ver seu status selecionando sua coleção na aba coleções. Este passo é responsável por analisar seus arquivos, dividi-los em blocos e adicioná-los ao seu MongoDB. Você também pode adicionar fontes de dados adicionais mais tarde e indexá-las na coleção. Vá para o próximo passo assim que o Status for “Concluído”.

Passo 4: Encontre a configuração ideal para sua aplicação

- Na guia DocsQA, use o playground da Cognita para experimentar as diferentes configurações e ver o que funciona melhor para sua aplicação. Você pode testar diferentes:
- Técnicas de recuperação
- Modelos LLM, temperaturas, etc.
- Prompts LLM
- Modelos de embedding
- Para a configuração que melhor se adequar à sua aplicação, clique em “Criar Aplicação” e um endpoint de API será implantado para ela. Você pode ir para a guia “Aplicações” para ver todas as suas aplicações implantadas.
Conclusão
Este tutorial demonstrou como construir uma aplicação RAG pronta para produção usando Cognita e MongoDB em apenas 10 minutos. A sinergia entre a adaptabilidade e a facilidade de uso da Cognita e o modelo de documento flexível do MongoDB com busca vetorial oferece uma base robusta para a criação de aplicações avançadas de IA.
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI

















.webp)






.webp)

.webp)
.webp)





.png)



