Blank white background with no objects or features visible.

NOVA PESQUISA: 80% dos custos de IA são invisíveis na fatura. Mais de 200 líderes revelam para onde o dinheiro vai. Leia→

Construindo RAG usando TrueFoundry e MongoDB Atlas

Updated: December 11, 2024

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?
  1. Altamente relevantes e sensíveis ao contexto.
  2. 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.
  3. 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

  1. Um repositório central reutilizável de parsers, carregadores, incorporadores e recuperadores.
  2. 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.
  3. Totalmente baseado em API - o que permite a integração com outros sistemas.
  4. 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.
  5. Integrações prontas a usar para conectar-se facilmente a Pinecone, Weaviate, ChromaDB ou MongoDB Atlas Vector Search.
Know more about Cognita
Click Here

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.

Know more about TrueFoundry
Book Demo

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.

  1. Crie uma conta MongoDB Atlas visitando a Página de Registro se você ainda não tem uma conta.
  1. 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”.
  1. Para adicionar as autenticações necessárias, na janela “Connect to Cluster”, crie um usuário de banco de dados.
  2. 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

  1. Clone o repositório do Cognita no GitHub: https://github.com/truefoundry/cognita/tree/main
  2. 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

  1. 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.
  2. O arquivo compose usa o arquivo compose.env para variáveis de ambiente. Você pode modificá-lo conforme suas necessidades.
  3. 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"}}'

  1. 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

  1. 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.
  2. 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:

Datasource

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
DataSourceList
  • Clique em + Nova Coleção 
collection
  • 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
ingestionstarted

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”.

ingestioncomplete

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

responsegen
  1. 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
  2. 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.

Know more about TrueFoundry
Book Demo

The fastest way to build, govern and scale your AI

Sign Up
Table of Contents

Govern, Deploy and Trace AI in Your Own Infrastructure

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo

Discover More

October 5, 2023
|
5 min read

<Webinar> Vitrine de GenAI para Empresas

Best Fine Tuning Tools for Model Training
May 3, 2024
|
5 min read

As 6 Melhores Ferramentas de Fine Tuning Para Treinamento de Modelos em 2026

May 25, 2023
|
5 min read

LLMs de Código Aberto: Abrace ou Pereça

August 24, 2023
|
5 min read

Implantações de Machine Learning em 2023

May 21, 2026
|
5 min read

Adicionando OAuth2 a Jupyter Notebooks no Kubernetes

Engenharia e Produto
May 21, 2026
|
5 min read

Uma equipe de 2 pessoas atendendo um modelo para 1,5 milhão de pessoas com TrueFoundry

Engenharia e Produto
May 21, 2026
|
5 min read

Acelere o Processamento de Dados em 30–40x com NVIDIA RAPIDS no TrueFoundry

GPU
Engenharia e Produto
May 21, 2026
|
5 min read

Uma Parceria para IA Responsável: Truefoundry e Enkrypt AI

No items found.
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Take a quick product tour
Start Product Tour
Product Tour