ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ما المقصود بفهرسة متجهات Half-Precision؟
تسمح لك فهرسة المتجهات ذات الدقة النصفية بتخزين وتضمين متجه الفهرس باستخدام أرقام الفاصلة العائمة 16 بت بدلا من العوامات القياسية 32 بت. يؤدي هذا التحسين إلى تخفيضات كبيرة في كل من استخدام الذاكرة وتكاليف التخزين، ما يجعل من الممكن العمل مع مجموعات بيانات أكبر وناقلات ذات أبعاد أعلى. علاوة على ذلك، من خلال تحسين كثافة البيانات، يمكن أن تساهم في تحسين أداء الاستعلام في العديد من سيناريوهات البحث في المتجهات.
الفوائد الرئيسة
- زيادة دعم الأبعاد: مع نصف الدقة، يمكنك الآن فهرسة المتجهات بما يصل إلى 4000 بعد (بزيادة عن الحد السابق وهو 2000).
- انخفاض مساحة التخزين: يقلل تخزين المتجهات بتنسيق 16 بت بشكل كبير من كمية التخزين المطلوبة مقارنة بالناقلات عالية الدقة. يمكن أن يؤدي هذا إلى وفورات كبيرة في التكاليف، خاصة لقواعد بيانات المتجهات واسعة النطاق.
- الأداء القابل للتكوين مقابل الدقة: لضبط نتائج البحث الخاصة بك، نقدم معلمة طوابع زائدة أثناء تنفيذ الاستعلام. يسمح لك هذا بالتحكم في المفاضلة بين سرعة الاسترداد والتأثير المحتمل لتقليل الدقة.
إنشاء فهرس متجه Half-Precision
عند تعريف فهرس متجه لمجموعتك، يمكنك تمكين ضغط نصف الدقة عن طريق تحديد "compression": "half"
الخيار داخل cosmosSearchOptions
.
db.runCommand({
"createIndexes": "<vector_collection_name>",
"indexes": [
{
"key": { "<vector_field_name>": "cosmosSearch" },
"name": "<index_name>",
"cosmosSearchOptions": {
"kind": "vector-hnsw", // or vector-ivf
"similarity": "cos",
"dimensions": integer_value, // max 4000
"compression": "half"
}
}
]
});
تحسين البحث باستخدام الإفراط في الطابع
عند الاستعلام عن فهرس متجه يستخدم ضغطا نصف دقة، يمكنك استخدام المعلمة oversampling
$search
داخل مرحلة التجميع. تساعد هذه المعلمة على التخفيف من أي فقدان محتمل للدقة يقدمه تمثيل 16 بت.
يسمح oversampling
لك العامل باسترداد أقرب الجيران المحتملين من فهرس نصف الدقة أكثر من العدد النهائي للنتائج التي تريدها (k
). ثم تتم مقارنة هؤلاء المرشحين باستخدام متجهات الدقة الكاملة الأصلية لضمان دقة أعلى في النتائج النهائية المرتبة.
على سبيل المثال، للحصول على أعلى 10 (k
=10) أكثر المتجهات مشابهة، قد تكون أفضل ممارسة جيدة هي تعيين oversampling
إلى قيمة مثل 1.5 أو 2.0. باستخدام "oversampling": 1.5
، سيحصل النظام أولا على 15 مرشحا من فهرس نصف الدقة ثم يصقل العشرة الأوائل باستخدام بيانات الدقة الكاملة.
db.collection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": query_vector,
"path": path_to_property,
"k": num_results_to_return,
"oversampling": double_value
}
}
},
{
"$project": {
"similarityScore": { "$meta": "searchScore" },
"_id": 0
}
}
]);
إشعار
oversampling
يجب أن يكون العامل مزدوجا مع الحد الأدنى لقيمة 1.0
. هذا العامل ذو صلة فقط بمؤشرات المتجهات التي تم إنشاؤها باستخدام "compression": "half"
.
Half-Precision مقابل تحديد كم المنتج
يقوم كل من Half-Precision وCoduct Quantization (PQ) بضغط فهارس المتجهات في Azure Cosmos DB ل MongoDB (vCore)، ولكنها تختلف في كيفية تحقيق الضغط والتأثير على البحث:
الميزة | Half-Precision | تكميم المنتج (PQ) |
---|---|---|
أسلوب الضغط | يقلل كل بعد متجه إلى 16 بت. | يقسم مساحة المتجه إلى مساحات فرعية ويقسم كل منها كميا. |
الحد الأقصى للأبعاد | ما يصل إلى 4000 | حتى 16,000 |
تغيير الدقة | خسارة طفيفة بسبب انخفاض عمق البت. | خسارة أكبر محتملة، قابلة للتكوين عبر pqCompressedDims . |
سرعة البحث | زيادة متوسطة في السرعة بسبب فهرس أصغر. | زيادة كبيرة في السرعة بسبب ناقلات مضغوطة للغاية. |
وقت بناء الفهرس | سريع نسبيا. | يمكن أن يكون أطول بسبب التدريب على النقاط المركزية (pqSampleSize ). |
دعم الفهرس | HNSW، IVF. | DiskANN. |
التكوين | بسيط، قم بتمكين compression: "half" . |
المزيد من المعلمات: pqCompressedDims ، . pqSampleSize |
استخدام الطابع الزائد | يساعد في فقدان الدقة الطفيف. | ضروري لاسترداد الدقة من الضغط الأكبر. |
حالات الاستخدام المثالية | تقليل متوسط للذاكرة، وزيادة الأبعاد، والمفاضلة الدقيقة المقبولة. | مجموعات البيانات الكبيرة، والأبعاد العالية، والبحث السريع حسب الأولوية، والدقة المدارة مع الطابع الزائد. |