Выбор метрик расстояния в pgvector
Разберитесь в операторах косинусного расстояния, расстояния L2 и скалярного произведения в pgvector и научитесь выбирать подходящий вариант для своих эмбеддингов.
«Выбор метрик расстояния в pgvector» — бесплатный урок Vector Databases: Pinecone, Weaviate & pgvector на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Vector Databases: Pinecone, Weaviate & pgvector, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Vector Databases: Pinecone, Weaviate & pgvector содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
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.
Часто задаваемые вопросы
Урок «Выбор метрик расстояния в pgvector» бесплатный?
Да — полный текст урока «Выбор метрик расстояния в pgvector» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Vector Databases: Pinecone, Weaviate & pgvector, подпишись на CoddyKit PRO. Курс Vector Databases: Pinecone, Weaviate & pgvector содержит 4 уроков всего.
Чему я научусь в уроке «Выбор метрик расстояния в pgvector»?
Разберитесь в операторах косинусного расстояния, расстояния L2 и скалярного произведения в pgvector и научитесь выбирать подходящий вариант для своих эмбеддингов. Ты практикуешь Vector Databases: Pinecone, Weaviate & pgvector с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Vector Databases: Pinecone, Weaviate & pgvector?
Предыдущий опыт не требуется. Vector Databases: Pinecone, Weaviate & pgvector на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Выбор метрик расстояния в pgvector»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Vector Databases: Pinecone, Weaviate & pgvector?
Да. Каждый урок Vector Databases: Pinecone, Weaviate & pgvector включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка расширения pgvector
- Хранение векторов в PostgreSQL
- Выполнение запросов сходства
- Выбор метрик расстояния в pgvector