Machine Learning Mastery→ original

Machine Learning Mastery mostra como montar um RAG com scikit-learn, sem banco de dados vetorial

A Machine Learning Mastery publicou um guia para montar um pipeline de RAG leve, de ponta a ponta. A busca vetorial fica por conta do scikit-learn, enquanto os embeddings e o processamento de texto usam modelos abertos. Para um protótipo, não é preciso ter um banco de dados vetorial separado nem APIs na nuvem: todo o pipeline cabe em um único script Python. - A busca por similaridade usa os recursos do scikit-learn. - Os embeddings são gerados por modelos de código aberto. - Para corpora pequenos, esse stack roda em um notebook.

Processado por IA de Machine Learning Mastery; editado por Hamidun News
Machine Learning Mastery mostra como montar um RAG com scikit-learn, sem banco de dados vetorial
Fonte: Machine Learning Mastery. Colagem: Hamidun News.
◐ Ouvir artigo

Em 13 de outubro de 2026, a Machine Learning Mastery publicou um guia prático para montar um pipeline de RAG de ponta a ponta com um stack mínimo. A busca vetorial fica com o scikit-learn, e os embeddings e o processamento de texto são feitos com modelos abertos. Na fase de protótipo, não são necessários servidores com banco de dados vetorial, infraestrutura separada nem APIs pagas. O material é didático, não um lançamento, mas mostra bem como é pouco o que se precisa para colocar de pé um fluxo do tipo "encontre o contexto e depois responda".

O anúncio descreve apenas os contornos gerais da solução, por isso o fluxo é analisado abaixo pelas etapas típicas de um RAG. Os parâmetros específicos do texto completo do guia não são reproduzidos aqui.

Como o pipeline é montado

Um RAG clássico tem quatro operações. Os documentos são divididos em fragmentos, os fragmentos viram vetores, a consulta recupera os mais próximos, e o texto encontrado é inserido no prompt do modelo de linguagem. Tudo isso cabe em um único arquivo.

No guia, a vetorização fica com modelos abertos de embeddings, e a busca pelos vizinhos mais próximos fica com o scikit-learn. Para esse cenário, a biblioteca já traz ferramentas prontas: a similaridade de cosseno e a classe NearestNeighbors. A matriz de vetores fica na memória, a consulta é convertida em um vetor da mesma dimensão, e depois é feita a seleção dos top-k.

Perfil aproximado desse stack:

  • Busca: scikit-learn, similaridade de cosseno ou NearestNeighbors, com busca exata, sem aproximações.
  • Embeddings: um modelo aberto. O popular all-MiniLM-L6-v2, por exemplo, gera vetores de 384 dimensões.
  • Armazenamento: um array NumPy na memória RAM.
  • Volume: 100 mil fragmentos com 384 dimensões em float32 ocupam cerca de 150 MB.
  • Dependências: Python, scikit-learn e uma biblioteca para carregar o modelo de embeddings.

Os números de volume foram calculados a partir da dimensão do vetor, e não tirados do artigo. Eles servem para dar a ordem de grandeza: 384 números de 4 bytes resultam em 1,5 KB por fragmento.

Por que dispensar o banco de dados vetorial

A primeira vantagem é a transparência. Quando a busca se resume a multiplicação de matrizes e ordenação, dá para ver o que acontece em cada etapa. É possível imprimir as similaridades, conferir qual fragmento venceu e por quê, e perceber de imediato que os chunks foram mal cortados. Em sistemas especializados, parte dessa mecânica fica escondida atrás de uma API.

A segunda vantagem é o baixo custo de entrada. O protótipo não exige contas, chaves nem chamadas de rede. Para uma base de conhecimento interna de alguns milhares de páginas, ou para treinar uma equipe, isso basta. Nesses volumes, a busca exata responde em frações de segundo, então índices aproximados como o HNSW não acrescentam nada.

A terceira vantagem é a reprodutibilidade. Basta fixar as versões das bibliotecas e do modelo, e o resultado do seu colega será igual ao seu.

Onde esse esquema chega ao limite

A busca exata escala de forma linear. Quando o corpus chegar a milhões de fragmentos, o tempo de resposta e o consumo de memória vão atrapalhar, e será preciso migrar para FAISS, pgvector, Qdrant ou similares. Requisitos adicionais também recaem sobre o desenvolvedor: filtros por metadados, controle de acesso, atualização incremental do índice. No scikit-learn, tudo isso precisa ser implementado manualmente.

A qualidade da resposta, porém, não depende da biblioteca de busca, mas de três fatores: como o texto é dividido, qual modelo de embeddings foi escolhido e como o prompt é estruturado. Trocar o armazenamento por um mais robusto não resolve esses problemas.

Como usar na prática

Comece com um corpus pequeno, como a sua documentação ou um FAQ, e monte o pipeline em um único script. Crie de 20 a 30 perguntas de controle com respostas conhecidas e calcule a proporção de casos em que o fragmento correto aparece entre os top-3. Essa métrica, a hit rate, mostra a qualidade da busca antes mesmo de você conectar a geração.

Depois, altere uma variável por vez: o tamanho do chunk, o modelo de embeddings, o valor de k. Se a métrica sobe, o esquema funciona. Quando o corpus ou a carga ultrapassarem o limite de memória de uma única máquina, troque o bloco de busca por um banco de dados vetorial de nível industrial. O restante do código permanece o mesmo, porque a interface "vetor da consulta na entrada, lista de fragmentos na saída" é idêntica nos dois casos.

ZK
Hamidun News
Notícias de AI sem ruído. Seleção editorial diária de mais de 50 fontes. Produto de Zhemal Khamidun, Head of AI na Alpina Digital.
✦ Unified AI Workspace

Access Frontier LLMs & Multimodal AI in One Workspace

Discover NomadNet AI (nomadnet.ai) — unified access to frontier language models, research synthesis, and multimodal workflows.

Try NomadNet AI →Launch NomadNet Agent
O que você acha?
Carregando comentários…