البحث عن المتجهات في Azure Cosmos DB ل NoSQL (معاينة)

ينطبق على: 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. اتبع الخطوات التالية للتسجيل:

  1. انتقل إلى صفحة مورد Azure Cosmos DB for NoSQL.

  2. حدد جزء "الميزات" ضمن عنصر القائمة "الإعدادات".

  3. حدد ل "Vector Search in Azure Cosmos DB for NoSQL".

  4. اقرأ وصف الميزة لتأكيد رغبتك في التسجيل في المعاينة.

  5. حدد "Enable" للتسجيل في المعاينة.

إشعار

سيتم الموافقة التلقائية على طلب التسجيل، ولكن قد يستغرق سريانه عدة دقائق.

إشعار

DiskANN متوفر في المعاينة المبكرة ذات البوابات ويتطلب ملء هذا النموذج. سيتم الاتصال بك من قبل أحد أعضاء فريق Azure Cosmos DB عندما يتم إلحاق المورد الخاص بك لاستخدام فهرس DiskANN.

تلميح

بدلا من ذلك، استخدم Azure CLI لتحديث قدرات حسابك لدعم البحث عن متجه NoSQL.

az cosmosdb update \
     --resource-group <resource-group-name> \
     --name <account-name> \
     --capabilities EnableNoSQLVectorSearch

نهج متجه الحاوية

يتطلب إجراء بحث متجه باستخدام 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

بعض النقاط التي يجب ملاحظتها:

  • flat تستخدم أنواع الفهرس و quantizedFlat فهرس Azure Cosmos DB لتخزين كل متجه وقراءته عند إجراء بحث متجه. عمليات البحث المتجهة ذات الفهرس flat هي عمليات بحث غاشمة وتنتج دقة أو استدعاء بنسبة 100٪ . أي أنه من المضمون العثور على المتجهات الأكثر تشابها في مجموعة البيانات. ومع ذلك، هناك قيود على 505 أبعاد المتجهات على فهرس ثابت.

  • يخزن quantizedFlat الفهرس متجهات كمية (مضغوطة) على الفهرس. عمليات البحث المتجهة ذات quantizedFlat الفهرس هي أيضا عمليات بحث بقوة غاشمة، ولكن قد تكون دقتها أقل قليلا من 100٪ نظرا لأن المتجهات يتم تحديدها كميا قبل الإضافة إلى الفهرس. ومع ذلك، يجب أن يكون لعمليات البحث الموجهة ذات quantized flat زمن انتقال أقل ومعدل نقل أعلى وتكلفة وحدة طلب أقل من عمليات البحث المتجهة flat على فهرس. هذا خيار جيد للسيناريوهات الأصغر، أو السيناريوهات التي تستخدم فيها عوامل تصفية الاستعلام لتضييق نطاق البحث المتجه إلى مجموعة صغيرة نسبيا من المتجهات. quantizedFlat يجب استخدام عندما يكون هناك ما لا يقل عن 1000 متجه وأقل من 100000 متجه في الحاوية.

  • الفهرس diskANN هو فهرس منفصل محدد خصيصا للخطوط المتجهة التي تستخدم DiskANN، وهي مجموعة من خوارزميات فهرسة المتجهات عالية الأداء التي طورتها Microsoft Research. يمكن أن توفر فهارس DiskANN بعض أقل زمن انتقال وأعلى معدل نقل وأقل استعلامات تكلفة RU، مع الحفاظ على دقة عالية. ومع ذلك، نظرا لأن DiskANN هو أقرب فهرس جار تقريبي (ANN)، يمكن أن تكون الدقة أقل من quantizedFlat أو flat. DiskANN متوفر في المعاينة المبكرة ذات البوابات ويتطلب ملء هذا النموذج.

فيما يلي أمثلة على نهج فهرس المتجهات الصالحة:

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/_etag/?"
        }
    ],
    "vectorIndexes": [
        {
            "path": "/vector1",
            "type": "quantizedFlat"
        }
    ]
}
{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/_etag/?"
        }
    ],
    "vectorIndexes": [
        {
            "path": "/vector1",
            "type": "quantizedFlat"
        },
        {
            "path": "/vector2",
            "type": "DiskANN"
        }
    ]
}

إشعار

تتطلب فهارس Flat و DiskANN المكملة كميا إدراج ما لا يقل عن 1000 متجه. هذا لضمان دقة عملية التكميم. إذا كان هناك أقل من 1000 متجه، يتم تنفيذ فحص كامل بدلا من ذلك، وسيؤدي إلى رسوم RU أعلى لاستعلام بحث متجه.

هام

في هذا الوقت في معاينة البحث عن المتجهات لا تستخدم المسار المتداخل أو أحرف البطاقة البرية في مسار نهج المتجه. عمليات الاستبدال على نهج المتجهات غير مدعومة حاليا.

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

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

SELECT c.title, VectorDistance(c.contentVector, [1,2,3]) AS SimilarityScore   
FROM c  
ORDER BY VectorDistance(c.contentVector, [1,2,3])   

الحدود والقيود الحالية

تحتوي فهرسة المتجه والبحث في Azure Cosmos DB ل NoSQL على بعض القيود أثناء المراحل المبكرة من المعاينة العامة.

  • يمكنك تحديد نوع فهرس واحد على الأكثر لكل مسار في نهج فهرس المتجه
  • يمكنك تحديد نوع فهرس DiskANN واحد على الأكثر لكل حاوية
  • يتم دعم فهرسة المتجهات فقط على حاويات جديدة.
  • يمكن أن تكون المتجهات المفهرسة بنوع الفهرس flat 505 أبعاد على الأكثر. يمكن أن تكون المتجهات المفهرسة quantizedFlat بنوع الفهرس أو DiskANN 4096 بعدا على الأكثر.
  • quantizedFlat يستخدم نفس أسلوب التكميم مثل DiskANN وهو غير قابل للتكوين في الوقت الحالي.
  • لا يمكن لقواعد بيانات معدل النقل المشتركة استخدام ميزة معاينة البحث عن المتجهات في هذا الوقت.
  • يجب أن يكون معدل الاستيعاب محدودا أثناء استخدام معاينة مبكرة ل DiskANN.

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