البحث عن المتجهات في Azure Cosmos DB ل NoSQL
يوفر Azure Cosmos DB ل NoSQL الآن فهرسة المتجهات والبحث الفعالين. تم تصميم هذه الميزة للتعامل مع المتجهات عالية الأبعاد، مما يتيح البحث الفعال والدقيق عن المتجهات على أي نطاق. يمكنك الآن تخزين المتجهات مباشرة في المستندات جنبا إلى جنب مع بياناتك. يمكن أن يحتوي كل مستند في قاعدة البيانات الخاصة بك ليس فقط على بيانات تقليدية خالية من المخططات، ولكن أيضا على خطوط متجهة عالية الأبعاد كخصائص أخرى للمستندات. يسمح هذا الموقع المشترك للبيانات والمتجهات بالفهرسة والبحث الفعالين، حيث يتم تخزين المتجهات في نفس الوحدة المنطقية مثل البيانات التي تمثلها. يؤدي الاحتفاظ بالخطوط المتجهة والبيانات معا إلى تبسيط إدارة البيانات، الذكاء الاصطناعي بنيات التطبيقات، وكفاءة العمليات المستندة إلى المتجهات.
يوفر Azure Cosmos DB ل NoSQL المرونة التي يوفرها في اختيار طريقة فهرسة المتجهات:
- يمكن أن يوفر البحث الدقيق عن الجيران "المسطح" أو أقرب الجيران (يطلق عليه أحيانا القوة الغاشمة) استرجاعا بنسبة 100٪ لعمليات البحث الصغيرة المركزة على المتجهات. خاصة عند دمجها مع عوامل تصفية الاستعلام ومفاتيح الأقسام.
- فهرس ثابت كمي يضغط المتجهات باستخدام أساليب التكميم المستندة إلى DiskANN للحصول على كفاءة أفضل في بحث kNN.
- DiskANN، وهي مجموعة من خوارزميات فهرسة الخطوط المتجهة المتطورة التي طورتها Microsoft Research لتشغيل البحث عن متجهات فعال وعالي الدقة على أي نطاق.
تعرف على المزيد حول فهرسة المتجهات هنا
يمكن دمج البحث المتجه في Azure Cosmos DB مع جميع عوامل تصفية وفهرس استعلام Azure Cosmos DB NoSQL المدعومة الأخرى باستخدام WHERE
العبارات. وهذا يمكن عمليات البحث المتجهة الخاصة بك من أن تكون البيانات الأكثر صلة بتطبيقاتك.
تعزز هذه الميزة القدرات الأساسية ل Azure Cosmos DB، ما يجعلها أكثر تنوعا لمعالجة بيانات المتجهات ومتطلبات البحث في التطبيقات الذكاء الاصطناعي.
ما هو مخزن المتجهات؟
مخزن المتجهات أو قاعدة بيانات المتجهات هي قاعدة بيانات مصممة لتخزين وإدارة تضمينات المتجهات، وهي تمثيلات رياضية للبيانات في مساحة عالية الأبعاد. في هذه المساحة، يتوافق كل بعد مع ميزة من البيانات، ويمكن استخدام عشرات الآلاف من الأبعاد لتمثيل البيانات المعقدة. يمثل موضع المتجه في هذه المساحة خصائصه. يمكن تحويل الكلمات والعبارات أو المستندات الكاملة والصور والصوت وأنواع أخرى من البيانات.
كيف يعمل مخزن المتجهات؟
في مخزن المتجهات، يتم استخدام خوارزميات بحث المتجهات للفهرسة والاستعلام عن تضمينات. تتضمن بعض خوارزميات البحث عن المتجهات المعروفة «Hierarchical Navigable Small World ( HNSW) و Inverted File (IVF) و DiskANN وما إلى ذلك. البحث عن المتجهات هو أسلوب يساعدك على العثور على عناصر مماثلة استنادا إلى خصائص البيانات الخاصة بها بدلا من التطابقات الدقيقة في حقل الخاصية. هذه التقنية مفيدة في التطبيقات مثل البحث عن نص مشابه أو العثور على الصور ذات الصلة أو تقديم التوصيات أو حتى اكتشاف الحالات الشاذة. يتم استخدامه للاستعلام عن تضمينات المتجه لبياناتك التي قمت بإنشائها باستخدام نموذج التعلم الآلي باستخدام واجهة برمجة تطبيقات التضمينات. أمثلة على تضمين واجهات برمجة التطبيقات هي تضمينات Azure OpenAI أو عناق الوجه على Azure. يقيس بحث المتجه المسافة بين متجهات البيانات ومتجه الاستعلام. متجهات البيانات الأقرب إلى متجه الاستعلام هي تلك التي تم العثور عليها على أنها متشابهة دلاليا.
في قاعدة بيانات الخطوط المتجهة المتكاملة في Azure Cosmos DB ل NoSQL، يمكن تخزين عمليات التضمين وفهرستها والاستعلامات إلى جانب البيانات الأصلية. يلغي هذا النهج التكلفة الإضافية لنسخ البيانات في قاعدة بيانات متجهات خالصة منفصلة. علاوة على ذلك، تحافظ هذه البنية على تضمينات المتجهات والبيانات الأصلية معا، ما يسهل عمليات البيانات متعددة الوسائط بشكل أفضل، ويتيح المزيد من تناسق البيانات وحجمها وأدائها.
تمكين ميزة فهرسة المتجه والبحث
تتطلب فهرسة المتجهات والبحث في Azure Cosmos DB ل NoSQL التمكين في صفحة الميزات في Azure Cosmos DB. اتبع الخطوات التالية للتسجيل:
انتقل إلى صفحة مورد Azure Cosmos DB for NoSQL.
حدد جزء "الميزات" ضمن عنصر القائمة "الإعدادات".
حدد ميزة "Vector Search in Azure Cosmos DB for NoSQL".
اقرأ وصف الميزة لتأكيد رغبتك في تمكينها.
حدد "تمكين" لتشغيل فهرسة المتجهات وإمكانية البحث.
تلميح
بدلا من ذلك، استخدم Azure CLI لتحديث قدرات حسابك لدعم البحث عن متجه NoSQL.
az cosmosdb update \ --resource-group <resource-group-name> \ --name <account-name> \ --capabilities EnableNoSQLVectorSearch
إشعار
سيتم الموافقة التلقائية على طلب التسجيل؛ ومع ذلك، قد يستغرق تنشيط الحساب بالكامل 15 دقيقة.
نهج متجه الحاوية
يتطلب إجراء بحث متجه باستخدام Azure Cosmos DB ل NoSQL تحديد نهج متجه للحاوية. يوفر هذا معلومات أساسية لمحرك قاعدة البيانات لإجراء بحث تشابه فعال عن المتجهات الموجودة في مستندات الحاوية. هذا أيضا يعلم نهج فهرسة المتجه بالمعلومات الضرورية، إذا اخترت تحديد واحد. يتم تضمين المعلومات التالية في نهج المتجه المضمن:
- "path": الخاصية التي تحتوي على المتجه (مطلوب).
- "datatype": نوع بيانات خاصية المتجه (Float32 الافتراضي).
- "الأبعاد": أبعاد أو طول كل متجه في المسار. يجب أن يكون لجميع المتجهات في المسار نفس عدد الأبعاد. (الافتراضي 1536).
- "distanceFunction": المقياس المستخدم لحساب المسافة/التشابه. المقاييس المدعومة هي:
- جيب التمام، الذي يحتوي على قيم من -1 (الأقل شبها) إلى +1 (الأكثر تشابها).
- dot product، الذي يحتوي على قيم من -inf (الأقل تشابها) إلى +inf (الأكثر تشابها).
- euclidean، الذي يحتوي على قيم من 0 (الأكثر تشابها) إلى +inf) (الأقل تشابها).
إشعار
يمكن أن يكون لكل مسار فريد نهج واحد على الأكثر. ومع ذلك، يمكن تحديد نهج متعددة شريطة أن تستهدف جميعا مسارا مختلفا.
يمكن وصف نهج متجه الحاوية كعناصر JSON. فيما يلي مثالان على نهج متجه الحاوية الصالحة:
نهج بمسار متجه واحد
{
"vectorEmbeddings": [
{
"path":"/vector1",
"dataType":"float32",
"distanceFunction":"cosine",
"dimensions":1536
}
]
}
نهج ذو مسارين متجهين
{
"vectorEmbeddings": [
{
"path":"/vector1",
"dataType":"float32",
"distanceFunction":"cosine",
"dimensions":1536
},
{
"path":"/vector2",
"dataType":"int8",
"distanceFunction":"dotproduct",
"dimensions":100
}
]
}
نهج فهرسة المتجهات
تزيد فهارس المتجهات من الكفاءة عند إجراء عمليات بحث متجهة VectorDistance
باستخدام وظيفة النظام. تحتوي عمليات البحث في المتجهات على زمن انتقال أقل ومعدل نقل أعلى واستهلاك أقل لوحدة الطلب عند استخدام فهرس متجه. يمكنك تحديد الأنواع التالية من نهج فهرس المتجهات:
النوع | الوصف | الحد الأقصى للأبعاد |
---|---|---|
flat |
يخزن المتجهات على نفس الفهرس مثل الخصائص المفهرسة الأخرى. | 505 |
quantizedFlat |
قياس (ضغط) المتجهات قبل التخزين على الفهرس. يمكن أن يؤدي ذلك إلى تحسين زمن الانتقال ومعدل النقل على حساب قدر صغير من الدقة. | 4096 |
diskANN |
إنشاء فهرس يستند إلى DiskANN للبحث التقريبي السريع والفعال. | 4096 |
إشعار
quantizedFlat
تتطلب الفهارس و diskANN
إدراج ما لا يقل عن 1000 متجه. هذا لضمان دقة عملية التكميم. إذا كان هناك أقل من 1000 متجه، يتم تنفيذ فحص كامل بدلا من ذلك وسيؤدي إلى رسوم RU أعلى لاستعلام بحث متجه.
بعض النقاط التي يجب ملاحظتها:
flat
تستخدم أنواع الفهرس وquantizedFlat
فهرس Azure Cosmos DB لتخزين كل متجه وقراءته عند إجراء بحث متجه. عمليات البحث المتجهة ذات الفهرسflat
هي عمليات بحث غاشمة وتنتج دقة أو استدعاء بنسبة 100٪ . أي أنه من المضمون العثور على المتجهات الأكثر تشابها في مجموعة البيانات. ومع ذلك، هناك قيود على505
أبعاد المتجهات على فهرس ثابت.يخزن
quantizedFlat
الفهرس متجهات كمية (مضغوطة) على الفهرس. عمليات البحث المتجهة ذاتquantizedFlat
الفهرس هي أيضا عمليات بحث بقوة غاشمة، ولكن قد تكون دقتها أقل قليلا من 100٪ نظرا لأن المتجهات يتم تحديدها كميا قبل الإضافة إلى الفهرس. ومع ذلك، يجب أن يكون لعمليات البحث الموجهة ذاتquantized flat
زمن انتقال أقل ومعدل نقل أعلى وتكلفة وحدة طلب أقل من عمليات البحث المتجهةflat
على فهرس. هذا خيار جيد للسيناريوهات الأصغر، أو السيناريوهات التي تستخدم فيها عوامل تصفية الاستعلام لتضييق نطاق البحث المتجه إلى مجموعة صغيرة نسبيا من المتجهات.quantizedFlat
يوصى به عندما يكون عدد المتجهات التي سيتم فهرستها في مكان ما حوالي 50000 أو أقل لكل قسم مادي. ومع ذلك، هذا مجرد إرشادات عامة ويجب اختبار الأداء الفعلي حيث يمكن أن يكون كل سيناريو مختلفا.الفهرس
diskANN
هو فهرس منفصل محدد خصيصا للخطوط المتجهة التي تستخدم DiskANN، وهي مجموعة من خوارزميات فهرسة المتجهات عالية الأداء التي طورتها Microsoft Research. يمكن أن توفر فهارس DiskANN بعض أقل زمن انتقال وأعلى معدل نقل وأقل استعلامات تكلفة RU، مع الحفاظ على دقة عالية. بشكل عام، DiskANN هو الأكثر أداء من جميع أنواع الفهرس إذا كان هناك أكثر من 50000 متجه لكل قسم فعلي.
فيما يلي أمثلة على نهج فهرس المتجهات الصالحة:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/_etag/?"
},
{
"path": "/vector1/*"
}
],
"vectorIndexes": [
{
"path": "/vector1",
"type": "diskANN"
}
]
}
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/_etag/?"
},
{
"path": "/vector1/*",
},
{
"path": "/vector2/*",
}
],
"vectorIndexes": [
{
"path": "/vector1",
"type": "quantizedFlat"
},
{
"path": "/vector2",
"type": "diskANN"
}
]
}
هام
تمت إضافة مسار المتجه إلى قسم "excludedPaths" في نهج الفهرسة لضمان الأداء الأمثل للإدراج. سيؤدي عدم إضافة مسار المتجه إلى "excludedPaths" إلى ارتفاع تكلفة وحدة الطلب وزمن الانتقال لإدراج المتجهات.
هام
أحرف البطاقة البرية (*، []) غير معتمدة حاليا في نهج المتجه أو فهرس المتجه.
إجراء بحث متجه باستخدام الاستعلامات باستخدام VectorDistance()
بمجرد إنشاء حاوية مع نهج المتجه المطلوب وإدراج بيانات المتجه في الحاوية، يمكنك إجراء بحث متجه باستخدام دالة نظام مسافة المتجه في استعلام. مثال على استعلام NoSQL الذي يعرض درجة التشابه كالاسم المستعار SimilarityScore
، ويفرز بالترتيب الأكثر تشابها مع الأقل تشابها:
SELECT TOP 10 c.title, VectorDistance(c.contentVector, [1,2,3]) AS SimilarityScore
FROM c
ORDER BY VectorDistance(c.contentVector, [1,2,3])
هام
استخدم دائما عبارة TOP N
في SELECT
عبارة استعلام. وإلا سيحاول البحث في المتجه إرجاع المزيد من النتائج وسيكلف الاستعلام وحدات طلب أكثر وزمن انتقال أعلى من اللازم.
القيود الحالية
تحتوي فهرسة المتجه والبحث في Azure Cosmos DB ل NoSQL على بعض القيود.
-
quantizedFlat
diskANN
وتتطلب الفهارس فهرسة 1000 متجه على الأقل لضمان دقة التكميم. إذا تمت فهرسة أقل من 1000 متجه، استخدام فحص كامل بدلا من ذلك وقد تكون رسوم وحدة الطلب أعلى. - يمكن أن تكون المتجهات المفهرسة بنوع الفهرس
flat
505 أبعاد على الأكثر. يمكن أن تكون المتجهات المفهرسةquantizedFlat
بنوع الفهرس أوDiskANN
4096 بعدا على الأكثر. -
quantizedFlat
يستخدم الفهرس نفس أسلوب التكميم مثل DiskANN. - يجب أن يكون معدل إدراج المتجهات محدودا. قد يتطلب الاستيعاب الكبير جدا (الذي يتجاوز 5M متجهات) وقتا إضافيا لبناء الفهرس.
- ميزة البحث عن المتجهات غير مدعومة حاليا على الحاويات الموجودة. لاستخدامه، يجب إنشاء حاوية جديدة، ويجب تحديد نهج تضمين المتجه على مستوى الحاوية.
- قواعد بيانات معدل النقل المشتركة غير مدعومة.
- في هذا الوقت، لا يتم دعم فهرسة المتجه والبحث على الحسابات التي تحتوي على مخزن تحليلي (ورابط Synapse) ومعدل النقل المشترك.
- بمجرد تمكين فهرسة المتجه والبحث على حاوية، لا يمكن تعطيله.
المحتوى ذو الصلة
- DiskANN + Azure Cosmos DB - فيديو ميكانيكا Microsoft
- .NET - فهرسة إرشادية وبيانات متجه الاستعلام
- Python - كيفية فهرسة واستعلام بيانات المتجهات
- Java - فهرسة إرشادية وبيانات متجه الاستعلام
- دالة نظام VectorDistance
- نظرة عامة على فهرس المتجهات
- نهج فهرس المتجهات
- إدارة الفهرس
- التكامل: