AULA 54
MÓDULO 7
banco de dados
⏱ 55 min
Banco de Dados Vetorial
Embeddings e busca por similaridade. pgvector: vetorial no PostgreSQL. RAG em APIs com Node.js + OpenAI.
vetorialembeddingpgvectorRAGsimilaridadeOpenAIbusca semântica
Banco de Dados Vetorial
Bancos vetoriais armazenam embeddings — representações numéricas de alta dimensão de texto, imagens ou áudio. A busca é por similaridade (distância) em vez de igualdade exata.
por que vetorial?
Busca semântica: 'carro' encontra 'automóvel' e 'veículo'. Recomendação: usuários similares. RAG: buscar documentos relevantes para completar o contexto de um LLM.SQL tradicional
WHERE title LIKE '%machine learning%'
Não encontra: "ML", "aprendizado de máquina", "IA"
Não encontra: "ML", "aprendizado de máquina", "IA"
Busca vetorial
SELECT * FROM docs ORDER BY
embedding <=> query_vector LIMIT 5
Encontra semanticamente similares
embedding <=> query_vector LIMIT 5
Encontra semanticamente similares
pgvector — vetorial no PostgreSQL
pgvector é uma extensão do PostgreSQL que adiciona o tipo vector e índices de similaridade. Você mantém um banco só — SQL + vetorial juntos.
RAG em APIs
Receba pergunta do usuário → gere embedding → busque docs similares no pgvector → envie docs + pergunta para o LLM → retorne resposta fundamentada nos documentos.
javascript
-- pgvector — busca semântica em PostgreSQL CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE documents ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), title TEXT NOT NULL, content TEXT NOT NULL, embedding vector(1536) -- dimensão do OpenAI text-embedding-3-small ); CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100); -- Node.js: gerar embedding e buscar const generateEmbedding = async (text) => { const res = await openai.embeddings.create({ model: 'text-embedding-3-small', input: text }) return res.data[0].embedding } app.post('/search', async (req, res) => { const queryVector = await generateEmbedding(req.body.query) const docs = await db.query(` SELECT id, title, content, 1 - (embedding <=> $1) AS similarity FROM documents ORDER BY embedding <=> $1 LIMIT 5 `, [JSON.stringify(queryVector)]) res.json(docs.rows) })
quiz · aula 54
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
O que é um embedding?
QUESTÃO 02
Qual é a principal diferença entre busca SQL (LIKE) e busca vetorial?
QUESTÃO 03
O que é RAG?
0/3