📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

L2_DISTANCE



2 つのベクトル間のユークリッド(L2)距離を計算し、ベクトル空間におけるそれらの直線距離を測定します。

構文

L2_DISTANCE(vector1, vector2)

引数

  • vector1: 1 つ目のベクトル(VECTOR データ型)
  • vector2: 2 つ目のベクトル(VECTOR データ型)

戻り値

2 つのベクトル間のユークリッド(L2)距離を表す FLOAT 値を返します。この値は常に非負です。

  • 0: 同一のベクトル
  • より大きい値: より離れているベクトル

説明

L2 距離はユークリッド距離とも呼ばれ、ユークリッド空間における 2 点間の直線距離を測定します。これは、ベクトル類似度検索や機械学習アプリケーションで最も一般的に使用される指標の 1 つです。

この関数は次の処理を行います。

  1. 2 つの入力ベクトルの長さが同じであることを検証する
  2. 対応する要素間の差の二乗和を計算する
  3. その合計の平方根を返す

実装されている数式は次のとおりです。

L2_distance(v1, v2) = √(Σ(v1ᵢ - v2ᵢ)²)

ここで、v1ᵢ と v2ᵢ は入力ベクトルの要素です。

例

基本的な使用方法

-- Calculate L2 distance between two vectors SELECT L2_DISTANCE([1.0, 2.0, 3.0]::vector(3), [4.0, 5.0, 6.0]::vector(3)) AS distance;

結果:

╭──────────╮ │ distance │ ├──────────┤ │ 5.196152 │ ╰──────────╯

ベクトルデータを含むテーブルを作成します。

CREATE OR REPLACE TABLE vectors ( id INT, vec VECTOR(3) ); INSERT INTO vectors VALUES (1, [1.0000, 2.0000, 3.0000]), (2, [1.0000, 2.2000, 3.0000]), (3, [4.0000, 5.0000, 6.0000]);

L2 距離を使用して [1, 2, 3] に最も近いベクトルを見つけます。

SELECT id, vec, L2_DISTANCE(vec, [1.0000, 2.0000, 3.0000]::VECTOR(3)) AS distance FROM vectors ORDER BY distance ASC;
╭─────────────────────────────╮ │ id │ vec │ distance │ ├────┼───────────┼────────────┤ │ 1 │ [1,2,3] │ 0 │ │ 2 │ [1,2.2,3] │ 0.20000005 │ │ 3 │ [4,5,6] │ 5.196152 │ ╰─────────────────────────────╯

このページは役に立ちましたか?