مشاركة عبر


البحث المتجه في 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، ما يجعلها أكثر تنوعا لمعالجة بيانات المتجهات ومتطلبات البحث في التطبيقات الذكاء الاصطناعي.


إشعار

هل تهتم بقدرات البحث المتجه فائقة الإنتاجية؟ يعمل Azure Cosmos DB على تطوير ميزات البحث المتجهية المحسنة المصممة لمجموعات البيانات المتجهية الكبيرة مع إدخالات وعمليات بحث عالية الإنتاجية. يمكنه استيعاب ملايين الاستعلامات في الثانية (QPS) بكفاءة منخفضة وقابلة للتأمل وكفاءة في التكلفة لا مثيل لها. سجل لتعرف المزيد عن فرص الوصول المبكر وتلقي إشعارات عند توفر هذه القدرات.

سجل للمعاينة الخاصة الموسعة.

ما هو مخزن المتجهات؟

مخزن المتجهات أو قاعدة بيانات المتجهات هي قاعدة بيانات مصممة لتخزين وإدارة عمليات تضمين المتجهات ، وهي تمثيلات رياضية للبيانات في مساحة عالية الأبعاد. في هذه المساحة، يتوافق كل بعد مع ميزة من البيانات، ويمكن استخدام عشرات الآلاف من الأبعاد لتمثيل البيانات المعقدة. يمثل موضع المتجه في هذه المساحة خصائصه. يمكن تحويل الكلمات والعبارات أو المستندات الكاملة والصور والصوت وأنواع أخرى من البيانات.

كيف يعمل مخزن المتجهات؟

في مخزن المتجهات، يتم استخدام خوارزميات بحث المتجهات للفهرسة والاستعلام عن تضمينات. تتضمن بعض خوارزميات البحث عن المتجهات المعروفة العالم الصغير القابل للتنقل الهرمي (HNSW) و Inverted File (IVF) و DiskANN. البحث عن المتجهات هو أسلوب يساعدك على العثور على عناصر مماثلة استنادا إلى خصائص البيانات الخاصة بها بدلا من التطابقات الدقيقة في حقل الخاصية.

هذه التقنية مفيدة في التطبيقات مثل البحث عن نص مشابه أو العثور على الصور ذات الصلة أو تقديم التوصيات أو حتى اكتشاف الحالات الشاذة. يتم استخدامه للاستعلام عن عمليات تضمين البيانات الاتجاهية لبياناتك التي قمت بإنشائها باستخدام نموذج التعلم الآلي باستخدام واجهة برمجة تطبيقات التضمينات. أمثلة على تضمين واجهات برمجة التطبيقات هي تضمينات Azure OpenAI أو عناق الوجه على Azure.

يقيس بحث المتجه المسافة بين متجهات البيانات ومتجه الاستعلام. متجهات البيانات الأقرب إلى متجه الاستعلام هي تلك التي تم العثور عليها على أنها متشابهة دلاليا.

في قاعدة بيانات البيانات الاتجاهية المتكاملة في Azure Cosmos DB ل NoSQL، يمكن تخزين التضمينات وفهرستها والاستعلام عنها جنبا إلى جنب مع البيانات الأصلية. يلغي هذا النهج التكلفة الإضافية لنسخ البيانات في قاعدة بيانات متجهات خالصة منفصلة. علاوة على ذلك، تحافظ هذه البنية على تضمينات المتجهات والبيانات الأصلية معا، ما يسهل عمليات البيانات متعددة الوسائط بشكل أفضل، ويتيح المزيد من تناسق البيانات وحجمها وأدائها.

تمكين ميزة فهرسة المتجه والبحث

لتمكين هذه الميزة ل Azure Cosmos DB ل NoSQL، اتبع الخطوات التالية:

  1. انتقل إلى صفحة مورد Azure Cosmos DB for NoSQL.
  2. في الجزء الأيمن، ضمن Settings، حدد Features.
  3. حدد البحث المتجه عن NoSQL API.
  4. اقرأ وصف الميزة للتأكد من رغبتك في تمكينها.
  5. حدد تمكين لتشغيل البحث عن المتجهات في Azure Cosmos DB ل 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، float16، int8، و uint8.
  • dimensionsأبعاد أو طول كل متجه في المسير.: يجب أن يكون لجميع المتجهات في المسار نفس عدد الأبعاد. الإعداد الافتراضي هو 1536.
  • distanceFunctionالمقياس المستخدم لحساب المسافة / التشابه.: المقاييس المدعومة هي:
    • جيب تمام (افتراضي)، والذي يحتوي على قيم من -1 (الأقل تشابها) إلى +1 (الأكثر تشابها).
    • DOT ، الذي يحتوي على قيم من -inf (الأقل تشابها) إلى + INF (الأكثر تشابها).
    • الإقليدي ، الذي له قيم من 0 (الأكثر تشابها) إلى + INF (الأقل تشابها).

