Escolhendo métricas de distância no pgvector
Entenda os operadores de distância cosseno, L2 e produto interno no pgvector e como escolher o mais adequado para seus embeddings.
Escolhendo métricas de distância no pgvector é uma aula grátis de Vector Databases: Pinecone, Weaviate & pgvector 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 Vector Databases: Pinecone, Weaviate & pgvector, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Distance Matters
Similarity search ranks vectors by distance. The metric you choose must match how your embedding model was trained, or results will be subtly wrong.
The Three Operators
pgvector provides three distance operators:
<->Euclidean (L2) distance<=>Cosine distance<#>Negative inner product
SELECT '[1,2,3]'::vector <=> '[1,2,4]'::vector AS cosine_distance;Cosine Distance
Cosine measures angle, ignoring magnitude. It is the default for most text embedding models like OpenAI and Sentence Transformers.
SELECT id, embedding <=> '[0.1,0.2,0.3]'::vector AS dist
FROM items
ORDER BY dist
LIMIT 5;Euclidean (L2) Distance
L2 measures straight-line distance and is sensitive to magnitude. Use it when vector length carries meaning, such as raw feature vectors.
SELECT id, embedding <-> '[0.1,0.2,0.3]'::vector AS dist
FROM items
ORDER BY dist
LIMIT 5;Inner Product
The inner product operator <#> returns the negative dot product (so smaller is more similar). It is fastest and ideal for normalized vectors.
SELECT id, (embedding <#> '[0.1,0.2,0.3]'::vector) * -1 AS similarity
FROM items
ORDER BY embedding <#> '[0.1,0.2,0.3]'::vector
LIMIT 5;Match Metric to Model
Always check your embedding model's documentation:
- OpenAI text-embedding-3: cosine
- Normalized vectors: inner product (equivalent to cosine, faster)
- Geometric/spatial features: L2
Normalization Trick
If your vectors are unit-normalized, cosine and inner product give the same ranking. Inner product is cheaper, so normalize once at insert time.
-- Normalize before insert in app code, then use <#>
UPDATE items SET embedding = l2_normalize(embedding);Metric in Indexes
Indexes are metric-specific. You must declare the operator class so the index matches your query operator.
CREATE INDEX ON items
USING hnsw (embedding vector_cosine_ops);Mismatched Operators
If your index uses vector_l2_ops but you query with <=>, Postgres ignores the index and does a slow sequential scan. Keep them aligned.
Verifying Index Usage
Use EXPLAIN to confirm the planner uses your vector index for the chosen metric.
EXPLAIN ANALYZE
SELECT id FROM items
ORDER BY embedding <=> '[0.1,0.2,0.3]'::vector
LIMIT 5;Summary of Choices
Rule of thumb:
- Text/semantic search: cosine
- Pre-normalized vectors: inner product
- Raw numeric features: L2
Quick Check
Pick the right metric.
Recap
You learned pgvector's three distance operators, when to use cosine, L2, and inner product, and why your index operator class must match your query operator for fast searches.
Aprenda Vector Databases: Pinecone, Weaviate & pgvector com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 12
- Aulas
- 48
Perguntas Frequentes
A aula “Escolhendo métricas de distância no pgvector” é grátis?
Sim — o texto completo de “Escolhendo métricas de distância no 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 Vector Databases: Pinecone, Weaviate & pgvector, atualize para CoddyKit PRO. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.
O que vou aprender em “Escolhendo métricas de distância no pgvector”?
Entenda os operadores de distância cosseno, L2 e produto interno no pgvector e como escolher o mais adequado para seus embeddings. Você pratica Vector Databases: Pinecone, Weaviate & pgvector 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 Vector Databases: Pinecone, Weaviate & pgvector?
Nenhuma experiência prévia é necessária. Vector Databases: Pinecone, Weaviate & pgvector 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 “Escolhendo métricas de distância no 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 Vector Databases: Pinecone, Weaviate & pgvector?
Sim. Cada aula de Vector Databases: Pinecone, Weaviate & pgvector 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
- Configurando a Extensão pgvector
- Armazenando Vetores no PostgreSQL
- Executando Consultas de Similaridade
- Escolhendo métricas de distância no pgvector