L1Distance
L1 (المعيار 1 (مسافة هندسة مانهاتن)).
البنية
distanceL1
الوسائط
القيمة المعادة
يعيد مسافة معيار L1. بالنسبة إلى مدخلات Array، يعيد Float32 إذا كان النوع الفائق المشترك الأدنى لأنواع العناصر هو Float32 أو BFloat16، وإلا فيعيد Float64. أما بالنسبة إلى مدخلات Tuple، فإن نوع الإرجاع يتبع نوع الناتج الحسابي للعمليات على مستوى العناصر (مع الحفاظ على أنواع الأعداد الصحيحة). (U)Int* أو Float*
أمثلة
الاستخدام الأساسي
Query
Response
L1Norm
normL1
الوسيطات
القيمة المُعادة
تُرجع معيار L1 أو مسافة هندسة مانهاتن. UInt* أو Float* أو Decimal
أمثلة
الاستخدام الأساسي
Query
Response
L1Normalize
L1 (هندسة مانهاتن).
البنية
normalizeL1
الوسائط
tuple— Tuple من القيم العددية.Tuple(T)
Tuple(Float64)
أمثلة
الاستخدام الأساسي
Query
Response
L2Distance
distanceL2
الوسائط
القيمة المُعادة
تُرجع مسافة معيار L2. بالنسبة إلى مدخلات Array، تُرجع Float32 إذا كان النوع الفائق المشترك الأدنى لأنواع العناصر هو Float32 أو BFloat16، وإلا فتُرجع Float64. أما بالنسبة إلى مدخلات Tuple، فتُرجع دائمًا Float64. Float*
أمثلة
الاستخدام الأساسي
Query
Response
L2DistanceTransposed
distanceL2Transposed
المعاملات
vectors— المتجهات.QBit(T, UInt64[, UInt64])reference— المتجه المرجعي.Array(T)p— عدد البِتّات من كل عنصر في المتجه التي ستُستخدم في حساب المسافة (من 1 إلى عرض البِتّ للعنصر). يتحكم مستوى التكميم في موازنة بين الدقة والسرعة. يؤدّي استخدام عدد أقل من البِتّات إلى تسريع عمليات IO والحسابات مع تقليل الدقة، بينما يؤدّي استخدام عدد أكبر من البِتّات إلى زيادة الدقة على حساب الأداء.UIntused_dims— اختياري. عدد الأبعاد الأولى المطلوب قراءتها لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذيstride. يجب أن يكون مضاعفًا لـstrideالخاص بـQBitوألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (ويُتجاهل أي عناصر إضافية لاحقة). لا تُقرأ إلا مجموعاتstrideالتي تغطي هذه الأبعاد.UInt
Float64. Float64
أمثلة
الاستخدام الأساسي
Query
Response
L2DistanceTransposedQuantized
QBit(Int8) من رموز quantizeBFloat16ToInt8 (تُفكّ تكميمها آنيًا) ومتجه مرجعي. يُقارَن متجه مرجعي (استعلام) من النوع Float مباشرةً بدقة Float32 — وهي دقة إعادة بناء الرموز بعد فك تكميمها، لذا يُحوَّل استعلام Float64 إلى Float32، بينما يُوسَّع استعلام BFloat16 إليها بدقة تامة (أي إن حساب المسافة غير متماثل)؛ أما المرجع Array(Int8) فيُعامَل هو نفسه على أنه رموز quantizeBFloat16ToInt8 وتُفكّ تكميمه إلى مستويات إعادة البناء الخاصة به. لاحظ أن p يقتطع فقط رموز QBit المخزنة؛ أما المرجع Array(Int8) فهو استعلام كامل ويُعاد بناؤه دائمًا بدقة 8-بت الكاملة، لذا لا تكون هذه مسافة متماثلة بين طرفين مكمّمين إلا عند p = 8 (أما عند p < 8 فلا يُقرأ إلا الطرف المخزن بدقة أخشن). ويجب أن يكون في الفضاء نفسه الذي كانت فيه القيم قبل التكميم (أي بعد تطبيق التدوير العشوائي والتحجيم نفسيهما)، وهذه مسؤولية المستدعي. إن cosine distance ثابتة تجاه التحجيم؛ أما dot product ومسافة L2 فليستا كذلك.
الصيغة
vectors— متجهات رموزquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— المتجه المرجعي (الاستعلام): مصفوفةFloat(أي الاستعلام، وتُجرى المقارنة بدقةFloat32— ويُضيَّق استعلامFloat64إلىFloat32)، أوArray(Int8)من رموزquantizeBFloat16ToInt8تُفك كميًا آنيًا.Array(Float32)أوArray(Int8)p— عدد البِتّات العليا من كل رمزQBitمخزَّن المطلوب استخدامه (من 1 إلى 8). يؤدّي استخدام عدد أقل من البِتّات إلى إعادة بناء مكمِّم مضمَّن أكثر خشونة لتسريع عمليات IO مع تقليل الدقة؛ وتمثل 8 بِتّات إعادة بناء بالدقة الكاملة. يقتصرpعلى اقتطاعQBitالمخزَّن فقط؛ أما المرجعArray(Int8)فيُعاد بناؤه دائمًا بدقة 8 بِتّات كاملة.UIntused_dims— اختياري. عدد الأبعاد الأولى المطلوب قراءتها لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذيstride. يجب أن يكون مضاعفًا لـstrideالخاص بـQBitوألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (وأي عناصر إضافية لاحقة يتم تجاهلها). لا تُقرأ إلا مجموعاتstrideالتي تغطي هذه الأبعاد.UInt
Float64. Float64
أمثلة
الاستخدام الأساسي
Query
L2Norm
normL2
المعاملات
القيمة المُعادة
تُرجع معيار L2 أو المسافة الإقليدية. UInt* أو Float*
أمثلة
الاستخدام الأساسي
Query
Response
L2Normalize
normalizeL2
الوسيطات
tuple— قيمة من النوع Tuple تتألف من قيم رقمية.Tuple(T)
Tuple(Float64)
أمثلة
الاستخدام الأساسي
Query
Response
L2SquaredDistance
distanceL2Squared
الوسيطات
القيمة المعادة
تعيد مجموع مربعات الفروق بين العناصر المناظرة في متجهين. بالنسبة إلى مُدخلات Array، يكون نوع الإرجاع Float32 إذا كان النوع الشامل المشترك الأدنى لأنواع العناصر هو Float32 أو BFloat16، وإلا فيكون Float64. أما بالنسبة إلى مُدخلات Tuple، فيتبع نوع الإرجاع نوع النتيجة الحسابية للعمليات على مستوى العناصر (مع الاحتفاظ بالأنواع الصحيحة). (U)Int* أو Float*
أمثلة
الاستخدام الأساسي
Query
Response
L2SquaredNorm
L2Norm).
البنية
normL2Squared
الوسيطات
القيمة المعادة
يعيد مربع معيار L2. UInt* أو Float* أو Decimal
أمثلة
الاستخدام الأساسي
Query
Response
LinfDistance
L_{inf} (المعيار الأعظمي).
الصيغة
distanceLinf
الوسائط
القيمة المعادة
تعيد مسافة معيار اللانهاية. بالنسبة إلى مُدخلات Array، تُعيد Float32 إذا كان النوع الأعلى المشترك الأدنى لأنواع العناصر هو Float32 أو BFloat16، وإلا فتُعيد Float64. أما بالنسبة إلى مُدخلات Tuple، فتُعيد دائمًا Float64. Float*
أمثلة
الاستخدام الأساسي
Query
Response
LinfNorm
normLinf
الوسيطات
القيمة المُعادة
تُرجِع معيار Linf أو أكبر قيمة مطلقة. Float64
أمثلة
الاستخدام الأساسي
Query
Response
LinfNormalize
L_{inf} (باستخدام المعيار الأعظمي).
الصيغة
normalizeLinf
المعاملات
tuple— Tuple من القيم الرقمية.Tuple(T)
Tuple(Float64)
أمثلة
الاستخدام الأساسي
Query
Response
LpDistance
Lp (مسافة معيار p).
البنية
distanceLp
المعاملات
vector1— المتجه الأول.Tuple(T)أوArray(T)vector2— المتجه الثاني.Tuple(T)أوArray(T)p— الأس. القيم الممكنة: عدد حقيقي ضمن[1; inf).UInt*أوFloat*
Array، تُرجِع Float32 إذا كان أقل نوع فائق مشترك لأنواع العناصر هو Float32 أو BFloat16، وإلا فتُرجِع Float64. أما بالنسبة إلى مُدخلات Tuple، فتُرجِع دائمًا Float64. Float*
أمثلة
الاستخدام الأساسي
Query
Response
LpNorm
- عندما تكون p=1، فإنها تكافئ L1Norm (مسافة مانهاتن).
- عندما تكون p=2، فإنها تكافئ L2Norm (المسافة الإقليدية).
- عندما تكون p=∞، فإنها تكافئ LinfNorm (المعيار الأعظمي).
normLp
المعاملات
vector— متجه أوTupleمن القيم العددية.Tuple(T)أوArray(T)p— الأسّ. القيم الممكنة هي أعداد حقيقية ضمن النطاق[1; inf).UInt*أوFloat*
Float64
أمثلة
الاستخدام الأساسي
Query
Response
LpNormalize
Lp (باستخدام p-norm).
البنية
normalizeLp
الوسائط
tuple— قيمةTupleمن القيم العددية.Tuple(T)p— الأس. القيم الممكنة هي أي عدد ضمن المجال[1; inf).UInt*أوFloat*
Tuple(Float64)
أمثلة
مثال على الاستخدام
Query
Response
cosineDistance
distanceCosine
الوسائط
القيمة المعادة
تعيد مسافة جيب التمام (أي واحدًا ناقص تشابه جيب التمام). بالنسبة إلى مُدخلات Array، تعيد Float32 إذا كان النوع الأعلى المشترك الأدنى لأنواع العناصر هو Float32 أو BFloat16، وإلا فتعيد Float64. أما بالنسبة إلى مُدخلات Tuple، فتعيد دائمًا Float64. Float*
أمثلة
الاستخدام الأساسي
Query
Response
cosineDistanceTransposed
distanceCosineTransposed
الوسائط
vectors— متجهات.QBit(T, UInt64[, UInt64])reference— المتجه المرجعي.Array(T)p— عدد البِتّات من كل عنصر في المتجه التي ستُستخدم في حساب المسافة (من 1 حتى عرض البِتّ للعنصر). يتحكم مستوى التكميم في موازنة بين الدقة والسرعة. يؤدي استخدام عدد أقل من البِتّات إلى تسريع عمليات I/O والحسابات مع انخفاض الدقة، بينما يؤدي استخدام عدد أكبر من البِتّات إلى زيادة الدقة على حساب الأداء.UIntused_dims— اختياري. عدد الأبعاد الأولى التي ستُقرأ، لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذي stride. يجب أن يكون مضاعفًا لـ stride الخاص بـ QBit، وألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (ويُتجاهل أي عناصر إضافية لاحقة). لا تُقرأ إلا مجموعات stride التي تغطي هذه الأبعاد.UInt
Float64
أمثلة
الاستخدام الأساسي
Query
Response
cosineDistanceTransposedQuantized
QBit(Int8) التابعة لـ quantizeBFloat16ToInt8 (التي يُفكّ تكميمها آنيًا) ومتجه مرجعي. وكلما صغرت القيمة المعادة، زاد تشابه المتجهات. يُقارَن متجه مرجعي (استعلام) من نوع Float مباشرةً بدقة Float32 — وهي دقة إعادة بناء الرموز بعد فك التكميم — لذا يُحوَّل استعلام Float64 إلى Float32، بينما يُوسَّع استعلام BFloat16 إليه بدقة تامة (أي إن حساب المسافة غير متماثل)؛ أما المرجع Array(Int8) فيُعامَل هو نفسه على أنه رموز quantizeBFloat16ToInt8 ويُفكّ تكميمه إلى مستويات إعادة البناء الخاصة به. لاحظ أن p يقتطع فقط رموز QBit المخزنة؛ أما المرجع Array(Int8) فهو استعلام كامل ويُعاد بناؤه دائمًا بدقة 8 بت كاملة، لذلك لا تكون هذه مسافة متماثلة بين قيم مكمّاة إلا عند p = 8 (أما عند p < 8 فلا يُقرأ إلا الجانب المخزن بدقة أقل). ويجب أن يكون في الفضاء نفسه الذي كانت فيه القيم قبل التكميم (أي بعد تطبيق التدوير العشوائي والتحجيم نفسيهما)، وهذا يقع على عاتق المستدعي. مسافة جيب التمام لا تتأثر بالتحجيم؛ أما الضرب النقطي ومسافة L2 فليسا كذلك.
البنية
vectors— متجهات من رموزquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— المتجه المرجعي (الاستعلام): مصفوفةFloat(أي الاستعلام، وتتم مقارنته بدقةFloat32— ويُحوَّل استعلامFloat64إلىFloat32)، أوArray(Int8)من رموزquantizeBFloat16ToInt8تُفك كميتها آنيًا.Array(Float32)أوArray(Int8)p— عدد البتات العليا من كل رمزQBitمخزَّن المطلوب استخدامها (من 1 إلى 8). يؤدي استخدام عدد أقل من البتات إلى إعادة بناء مُكمِّم مضمَّن أكثر خشونة لتسريعI/Oعلى حساب الدقة؛ وتمثل 8 بتات إعادة البناء بالدقة الكاملة. يقتصر تأثيرpعلى بترQBitالمخزَّن فقط؛ أما المرجع من النوعArray(Int8)فيُعاد بناؤه دائمًا بدقة 8 بت كاملة.UIntused_dims— اختياري. عدد الأبعاد الأولى المطلوب قراءتها لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذيstride. يجب أن يكون مضاعفًا لـstrideالخاص بـQBitوألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (وأي عناصر زائدة لاحقة يتم تجاهلها). لا تُقرأ إلا مجموعاتstrideالتي تغطي هذه الأبعاد.UInt
Float64. Float64
أمثلة
الاستخدام الأساسي
Query
dotProductTransposed
scalarProductTransposed
الوسائط
vectors— متجهات.QBit(T, UInt64[, UInt64])reference— المتجه المرجعي.Array(T)p— عدد البِتّات من كل عنصر في المتجه التي ستُستخدم في الحساب (من 1 حتى عرض البِتّ للعنصر). يتحكم مستوى التكميم في موازنة بين الدقة والسرعة. يؤدي استخدام عدد أقل من البِتّات إلى تسريع عمليات I/O والحسابات مع انخفاض الدقة، بينما يؤدي استخدام عدد أكبر من البِتّات إلى زيادة الدقة على حساب الأداء.UIntused_dims— اختياري. عدد الأبعاد الأولى التي ستُقرأ لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذيstride. يجب أن يكون مضاعفًا لـstrideالخاص بـQBitوألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (وأي عناصر إضافية في النهاية يتم تجاهلها). لا تُقرأ إلا مجموعاتstrideالتي تغطي هذه الأبعاد.UInt
Float64. Float64
أمثلة
الاستخدام الأساسي
Query
Response
dotProductTransposedQuantized
QBit(Int8) من رموز quantizeBFloat16ToInt8 (تُفكّ تكميمها آنيًا) ومتجه مرجعي. وهذا مقياس للتشابه: فكلما كبرت القيمة المُعادة، زاد التشابه بين المتجهات. يُقارَن متجه مرجعي (استعلام) من نوع Float مباشرة بدقة Float32 — وهي دقة إعادة بناء الرموز بعد فكّ تكميمها، لذا يُحوَّل استعلام Float64 إلى Float32، بينما يُوسَّع استعلام BFloat16 إليه تمامًا (حساب مسافة غير متماثل)؛ أما المرجع Array(Int8) فيُتعامل معه هو نفسه على أنه رموز quantizeBFloat16ToInt8، وتُفكّ تكميمه إلى مستويات إعادة البناء الخاصة به. لاحظ أن p يقتطع فقط رموز QBit المخزَّنة؛ أما المرجع Array(Int8) فهو في حد ذاته استعلام كامل، ويُعاد بناؤه دائمًا بدقة 8-بت كاملة، لذا لا يكون هذا حساب مسافة متناظرًا بين بيانات مكمَّمة وأخرى مكمَّمة إلا عند p = 8 (أما عند p < 8 فلا يُقرأ من الجانب المخزَّن إلا بدقة أخشن). ويجب أن يكون في الفضاء نفسه الذي كانت القيم فيه قبل التكميم (أي بعد الدوران العشوائي والتحجيم نفسيهما)، وهذه مسؤولية المستدعي. مسافة جيب التمام غير متأثرة بالتحجيم؛ أما الضرب القياسي ومسافة L2 فليسا كذلك.
الصيغة
vectors— متجهات من رموزquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— المتجه المرجعي (الاستعلام): مصفوفةFloat(أي الاستعلام، ويُقارَن بدقةFloat32— ويُحوَّل الاستعلام من النوعFloat64إلىFloat32)، أوArray(Int8)من رموزquantizeBFloat16ToInt8يُفك تكميمها آنيًا.Array(Float32)أوArray(Int8)p— عدد البِتّات العليا من كل رمزQBitمخزنة التي ستُستخدم (من 1 إلى 8). يؤدي استخدام عدد أقل من البِتّات إلى إعادة بناء مُكمِّم مضمن أكثر خشونة لتسريع عمليات I/O مع انخفاض الدقة؛ وتمثل 8 بِتّات إعادة البناء كاملة الدقة. يقتطعpفقط قيمةQBitالمخزنة؛ أما المرجع من النوعArray(Int8)فيُعاد بناؤه دائمًا بدقة كاملة تبلغ 8 بِتّات.UIntused_dims— اختياري. عدد الأبعاد الأولى التي ستُقرأ لإجراء بحث منخفض الأبعاد (Matryoshka) علىQBitذيstride. يجب أن يكون مضاعفًا لـstrideالخاص بـQBitوألا يتجاوز بُعده، ويجب أن يحتوي المتجه المرجعي على هذا العدد من العناصر على الأقل (وأي عناصر إضافية لاحقة يتم تجاهلها). لا تُقرأ إلا مجموعاتstrideالتي تغطي هذه الأبعاد.UInt
Float64. Float64
أمثلة
الاستخدام الأساسي
Query