> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation des fonctions de distance

# Fonctions de distance

{/*AUTOGENERATED_START*/}

<div id="L1Distance">
  ## L1Distance
</div>

Introduit dans : v21.11.0

Calcule la distance entre deux points (les éléments des vecteurs correspondent aux coordonnées) dans l’espace `L1` (norme 1, ou distance en [géométrie de Manhattan](https://en.wikipedia.org/wiki/Taxicab_geometry)).

**Syntaxe**

```sql theme={null}
L1Distance(vector1, vector2)
```

**alias**: `distanceL1`

**Arguments**

* `vector1` — Premier vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la distance selon la norme 1. Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types d’éléments est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, le type de retour suit le type du résultat arithmétique des opérations appliquées élément par élément (les types entiers sont conservés). [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L1Distance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─L1Distance((1, 2), (2, 3))─┐
│                          2 │
└────────────────────────────┘
```

<div id="L1Norm">
  ## L1Norm
</div>

Introduite dans : v21.11.0

Calcule la somme des valeurs absolues des éléments d’un vecteur.

**Syntaxe**

```sql theme={null}
L1Norm(vector)
```

**Alias** : `normL1`

**Arguments**

* `vector` — Vecteur ou tuple de valeurs numériques. [`Array(T)`](/fr/reference/data-types/array) ou [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Renvoie la norme L1 ou la distance de [géométrie de Manhattan](https://en.wikipedia.org/wiki/Taxicab_geometry). [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal`](/fr/reference/data-types/decimal)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L1Norm((1, 2))
```

```response title=Response theme={null}
┌─L1Norm((1, 2))─┐
│              3 │
└────────────────┘
```

<div id="L1Normalize">
  ## L1Normalize
</div>

Introduit dans : v21.11.0

Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple sont les coordonnées) dans l’espace `L1` ([géométrie de Manhattan](https://en.wikipedia.org/wiki/Taxicab_geometry)).

**Syntaxe**

```sql theme={null}
L1Normalize(tuple)
```

**Alias** : `normalizeL1`

**Arguments**

* `tuple` — Un tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Renvoie le vecteur unitaire. [`Tuple(Float64)`](/fr/reference/data-types/tuple)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L1Normalize((1, 2))
```

```response title=Response theme={null}
┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘
```

<div id="L2Distance">
  ## L2Distance
</div>

Introduit dans : v21.11.0

Calcule la distance entre deux points (les éléments des vecteurs correspondent aux coordonnées) dans l’espace euclidien ([distance euclidienne](https://en.wikipedia.org/wiki/Euclidean_distance)).

**Syntaxe**

```sql theme={null}
L2Distance(vector1, vector2)
```

**Alias** : `distanceL2`

**Arguments**

* `vector1` — Premier vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la distance de norme 2. Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types des éléments est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, renvoie toujours `Float64`. [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L2Distance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─L2Distance((1, 2), (2, 3))─┐
│         1.4142135623730951 │
└────────────────────────────┘
```

<div id="L2DistanceTransposed">
  ## L2DistanceTransposed
</div>

Introduit dans : v25.10.0

Calcule la distance approximative entre deux points (les valeurs des vecteurs correspondent aux coordonnées) dans l’espace euclidien ([distance euclidienne](https://en.wikipedia.org/wiki/Euclidean_distance)).

**Syntaxe**

```sql theme={null}
L2DistanceTransposed(vector1, vector2, p)
```

**Alias** : `distanceL2Transposed`

**Arguments**

* `vectors` — Vecteurs. [`QBit(T, UInt64)`](/fr/reference/data-types/qbit)
* `reference` — Vecteur de référence. [`Array(T)`](/fr/reference/data-types/array)
* `p` — Nombre de bits de chaque élément du vecteur à utiliser pour le calcul de la distance (de 1 à la largeur en bits de l’élément). Le niveau de quantification détermine le compromis entre précision et vitesse. Utiliser moins de bits accélère les E/S et les calculs, au prix d’une précision moindre, tandis qu’en utiliser davantage améliore la précision au détriment des performances. [`UInt`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une distance de norme 2 approximative. Renvoie toujours `Float64`. [`Float64`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
CREATE TABLE qbit (id UInt32, vec QBit(Float64, 2)) ENGINE = Memory;
INSERT INTO qbit VALUES (1, [0, 1]);
SELECT L2DistanceTransposed(vec, array(1, 2), 16) FROM qbit;
```

```response title=Response theme={null}
┌─L2DistanceTransposed([0, 1], [1, 2], 16)─┐
│                       1.4142135623730951 │
└──────────────────────────────────────────┘
```

<div id="L2Norm">
  ## L2Norm
</div>

Introduit dans : v21.11.0

Calcule la racine carrée de la somme des carrés des éléments du vecteur.

**Syntaxe**

```sql theme={null}
L2Norm(vector)
```

**alias** : `normL2`

**Arguments**

* `vector` — Vecteur ou tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la norme L2 ou la [distance euclidienne](https://en.wikipedia.org/wiki/Euclidean_distance). [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L2Norm((1, 2))
```

```response title=Response theme={null}
┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘
```

<div id="L2Normalize">
  ## L2Normalize
</div>

Introduit dans : v21.11.0

Calcule le vecteur unitaire du vecteur donné (les éléments du tuple en sont les coordonnées) dans l’espace euclidien (à l’aide de la [distance euclidienne](https://en.wikipedia.org/wiki/Euclidean_distance)).

**Syntaxe**

```sql theme={null}
L2Normalize(tuple)
```

**Alias** : `normalizeL2`

**Arguments**

* `tuple` — Un tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Renvoie le vecteur unitaire. [`Tuple(Float64)`](/fr/reference/data-types/tuple)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L2Normalize((3, 4))
```

```response title=Response theme={null}
┌─L2Normalize((3, 4))─┐
│ (0.6,0.8)           │
└─────────────────────┘
```

<div id="L2SquaredDistance">
  ## L2SquaredDistance
</div>

Introduit dans : v22.7.0

Calcule la somme des carrés des écarts entre les éléments correspondants de deux vecteurs.

**Syntaxe**

```sql theme={null}
L2SquaredDistance(vector1, vector2)
```

**Alias** : `distanceL2Squared`

**Arguments**

* `vector1` — Premier vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la somme des carrés des différences entre les éléments correspondants de deux vecteurs. Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types d’éléments est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, le type de retour suit le type de résultat arithmétique des opérations élément par élément (les types entiers sont conservés). [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])
```

```response title=Response theme={null}
┌─L2SquaredDis⋯ [0, 0, 0])─┐
│                       14 │
└──────────────────────────┘
```

<div id="L2SquaredNorm">
  ## L2SquaredNorm
</div>

Introduit dans : v22.7.0

Calcule le carré de la norme L2 du vecteur (la [`L2Norm`](#L2Norm)).

**Syntaxe**

```sql theme={null}
L2SquaredNorm(vector)
```

**Alias** : `normL2Squared`

**Arguments**

* `vector` — Vecteur ou tuple de valeurs numériques. [`Array(T)`](/fr/reference/data-types/array) ou [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Carré de la norme L2. [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal`](/fr/reference/data-types/decimal)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT L2SquaredNorm((1, 2))
```

```response title=Response theme={null}
┌─L2SquaredNorm((1, 2))─┐
│                     5 │
└───────────────────────┘
```

<div id="LinfDistance">
  ## LinfDistance
</div>

Introduit dans : v21.11.0

Calcule la distance entre deux points (les éléments des vecteurs correspondant aux coordonnées) dans l’espace `L_{inf}` ([norme maximale](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))).

**Syntaxe**

```sql theme={null}
LinfDistance(vector1, vector2)
```

**Alias** : `distanceLinf`

**Arguments**

* `vector1` — Premier vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la distance selon la norme infinie. Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types d’élément est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, renvoie toujours `Float64`. [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT LinfDistance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─LinfDistance((1, 2), (2, 3))─┐
│                            1 │
└──────────────────────────────┘
```

<div id="LinfNorm">
  ## LinfNorm
</div>

Introduit dans : v21.11.0

Calcule la plus grande valeur absolue des éléments d’un vecteur.

**Syntaxe**

```sql theme={null}
LinfNorm(vector)
```

**Alias** : `normLinf`

**Arguments**

* `vector` — Vecteur ou tuple de valeurs numériques. [`Array(T)`](/fr/reference/data-types/array) ou [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Renvoie la norme Linf, c’est-à-dire la valeur absolue maximale. [`Float64`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT LinfNorm((1, -2))
```

```response title=Response theme={null}
┌─LinfNorm((1, -2))─┐
│                 2 │
└───────────────────┘
```

<div id="LinfNormalize">
  ## LinfNormalize
</div>

Introduit dans : v21.11.0

Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple en sont les coordonnées) dans l’espace `L_{inf}` (à l’aide de la [norme maximale](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))).

**Syntaxe**

```sql theme={null}
LinfNormalize(tuple)
```

**Alias** : `normalizeLinf`

**Arguments**

* `tuple` — Un tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple)

**Valeur renvoyée**

Renvoie le vecteur unitaire. [`Tuple(Float64)`](/fr/reference/data-types/tuple)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT LinfNormalize((3, 4))
```

```response title=Response theme={null}
┌─LinfNormalize((3, 4))─┐
│ (0.75,1)              │
└───────────────────────┘
```

<div id="LpDistance">
  ## LpDistance
</div>

Introduit dans : v21.11.0

Calcule la distance entre deux points (les éléments des vecteurs sont les coordonnées) dans l’espace `Lp` ([distance de p-norme](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)).

**Syntaxe**

```sql theme={null}
LpDistance(vector1, vector2, p)
```

**Alias** : `distanceLp`

**Arguments**

* `vector1` — Premier vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième vecteur. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `p` — La puissance. **Valeurs possibles** : nombre réel compris dans `[1; inf)`. [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoie la distance selon la norme p. Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types des éléments est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, renvoie toujours `Float64`. [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT LpDistance((1, 2), (2, 3), 3)
```

```response title=Response theme={null}
┌─LpDistance((1, 2), (2, 3), 3)─┐
│            1.2599210498948732 │
└───────────────────────────────┘
```

<div id="LpNorm">
  ## LpNorm
</div>

Introduit dans : v21.11.0

Calcule la p-norme d'un vecteur, c'est-à-dire la racine p-ième de la somme des puissances p-ièmes des valeurs absolues de ses éléments.

Cas particuliers :

* Quand p=1, elle est équivalente à L1Norm (distance de Manhattan).
* Quand p=2, elle est équivalente à L2Norm (distance euclidienne).
* Quand p=∞, elle est équivalente à LinfNorm (norme maximale).

**Syntaxe**

```sql theme={null}
LpNorm(vector, p)
```

**Alias** : `normLp`

**Arguments**

* `vector` — Vecteur ou tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `p` — La puissance. Les valeurs possibles sont des nombres réels dans l’intervalle `[1; inf)`. [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoie la [norme Lp](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm). [`Float64`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT LpNorm((1, -2), 2)
```

```response title=Response theme={null}
┌─LpNorm((1, -2), 2)─┐
│   2.23606797749979 │
└────────────────────┘
```

<div id="LpNormalize">
  ## LpNormalize
</div>

Introduit dans : v21.11.0

Calcule le vecteur unitaire d’un vecteur donné (les éléments du Tuple sont les coordonnées) dans l’espace `Lp` (à l’aide de la [p-norme](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)).

**Syntaxe**

```sql theme={null}
LpNormalize(tuple, p)
```

**Alias** : `normalizeLp`

**Arguments**

* `tuple` — Un tuple de valeurs numériques. [`Tuple(T)`](/fr/reference/data-types/tuple)
* `p` — L’exposant. Les valeurs possibles sont tous les nombres de l’intervalle `[1; inf)`. [`UInt*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoie le vecteur unitaire. [`Tuple(Float64)`](/fr/reference/data-types/tuple)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT LpNormalize((3, 4), 5)
```

```response title=Response theme={null}
┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘
```

<div id="cosineDistance">
  ## cosineDistance
</div>

Introduit dans : v21.11.0

Calcule la [distance cosinus](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) entre deux vecteurs (les éléments des tuples correspondent aux coordonnées). Plus la valeur renvoyée est faible, plus les vecteurs sont similaires.

**Syntaxe**

```sql theme={null}
cosineDistance(vector1, vector2)
```

**Alias** : `distanceCosine`

**Arguments**

* `vector1` — Premier tuple. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)
* `vector2` — Deuxième tuple. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie la distance cosinus (un moins la similarité cosinus). Pour les entrées `Array`, renvoie `Float32` si le plus petit supertype commun des types des éléments est `Float32` ou `BFloat16`, sinon `Float64`. Pour les entrées `Tuple`, renvoie toujours `Float64`. [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT cosineDistance((1, 2), (2, 3));
```

```response title=Response theme={null}
┌─cosineDistance((1, 2), (2, 3))─┐
│           0.007722123286332261 │
└────────────────────────────────┘
```

<div id="cosineDistanceTransposed">
  ## cosineDistanceTransposed
</div>

Introduit dans : v26.1.0

Calcule la [distance cosinus](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) approximative entre deux points (les valeurs des vecteurs correspondent aux coordonnées). Plus la valeur renvoyée est faible, plus les vecteurs sont similaires.

**Syntaxe**

```sql theme={null}
cosineDistanceTransposed(vector1, vector2, p)
```

**Alias** : `distanceCosineTransposed`

**Arguments**

* `vectors` — Vecteurs. [`QBit(T, UInt64)`](/fr/reference/data-types/qbit)
* `reference` — Vecteur de référence. [`Array(T)`](/fr/reference/data-types/array)
* `p` — Nombre de bits de chaque élément du vecteur à utiliser pour le calcul de la distance (de 1 à la largeur en bits de l’élément). Le niveau de quantification détermine le compromis entre précision et vitesse. Utiliser moins de bits accélère les opérations d’I/O et les calculs, au prix d’une précision réduite, tandis qu’utiliser davantage de bits améliore la précision au détriment des performances. [`UInt`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie la distance cosinus approchée (un moins la similarité cosinus). Renvoie toujours un Float64. [`Float64`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
CREATE TABLE qbit (id UInt32, vec QBit(Float64, 2)) ENGINE = Memory;
INSERT INTO qbit VALUES (1, [0, 1]);
SELECT cosineDistanceTransposed(vec, array(1, 2), 16) FROM qbit;
```

```response title=Response theme={null}
┌─cosineDistanceTransposed([0, 1], [1, 2], 16)─┐
│                          0.10557281085638826 │
└──────────────────────────────────────────────┘
```
