0Pricing
AI Agents · 课时

选择距离指标(余弦、L2、点积)

了解何时选择余弦距离、L2(欧几里得)距离或点积距离,以及大多数嵌入模型为何偏好余弦距离。

选择距离指标(余弦、L2、点积) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

三种常见度量

向量数据库允许您选择距离度量。最常见的三种是:

  • 余弦相似度 —— 向量之间的夹角
  • 点积 —— 一个向量在另一个向量上的投影
  • 欧几里得距离(L2) —— 直线距离

余弦

范围:-1 到 1。数值越高,越相似。

import numpy as np
def cosine(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

点积

范围:从负无穷到正无穷。数值越高,越相似。

def dot(a, b):
    return np.dot(a, b)

# Equivalent to cosine when both vectors are unit-normalized.

欧几里得距离(L2)

范围:0 到正无穷。数值越低,越相似。

def l2(a, b):
    return np.linalg.norm(np.array(a) - np.array(b))

应该使用哪一种?

对于文本嵌入,通常约定如下:

  • OpenAI text-embedding-3 —— cosine(向量已预先归一化)
  • Cohere —— cosine
  • 句子转换器 / BGE —— 通常使用 cosine,请查看模型卡片

如果不确定,请使用 cosine。

归一化后点积等于余弦

如果 |a| = |b| = 1,那么 cos(a,b) = a . b。点积更快(无需除法)——生产系统通常会对预先归一化的向量使用 dot。

何时使用 L2

一些研究模型(较旧的 Sentence-BERT 变体、图像嵌入)使用 L2 距离进行训练,使用该距离时表现更好。请始终查看模型卡片。

为什么这对索引很重要

索引结构(HNSW、IVF、FAISS)是针对 SPECIFIC 度量构建的。建立索引后更改度量,通常意味着从头重建索引。

Setting Metric in Pinecone

from pinecone import ServerlessSpec
pc.create_index(
    name='docs',
    dimension=1536,
    metric='cosine',   # or 'dotproduct' or 'euclidean'
    spec=ServerlessSpec(cloud='aws', region='us-east-1')
)

Setting Metric in Qdrant

from qdrant_client.models import VectorParams, Distance
client.create_collection(
    collection_name='docs',
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)

系统之间的度量不一致

如果之后使用交叉编码器重新排序,它会有自己的分数尺度。请先进行归一化,不要将不同度量混入单个复合分数中。

可视化差异

对于两个单位向量:

  • cos = 1,L2 = 0 -> 相同
  • cos = 0.5,L2 ~ 1 -> 相关
  • cos = 0,L2 ~ sqrt(2) -> 正交
  • cos = -1,L2 = 2 -> 相反

预先归一化一次

在摄取时进行归一化成本很低(只需一次除法)。这样可以锁定与 cosine / dot 的兼容性,并避免之后对每个 query 进行归一化。

vec = vec / np.linalg.norm(vec)

默认度量

对于 OpenAI 文本嵌入,默认使用哪种距离度量?

回顾

文本使用 cosine。预先归一化一次,使用点积提升速度。在创建索引时设置度量——之后更改意味着重建索引。

常见问题解答

「选择距离指标(余弦、L2、点积)」课时是免费的吗?

是的 — 「选择距离指标(余弦、L2、点积)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「选择距离指标(余弦、L2、点积)」这节课中我会学到什么?

了解何时选择余弦距离、L2(欧几里得)距离或点积距离,以及大多数嵌入模型为何偏好余弦距离。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「选择距离指标(余弦、L2、点积)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Pinecone、Weaviate、Qdrant:对比
  2. 混合搜索的元数据筛选
  3. 更新和删除向量
  4. 选择距离指标(余弦、L2、点积)
← 返回 AI Agents