0Pricing
SQL Academy · Aula

Busca vetorial com pgvector

Use a extensão pgvector para armazenar embeddings e executar buscas aproximadas pelos vizinhos mais próximos com ivfflat / HNSW.

Busca vetorial com pgvector é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Para que servem os vetores?

Embeddings codificam significado. Dois documentos sobre o mesmo tema têm vetores semelhantes. A pesquisa vetorial possibilita a pesquisa semântica, RAG (geração aumentada por recuperação) e recomendações.

Ativar o pgvector

A extensão está amplamente disponível (RDS, Cloud SQL e Supabase já a incluem):

CREATE EXTENSION vector;

Coluna vetorial

Definir uma coluna com a dimensionalidade do seu modelo de embedding:

CREATE TABLE docs (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  embedding vector(1536)
);

-- 1536 is OpenAI text-embedding-3-small dimension; varies by model.

Inserir embeddings

Inserir o vetor como um literal de matriz:

INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');

Operadores de distância

O pgvector oferece três:

  • <-> — distância euclidiana (L2)
  • <#> — produto interno negativo
  • <=> — distância de cosseno (a mais comum para embeddings)

Pesquisa pelo vizinho mais próximo

Encontrar os documentos mais próximos de um vetor de consulta:

SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;

Índice IVFFlat

Para grandes conjuntos de dados, criar um índice aproximado de vizinhos mais próximos (ANN):

CREATE INDEX docs_embedding_idx
  ON docs USING IVFFLAT (embedding vector_cosine_ops)
  WITH (lists = 100);

-- Tune lists by row count: rule of thumb sqrt(N).
-- Set probes per query for accuracy:
SET ivfflat.probes = 10;

Índice HNSW (PG 16+)

Em muitos casos, oferece melhor revocação e latência do que o IVFFlat:

CREATE INDEX docs_embedding_hnsw
  ON docs USING HNSW (embedding vector_cosine_ops);

SET hnsw.ef_search = 100;

Pesquisa vetorial filtrada

Combinar filtros vetoriais e estruturados:

SELECT id, title
FROM docs
WHERE language = 'en'
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY embedding <=> $1
LIMIT 10;
-- For best perf, partial index on the filter.

Padrão RAG

Recuperar N documentos relevantes por embedding e fornecê-los como contexto a um LLM:

-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to user

Pesquisa híbrida

Combinar pesquisa vetorial e lexical (tsvector) para obter os melhores resultados — nenhuma das duas, sozinha, encontra tudo:

SELECT id, title,
  0.6 * (1 - (embedding <=> $1)) + 0.4 * ts_rank(search_doc, $2) AS score
FROM docs
WHERE embedding <=> $1 < 0.7
   OR search_doc @@ $2
ORDER BY score DESC LIMIT 10;

Escolha da dimensionalidade

Embeddings maiores são mais precisos, mas exigem mais armazenamento e são mais lentos. Muitos aplicativos funcionam bem com modelos de 384 a 768 dimensões. Escolha um modelo e mantenha-o.

Recapitulação

O pgvector adiciona pesquisa vetorial de primeira classe ao Postgres.

  • Tipo de coluna vector(N)
  • Índices IVFFlat/HNSW
  • Distância de cosseno por meio de <=> para embeddings
  • Combinação com FTS para obter a melhor revocação

Verificação rápida

Você está pesquisando por similaridade semântica usando embeddings da OpenAI. Qual operador de distância do pgvector costuma usar?

Perguntas Frequentes

A aula “Busca vetorial com pgvector” é grátis?

Sim — o texto completo de “Busca vetorial com pgvector” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Busca vetorial com pgvector”?

Use a extensão pgvector para armazenar embeddings e executar buscas aproximadas pelos vizinhos mais próximos com ivfflat / HNSW. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Busca vetorial com pgvector”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Busca por trigramas (pg_trgm) para correspondência aproximada
  2. Busca de texto completo com tsvector e GIN
  3. Indexação geoespacial com PostGIS
  4. Busca vetorial com pgvector
← Voltar para SQL Academy