<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vector Database on Allyson Oliveira</title><link>https://www.allysonoliveira.com.br/tags/vector-database/</link><description>Recent content in Vector Database on Allyson Oliveira</description><generator>Hugo -- gohugo.io</generator><language>pt-br</language><lastBuildDate>Thu, 16 Apr 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://www.allysonoliveira.com.br/tags/vector-database/index.xml" rel="self" type="application/rss+xml"/><item><title>Embeddings, Vector Database, RAG e MCP: Como os sistemas modernos de IA realmente funcionam</title><link>https://www.allysonoliveira.com.br/posts/embeddings-vectordb-rag-mcp/</link><pubDate>Thu, 16 Apr 2026 10:00:00 +0000</pubDate><guid>https://www.allysonoliveira.com.br/posts/embeddings-vectordb-rag-mcp/</guid><description>&lt;p>Recentemente assisti a um vídeo muito bom do canal &lt;a class="link" href="https://www.youtube.com/@ByteMonk" target="_blank" rel="noopener"
>ByteMonk&lt;/a> chamado &lt;strong>&amp;ldquo;Embeddings, Vector database, Agent, RAG &amp;amp; MCP: How Modern AI Systems Actually Work&amp;rdquo;&lt;/strong> (&lt;a class="link" href="https://www.youtube.com/watch?v=PByDzuOrkek" target="_blank" rel="noopener"
>link aqui&lt;/a>) e resolvi trazer um resumo dos conceitos abordados, porque são peças fundamentais para entender como os sistemas de IA modernos funcionam na prática.&lt;/p>
&lt;h2 id="embeddings-como-a-ia-entende-significado">Embeddings: como a IA entende significado
&lt;/h2>&lt;p>Embeddings são representações numéricas (vetores) que capturam o significado semântico de palavras, frases ou documentos. Em vez de tratar texto como simples sequências de caracteres, os modelos de IA transformam o conteúdo em listas de números onde &lt;strong>conceitos similares ficam próximos no espaço vetorial&lt;/strong>.&lt;/p>
&lt;p>Na prática, isso significa que uma busca por &amp;ldquo;aumentar receita&amp;rdquo; pode encontrar documentos sobre &amp;ldquo;crescimento de vendas&amp;rdquo;, mesmo sem ter palavras em comum. É isso que permite a busca semântica — ir além do match exato de palavras-chave.&lt;/p>
&lt;h2 id="vector-databases-onde-os-vetores-moram">Vector Databases: onde os vetores moram
&lt;/h2>&lt;p>Se embeddings são os vetores, as &lt;strong>Vector Databases&lt;/strong> são os sistemas de armazenamento otimizados para buscas por similaridade. Diferente de bancos de dados tradicionais que fazem buscas exatas, um vector database encontra os &amp;ldquo;vizinhos mais próximos&amp;rdquo; entre milhões de vetores em milissegundos.&lt;/p>
&lt;p>Exemplos populares: &lt;strong>Pinecone&lt;/strong>, &lt;strong>Weaviate&lt;/strong>, &lt;strong>Chroma&lt;/strong>, &lt;strong>Qdrant&lt;/strong> e &lt;strong>pgvector&lt;/strong> (extensão do PostgreSQL).&lt;/p>
&lt;p>O caso de uso clássico é armazenar chunks de documentos como vetores pesquisáveis, servindo de base para sistemas de RAG.&lt;/p>
&lt;h2 id="rag-retrieval-augmented-generation-dando-contexto-ao-llm">RAG (Retrieval-Augmented Generation): dando contexto ao LLM
&lt;/h2>&lt;p>RAG é a técnica que conecta tudo isso. O fluxo é elegante:&lt;/p>
&lt;ol>
&lt;li>O usuário faz uma pergunta&lt;/li>
&lt;li>A pergunta é convertida em um embedding&lt;/li>
&lt;li>O sistema busca documentos relevantes no vector database&lt;/li>
&lt;li>Esse contexto é injetado no prompt do LLM&lt;/li>
&lt;li>O modelo gera uma resposta baseada tanto no seu treinamento quanto nas informações recuperadas&lt;/li>
&lt;/ol>
&lt;p>O grande benefício do RAG é que o LLM consegue responder com informações &lt;strong>atualizadas e específicas do seu domínio&lt;/strong>, sem precisar ser retreinado. Isso resolve um dos maiores problemas dos modelos de linguagem: o conhecimento limitado à data de corte do treinamento.&lt;/p>
&lt;h2 id="mcp-model-context-protocol-padronizando-o-acesso-a-dados">MCP (Model Context Protocol): padronizando o acesso a dados
&lt;/h2>&lt;p>O &lt;strong>MCP&lt;/strong> (Model Context Protocol) é um protocolo que padroniza como aplicações de IA acessam fontes de dados externas. Em vez de cada integração precisar de código customizado, o MCP oferece interfaces padronizadas para que agentes de IA se conectem a bancos de dados, APIs e ferramentas de forma segura e consistente.&lt;/p>
&lt;p>Enquanto o RAG foca em recuperar informações não-estruturadas para enriquecer prompts, o MCP trata o contexto como &lt;strong>entradas dinâmicas, estruturadas e compostas&lt;/strong>, passadas via um protocolo formal. Na prática, RAG e MCP são complementares: o RAG busca o conhecimento relevante e o MCP padroniza como esse conhecimento (e outras ferramentas) chegam até o modelo.&lt;/p>
&lt;h2 id="mão-na-massa-exemplos-de-código">Mão na massa: exemplos de código
&lt;/h2>&lt;p>&lt;img src="https://www.allysonoliveira.com.br/img/rag-mcp-flow.png"
loading="lazy"
alt="Fluxo RAG com MCP"
>&lt;/p>
&lt;p>&lt;strong>Gerando um embedding com a API da OpenAI:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> openai &lt;span style="color:#f92672">import&lt;/span> OpenAI
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>client &lt;span style="color:#f92672">=&lt;/span> OpenAI()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>response &lt;span style="color:#f92672">=&lt;/span> client&lt;span style="color:#f92672">.&lt;/span>embeddings&lt;span style="color:#f92672">.&lt;/span>create(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> model&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;text-embedding-3-small&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Como funcionam os sistemas modernos de IA?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>vetor &lt;span style="color:#f92672">=&lt;/span> response&lt;span style="color:#f92672">.&lt;/span>data[&lt;span style="color:#ae81ff">0&lt;/span>]&lt;span style="color:#f92672">.&lt;/span>embedding
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print(&lt;span style="color:#e6db74">f&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Dimensões do vetor: &lt;/span>&lt;span style="color:#e6db74">{&lt;/span>len(vetor)&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dimensões do vetor: 1536&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Fazendo uma busca por similaridade com ChromaDB:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> chromadb
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>client &lt;span style="color:#f92672">=&lt;/span> chromadb&lt;span style="color:#f92672">.&lt;/span>Client()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>collection &lt;span style="color:#f92672">=&lt;/span> client&lt;span style="color:#f92672">.&lt;/span>create_collection(&lt;span style="color:#e6db74">&amp;#34;meus_docs&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Inserindo documentos (o Chroma gera os embeddings automaticamente)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>collection&lt;span style="color:#f92672">.&lt;/span>add(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> documents&lt;span style="color:#f92672">=&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;RAG conecta LLMs a bases de conhecimento&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Docker isola aplicações em containers&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Embeddings capturam significado semântico&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ids&lt;span style="color:#f92672">=&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;doc1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;doc2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;doc3&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Buscando por similaridade&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>resultados &lt;span style="color:#f92672">=&lt;/span> collection&lt;span style="color:#f92672">.&lt;/span>query(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> query_texts&lt;span style="color:#f92672">=&lt;/span>[&lt;span style="color:#e6db74">&amp;#34;como dar contexto para uma IA?&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> n_results&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print(resultados[&lt;span style="color:#e6db74">&amp;#34;documents&amp;#34;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># [[&amp;#39;RAG conecta LLMs a bases de conhecimento&amp;#39;,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># &amp;#39;Embeddings capturam significado semântico&amp;#39;]]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note que a busca retornou os documentos semanticamente relevantes, mesmo sem palavras em comum com a query.&lt;/p>
&lt;h2 id="como-tudo-se-conecta">Como tudo se conecta
&lt;/h2>&lt;pre tabindex="0">&lt;code>┌──────────┐ ┌──────────────┐ ┌───────────┐ ┌─────────┐ ┌──────────┐
│ │ │ │ │ │ │ │ │ │
│ Dados ├───►│ Embeddings ├───►│ Vector DB ├───►│ RAG ├───►│ LLM │
│ │ │ │ │ │ │ │ │ │
└──────────┘ └──────────────┘ └───────────┘ └────┬────┘ └─────┬────┘
│ │
┌────▼────┐ │
│ │ │
│ MCP ◄─────────┘
│ │
└────┬────┘
│
┌─────▼──────┐
│ │
│ AI Agent │
│ │
└────────────┘
&lt;/code>&lt;/pre>&lt;p>Resumindo a stack:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Embeddings&lt;/strong> transformam dados em vetores com significado semântico&lt;/li>
&lt;li>&lt;strong>Vector Databases&lt;/strong> armazenam e buscam esses vetores de forma eficiente&lt;/li>
&lt;li>&lt;strong>RAG&lt;/strong> usa essa infraestrutura para dar contexto relevante ao LLM em tempo de consulta&lt;/li>
&lt;li>&lt;strong>MCP&lt;/strong> padroniza a comunicação entre o agente de IA e todas essas fontes de dados e ferramentas&lt;/li>
&lt;li>&lt;strong>AI Agents&lt;/strong> orquestram tudo isso, planejando consultas em múltiplos passos e adaptando a estratégia conforme os resultados&lt;/li>
&lt;/ul>
&lt;h2 id="para-ir-além">Para ir além
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://platform.openai.com/docs/guides/embeddings" target="_blank" rel="noopener"
>OpenAI Embeddings Guide&lt;/a> — documentação oficial sobre embeddings&lt;/li>
&lt;li>&lt;a class="link" href="https://docs.trychroma.com/" target="_blank" rel="noopener"
>ChromaDB&lt;/a> — vector database open-source, ótimo para começar&lt;/li>
&lt;li>&lt;a class="link" href="https://www.pinecone.io/learn/" target="_blank" rel="noopener"
>Pinecone Learning Center&lt;/a> — tutoriais sobre vector databases e busca semântica&lt;/li>
&lt;li>&lt;a class="link" href="https://python.langchain.com/docs/tutorials/rag/" target="_blank" rel="noopener"
>LangChain RAG Tutorial&lt;/a> — tutorial prático de RAG com Python&lt;/li>
&lt;li>&lt;a class="link" href="https://modelcontextprotocol.io/" target="_blank" rel="noopener"
>Model Context Protocol (MCP)&lt;/a> — especificação oficial do protocolo&lt;/li>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=PByDzuOrkek" target="_blank" rel="noopener"
>Vídeo original do ByteMonk&lt;/a> — o vídeo que inspirou este post&lt;/li>
&lt;/ul>
&lt;p>Nos vemos por aí!&lt;/p></description></item></channel></rss>