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

> توثيق دوال المسافة

# دوال المسافة

{/*AUTOGENERATED_START*/}

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

أُضيف في: v21.11.0

يحسب المسافة بين نقطتين (حيث تمثل عناصر المتجهات الإحداثيات) في فضاء `L1` (المعيار 1 (مسافة [هندسة مانهاتن](https://en.wikipedia.org/wiki/Taxicab_geometry))).

**البنية**

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

**الأسماء البديلة**: `distanceL1`

**الوسائط**

* `vector1` — المتجه الأول. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — المتجه الثاني. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المعادة**

يعيد مسافة معيار L1. بالنسبة إلى مدخلات `Array`، يعيد `Float32` إذا كان النوع الفائق المشترك الأدنى لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فيعيد `Float64`. أما بالنسبة إلى مدخلات `Tuple`، فإن نوع الإرجاع يتبع نوع الناتج الحسابي للعمليات على مستوى العناصر (مع الحفاظ على أنواع الأعداد الصحيحة). [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في: v21.11.0

تحسب مجموع القيم المطلقة لعناصر المتجه.

**الصيغة**

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

**الأسماء البديلة**: `normL1`

**الوسيطات**

* `vector` — متجه أو `Tuple` من القيم الرقمية. [`Array(T)`](/ar/reference/data-types/array) أو [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المُعادة**

تُرجع معيار L1 أو مسافة [هندسة مانهاتن](https://en.wikipedia.org/wiki/Taxicab_geometry). [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

**أمثلة**

**الاستخدام الأساسي**

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

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

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

أُضيفت في: v21.11.0

تحسب متجه الوحدة لمتجه معيّن (عناصر الـ Tuple هي الإحداثيات) في فضاء `L1` ([هندسة مانهاتن](https://en.wikipedia.org/wiki/Taxicab_geometry)).

**البنية**

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

**الأسماء المستعارة**: `normalizeL1`

**الوسائط**

* `tuple` — Tuple من القيم العددية. [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المُعادة**

تُرجع متجه الوحدة. [`Tuple(Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في: v21.11.0

تحسب المسافة بين نقطتين (تمثل عناصر المتجهات الإحداثيات) في الفضاء الإقليدي ([المسافة الإقليدية](https://en.wikipedia.org/wiki/Euclidean_distance)).

**الصيغة**

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

**الأسماء المستعارة**: `distanceL2`

**الوسائط**

* `vector1` — المتجه الأول. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — المتجه الثاني. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المُعادة**

تُرجع مسافة معيار L2. بالنسبة إلى مدخلات `Array`، تُرجع `Float32` إذا كان النوع الفائق المشترك الأدنى لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فتُرجع `Float64`. أما بالنسبة إلى مدخلات `Tuple`، فتُرجع دائمًا `Float64`. [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيف في: v25.10.0

يحسب المسافة التقريبية بين نقطتين (تمثل قيم المتجهات الإحداثيات) في الفضاء الإقليدي ([المسافة الإقليدية](https://en.wikipedia.org/wiki/Euclidean_distance)).

**الصيغة**

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

**الأسماء البديلة**: `distanceL2Transposed`

**المعاملات**

* `vectors` — المتجهات. [`QBit(T, UInt64)`](/ar/reference/data-types/qbit)
* `reference` — المتجه المرجعي. [`Array(T)`](/ar/reference/data-types/array)
* `p` — عدد البِتّات من كل عنصر في المتجه التي ستُستخدم في حساب المسافة (من 1 إلى عرض البِتّ للعنصر). يتحكم مستوى التكميم في المفاضلة بين الدقة والسرعة. يؤدّي استخدام عدد أقل من البِتّات إلى تسريع عمليات IO والحسابات مع تقليل الدقة، بينما يؤدّي استخدام عدد أكبر من البِتّات إلى زيادة الدقة على حساب الأداء. [`UInt`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

يعيد المسافة التقريبية لمعيار 2. ويُرجع دائمًا `Float64`. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

تم تقديمها في: v21.11.0

تحسب الجذر التربيعي لمجموع مربعات عناصر المتجه.

**الصيغة**

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

**الأسماء البديلة**: `normL2`

**المعاملات**

* `vector` — متجه أو Tuple من القيم العددية. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المُعادة**

تُرجع معيار L2 أو [المسافة الإقليدية](https://en.wikipedia.org/wiki/Euclidean_distance). [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

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

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

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

قُدِّمت في: v21.11.0

يحسب متجه الوحدة لمتجه معيّن (عناصر الـ Tuple هي الإحداثيات) في الفضاء الإقليدي (باستخدام [المسافة الإقليدية](https://en.wikipedia.org/wiki/Euclidean_distance)).

**الصيغة**

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

**الأسماء البديلة**: `normalizeL2`

**الوسيطات**

* `tuple` — قيمة من النوع Tuple تتألف من قيم رقمية. [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المعادة**

يعيد متجه الوحدة. [`Tuple(Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**الاستخدام الأساسي**

```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>

قُدِّم في: v22.7.0

يحسب مجموع مربعات الفروق بين العناصر المناظرة في متجهين.

**البنية**

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

**الأسماء البديلة**: `distanceL2Squared`

**الوسيطات**

* `vector1` — المتجه الأول. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — المتجه الثاني. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المعادة**

تعيد مجموع مربعات الفروق بين العناصر المناظرة في متجهين. بالنسبة إلى مُدخلات `Array`، يكون نوع الإرجاع `Float32` إذا كان النوع الشامل المشترك الأدنى لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فيكون `Float64`. أما بالنسبة إلى مُدخلات `Tuple`، فيتبع نوع الإرجاع نوع النتيجة الحسابية للعمليات على مستوى العناصر (مع الاحتفاظ بالأنواع الصحيحة). [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

قُدِّمت في: v22.7.0

تحسب مربع الجذر التربيعي لمجموع مربعات عناصر المتجه (أي [`L2Norm`](#L2Norm)).

**البنية**

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

**الأسماء المستعارة**: `normL2Squared`

**الوسيطات**

* `vector` — متجه أو Tuple من القيم العددية. [`Array(T)`](/ar/reference/data-types/array) أو [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المعادة**

يعيد مربع معيار L2. [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

**أمثلة**

**الاستخدام الأساسي**

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

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

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

أُضيفت في: v21.11.0

تحسب المسافة بين نقطتين (تمثل عناصر المتجهات الإحداثيات) في الفضاء `L_{inf}` ([المعيار الأعظمي](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))).

**الصيغة**

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

**الأسماء البديلة**: `distanceLinf`

**الوسائط**

* `vector1` — المتجه الأول. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — المتجه الثاني. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المعادة**

تعيد مسافة معيار اللانهاية. بالنسبة إلى مُدخلات `Array`، تُعيد `Float32` إذا كان النوع الأعلى المشترك الأدنى لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فتُعيد `Float64`. أما بالنسبة إلى مُدخلات `Tuple`، فتُعيد دائمًا `Float64`. [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في الإصدار: v21.11.0

يحسب أكبر قيمة مطلقة بين عناصر المتجه.

**البنية**

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

**الأسماء البديلة**: `normLinf`

**الوسيطات**

* `vector` — متجه أو Tuple من القيم الرقمية. [`Array(T)`](/ar/reference/data-types/array) أو [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المُعادة**

تُرجِع معيار Linf أو أكبر قيمة مطلقة. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

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

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

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

أُضيفت في: v21.11.0

تحسب متجه الوحدة لمتجه معيّن (عناصر الـ Tuple هي الإحداثيات) في فضاء `L_{inf}` (باستخدام [المعيار الأعظمي](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))).

**الصيغة**

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

**الأسماء البديلة**: `normalizeLinf`

**المعاملات**

* `tuple` — Tuple من القيم الرقمية. [`Tuple(T)`](/ar/reference/data-types/tuple)

**القيمة المُعادة**

تُرجع متجه الوحدة. [`Tuple(Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في: v21.11.0

تحسب المسافة بين نقطتين (عناصر المتجهات هي الإحداثيات) في فضاء `Lp` ([مسافة معيار p](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)).

**البنية**

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

**الأسماء البديلة**: `distanceLp`

**المعاملات**

* `vector1` — المتجه الأول. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — المتجه الثاني. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `p` — الأس. القيم الممكنة: عدد حقيقي ضمن `[1; inf)`. [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**القيمة المُعادة**

تُرجِع مسافة معيار p. بالنسبة إلى مُدخلات `Array`، تُرجِع `Float32` إذا كان أقل نوع فائق مشترك لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فتُرجِع `Float64`. أما بالنسبة إلى مُدخلات `Tuple`، فتُرجِع دائمًا `Float64`. [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في: v21.11.0

تحسب معيار p لمتجه، وهو الجذر من الرتبة p لمجموع القوى من الرتبة p للقيم المطلقة لعناصره.

حالات خاصة:

* عندما تكون p=1، فإنها تكافئ L1Norm (مسافة مانهاتن).
* عندما تكون p=2، فإنها تكافئ L2Norm (المسافة الإقليدية).
* عندما تكون p=∞، فإنها تكافئ LinfNorm (المعيار الأعظمي).

**البنية**

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

**الأسماء البديلة**: `normLp`

**المعاملات**

* `vector` — متجه أو `Tuple` من القيم العددية. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `p` — الأسّ. القيم الممكنة هي أعداد حقيقية ضمن النطاق `[1; inf)`. [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**القيمة المعادة**

يعيد [معيار Lp](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm). [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

أُضيفت في: v21.11.0

تحسب متجه الوحدة لمتجه معيّن (تمثل عناصر الـ Tuple الإحداثيات) في فضاء `Lp` (باستخدام [p-norm](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)).

**البنية**

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

**الأسماء المستعارة**: `normalizeLp`

**الوسائط**

* `tuple` — قيمة `Tuple` من القيم العددية. [`Tuple(T)`](/ar/reference/data-types/tuple)
* `p` — الأس. القيم الممكنة هي أي عدد ضمن المجال `[1; inf)`. [`UInt*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

**القيمة المُعادة**

تُرجع متجه الوحدة. [`Tuple(Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```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>

قُدِّمت في: v21.11.0

تحسب [مسافة جيب التمام](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) بين متجهين (عناصر Tuple هي الإحداثيات). وكلما صغرت القيمة المعادة، زاد التشابه بين المتجهين.

**بناء الجملة**

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

**الأسماء البديلة**: `distanceCosine`

**الوسائط**

* `vector1` — الـ Tuple الأولى. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)
* `vector2` — الـ Tuple الثانية. [`Tuple(T)`](/ar/reference/data-types/tuple) أو [`Array(T)`](/ar/reference/data-types/array)

**القيمة المعادة**

تعيد مسافة جيب التمام (أي واحدًا ناقص تشابه جيب التمام). بالنسبة إلى مُدخلات `Array`، تعيد `Float32` إذا كان النوع الأعلى المشترك الأدنى لأنواع العناصر هو `Float32` أو `BFloat16`، وإلا فتعيد `Float64`. أما بالنسبة إلى مُدخلات `Tuple`، فتعيد دائمًا `Float64`. [`Float*`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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>

تمت إضافته في: v26.1.0

يحسب [مسافة جيب التمام](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) التقريبية بين نقطتين (إذ تمثل قيم المتجهات الإحداثيات). وكلما صغرت القيمة المُعادة، زاد التشابه بين المتجهات.

**الصيغة**

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

**الأسماء البديلة**: `distanceCosineTransposed`

**الوسائط**

* `vectors` — متجهات. [`QBit(T, UInt64)`](/ar/reference/data-types/qbit)
* `reference` — المتجه المرجعي. [`Array(T)`](/ar/reference/data-types/array)
* `p` — عدد البِتّات من كل عنصر في المتجه التي ستُستخدم في حساب المسافة (من 1 حتى عرض البِتّ للعنصر). يتحكم مستوى التكميم في الموازنة بين الدقة والسرعة. يؤدي استخدام عدد أقل من البِتّات إلى تسريع عمليات I/O والحسابات مع انخفاض الدقة، بينما يؤدي استخدام عدد أكبر من البِتّات إلى زيادة الدقة على حساب الأداء. [`UInt`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُرجع مسافة جيب التمام التقريبية (واحد ناقص تشابه جيب التمام). وتكون القيمة المُعادة دائمًا من النوع Float64. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**الاستخدام الأساسي**

```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 │
└──────────────────────────────────────────────┘
```