إشعار

يمكن أن يكون لكل مسار فريد نهج واحد على الأكثر. ومع ذلك، يمكن تحديد نهج متعددة إذا كانت جميعها تستهدف مسارا مختلفا.

إشعار

تمثل العديد من نماذج التضمين عناصر من متجه باستخدام float32. الاستخدام float16 بدلا من ذلك يمكن أن يقلل من بصمة التخزين للمتجهات بمقدار 50%، ومع ذلك قد يؤدي إلى بعض الانخفاض في الدقة.

يمكن وصف نهج متجه الحاوية كعناصر JSON. فيما يلي مثالان على نهج متجه الحاوية الصالحة:

نهج بمسار متجه واحد

{
    "vectorEmbeddings": [
        {
            "path":"/vector1",
            "dataType":"float32",
            "distanceFunction":"cosine",
            "dimensions":1536
        }
    ]
}

نهج ذو مسارين متجهين

{
    "vectorEmbeddings": [
        {
            "path":"/vector1",
            "dataType":"float32",
            "distanceFunction":"cosine",
            "dimensions":1536
        },
        {
            "path":"/vector2",
            "dataType":"float16",
            "distanceFunction":"dotproduct",
            "dimensions":100
        }
    ]
}

نهج فهرسة المتجهات

تزيد فهارس المتجهات من الكفاءة عند إجراء عمليات البحث عن المتجهات باستخدام وظيفة النظام VectorDistance . تحتوي عمليات البحث في المتجهات على زمن انتقال أقل ومعدل نقل أعلى واستهلاك أقل لوحدة الطلب عند استخدام فهرس متجه. يمكنك تحديد الأنواع التالية من نهج فهرس المتجهات:

نوع وصف الأبعاد القصوى
flat يخزن المتجهات على نفس الفهرس مثل الخصائص المفهرسة الأخرى. 505
quantizedFlat قياس (ضغط) المتجهات قبل التخزين على الفهرس. يمكن أن يؤدي ذلك إلى تحسين زمن الانتقال ومعدل النقل على حساب قدر صغير من الدقة. 4096
diskANN إنشاء فهرس يستند إلى DiskANN للبحث التقريبي السريع والفعال. 4096

إشعار

quantizedFlat تتطلب الفهارس و diskANN إدراج ما لا يقل عن 1,000 متجه. هذا لضمان دقة عملية التكميم. إذا كان هناك أقل من 1,000 متجه ، إجراء فحص كامل بدلا من ذلك ، مما يؤدي إلى ارتفاع رسوم 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/?"
        }
    ],
    "vectorIndexes": [
        {
            "path": "/vector1",
            "type": "quantizedFlat"
        },
        {
            "path": "/vector2",
            "type": "diskANN"
        }
    ]
}

مهم

أحرف البدل (*، []) ومسارات المتجهات المتداخلة داخل المصفوفات غير مدعومة حاليا في سياسة البيانات الاتجاهية أو فهرس البيانات الاتجاهية.

قم بإجراء بحث متجه مع الاستعلامات باستخدام VectorDistance

بمجرد إنشاء حاوية بنهج المتجه المطلوب، وإدراج بيانات متجهة في الحاوية، يمكنك إجراء بحث متجه باستخدام وظيفة نظام 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 متجه على الأقل لضمان دقة التكميم. إذا تمت فهرسة أقل من 1,000 متجه ، استخدام مسح كامل بدلا من ذلك وقد تكون رسوم RU أعلى.
  • يمكن أن تكون المتجهات المفهرسة بنوع الفهرس flat 505 أبعاد على الأكثر. يمكن أن تكون المتجهات المفهرسة quantizedFlat بنوع الفهرس أو DiskANN 4096 بعدا على الأكثر.
  • يجب أن يكون معدل إدراج المتجهات محدودا. قد يتطلب الابتلاع الكبير جدا (أكثر من 5 ملايين متجه) في فترة زمنية قصيرة وقت بناء مؤشر.
  • ميزة البحث المتجه غير مدعومة حاليا على الحاويات الموجودة. لاستخدامه، يجب إنشاء حاوية جديدة، ويجب تحديد نهج تضمين المتجه على مستوى الحاوية.
  • قواعد بيانات معدل النقل المشتركة غير مدعومة.
  • في الوقت الحالي، لا يتم دعم فهرسة المتجهات والبحث في الحسابات التي تحتوي على معدل نقل مشترك.
  • بمجرد تفعيل فهرسة المتجهات والبحث على الحاوية، لا يمكن تعطيله.

الخطوة التالية