حجم فهرس المتجهات والبقاء تحت الحدود

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

إشعار

ملاحظة حول المصطلحات. داخليا، تتضمن بنيات البيانات الفعلية لفهرس البحث محتوى أولي (يستخدم لأنماط الاسترداد التي تتطلب محتوى غير مميز)، والفهارس المقلوبة (المستخدمة لحقول النص القابلة للبحث)، وفهرس المتجهات (المستخدمة لحقول المتجهات القابلة للبحث). توضح هذه المقالة حدود فهارس المتجهات الداخلية التي تدعم كل حقل من حقول المتجهات.

تلميح

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

النقاط الرئيسية حول الحصة النسبية وحجم فهرس المتجه

كيفية التحقق من حجم القسم وكميته

إذا لم تكن متأكدا من حدود خدمة البحث، فإليك طريقتان للحصول على هذه المعلومات:

  • في مدخل Microsoft Azure، في صفحة نظرة عامة على خدمة البحث، تعرض كل من علامة التبويب Properties وعلامة التبويب Usage حجم القسم والتخزين، وكذلك الحصة النسبية للمتجه وحجم فهرس المتجهات.

  • في مدخل Microsoft Azure، في صفحة Scale ، يمكنك مراجعة عدد الأقسام وحجمها.

كيفية التحقق من تاريخ إنشاء الخدمة

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

  1. في مدخل Microsoft Azure، افتح مجموعة الموارد التي تحتوي على خدمة البحث.

  2. في الجزء الموجود في أقصى اليسار، ضمن الإعدادات، حدد Deployments.

  3. حدد موقع توزيع خدمة البحث. إذا كان هناك العديد من عمليات التوزيع، فاستخدم عامل التصفية للبحث عن "بحث".

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

    لقطة شاشة لقائمة عمليات النشر التي تمت تصفيتها.

  5. توسيع تفاصيل النشر. يجب أن تشاهد تاريخ الإنشاء وتاريخ الإنشاء.

    لقطة شاشة توضح تفاصيل التوزيع التي تعرض تاريخ الإنشاء.

  6. الآن بعد أن عرفت عمر خدمة البحث، راجع حدود الحصة النسبية للمتجه استنادا إلى إنشاء الخدمة:

كيفية الحصول على حجم فهرس المتجهات

طلب مقاييس المتجهات هو عملية مستوى البيانات. يمكنك استخدام مدخل Microsoft Azure أو واجهات برمجة تطبيقات REST أو Azure SDKs للحصول على استخدام المتجهات على مستوى الخدمة من خلال إحصائيات الخدمة والفهارس الفردية.

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

لقطة الشاشة التالية هي لخدمة بحث قياسية قديمة 1 (S1)، تم تكوينها لقسم واحد ونسخة متماثلة واحدة.

  • الحصة النسبية للتخزين هي قيد على القرص، وهي شاملة لجميع الفهارس (المتجهات وغير الوسيطة) على خدمة البحث.
  • الحصة النسبية لحجم فهرس المتجهات هي قيد ذاكرة. إنه مقدار الذاكرة المطلوبة لتحميل جميع فهارس المتجهات الداخلية التي تم إنشاؤها لكل حقل متجه على خدمة بحث.

تشير لقطة الشاشة إلى أن الفهارس (المتجه وغير العامل) تستهلك ما يقرب من 460 ميغابايت من تخزين القرص المتوفر. تستهلك فهارس المتجهات حوالي 93 ميغابايت من الذاكرة على مستوى الخدمة.

لقطة شاشة لعلامة تبويب استخدام صفحة نظرة عامة تعرض استهلاك فهرس المتجه مقابل الحصة النسبية.

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

إشعار

على القرص، لا تبلغ فهارس المتجهات 93 ميغابايت. تشغل فهارس المتجهات على القرص مساحة أكبر بثلاث مرات تقريبا من فهارس المتجهات في الذاكرة. راجع كيف تؤثر حقول المتجهات على تخزين القرص للحصول على التفاصيل.

العوامل التي تؤثر على حجم فهرس المتجهات

هناك ثلاثة مكونات رئيسية تؤثر على حجم فهرس المتجه الداخلي الخاص بك:

  • الحجم الخام للبيانات
  • حمل من الخوارزمية المحددة
  • حمل من حذف المستندات أو تحديثها داخل الفهرس

الحجم الخام للبيانات

عادة ما يكون كل متجه عبارة عن صفيف من أرقام الفاصلة العائمة أحادية الدقة، في حقل من النوع Collection(Edm.Single).

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

يتم تحديد حجم تخزين متجه واحد من خلال أبعاده. اضرب حجم متجه واحد في عدد المستندات التي تحتوي على حقل المتجه هذا للحصول على الحجم الخام:

raw size = (number of documents) * (dimensions of vector field) * (size of data type)

نوع بيانات EDM حجم نوع البيانات
Collection(Edm.Single) 4 بايت
Collection(Edm.Half) 2 بايت
Collection(Edm.Int16) 2 بايت
Collection(Edm.SByte) 1 بايت

حمل الذاكرة من الخوارزمية المحددة

تنشئ كل خوارزمية قريبة تقريبية (ANN) هياكل بيانات إضافية في الذاكرة لتمكين البحث الفعال. تستهلك هذه الهياكل مساحة إضافية داخل الذاكرة.

بالنسبة لخوارزمية HNSW، يتراوح حمل الذاكرة بين 1٪ و20٪.

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

حمل الذاكرة أعلى للقيم الأكبر لمعلمة mHNSW ، والتي تحدد عدد الارتباطات ثنائية الاتجاه التي تم إنشاؤها لكل متجه جديد أثناء إنشاء الفهرس. وذلك لأن m يساهم بحوالي 8 بايت إلى 10 بايت لكل مستند مضروبا في m.

يلخص الجدول التالي النسب المئوية للنفقات العامة التي تمت ملاحظتها في الاختبارات الداخلية:

أبعاد معلمة HNSW (m) النسبة المئوية للنفقات العامة
96 4 20%
200 4 8%
768 4 2%
1536 4 1%
3072 4 0.5%

توضح هذه النتائج العلاقة بين الأبعاد ومعلمة mHNSW ونفقات الذاكرة لخوارزمية HNSW.

حمل من حذف المستندات أو تحديثها داخل الفهرس

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

نشير إلى ذلك على أنه نسبة المستندات المحذوفة. نظرا لأن نسبة المستندات المحذوفة تعتمد على خصائص الفهرسة للخدمة الخاصة بك، فلا يوجد استدلال عالمي لتقدير هذه المعلمة، ولا توجد واجهة برمجة تطبيقات أو برنامج نصي يرجع النسبة السارية للخدمة الخاصة بك. نلاحظ أن نصف عملائنا لديهم نسبة مستندات محذوفة أقل من 10٪. إذا كنت تميل إلى إجراء عمليات حذف أو تحديثات عالية التردد، فقد تلاحظ نسبة مستندات محذوفة أعلى.

هذا عامل آخر يؤثر على حجم فهرس المتجهات. لسوء الحظ، ليس لدينا آلية لعرض نسبة المستندات المحذوفة الحالية.

تقدير الحجم الإجمالي للبيانات في الذاكرة

مع مراعاة العوامل الموضحة سابقا، لتقدير الحجم الإجمالي لفهرس المتجه، استخدم الحساب التالي:

(raw_size) * (1 + algorithm_overhead (in percent)) * (1 + deleted_docs_ratio (in percent))

على سبيل المثال، لحساب raw_size، لنفترض أنك تستخدم نموذج Azure OpenAI شائعا، text-embedding-ada-002 مع 1536 بعدا. وهذا يعني أن مستندا واحدا سيستهلك 1536 Edm.Single (عائمة) أو 6144 بايت لأن كل Edm.Single منها 4 بايت. سيستهلك 1,000 مستند مع حقل متجه أحادي الأبعاد 1,536 في إجمالي 1000 مستند × 1536 عائم/مستند = 1,536,000 عائم، أو 6,144,000 بايت.

إذا كان لديك حقول متجهات متعددة، فستحتاج إلى إجراء هذه العملية الحسابية لكل حقل متجه داخل الفهرس الخاص بك وإضافتها جميعا معا. على سبيل المثال، يستهلك 1000 مستند مع حقلين متجهين 1536 بعدا 1000 مستند × 2 حقل × 1536 عائم/مستند × 4 بايت/عائم = 12,288,000 بايت.

للحصول على حجم فهرس المتجه، اضرب هذه raw_size بالنفقات العامة للخوارزمية ونسبة المستند المحذوفة. إذا كانت نسبة حمل الخوارزمية لمعلمات HNSW التي اخترتها 10٪ ونسبة المستند المحذوفة هي 10٪، فسنحصل على: 6.144 MB * (1 + 0.10) * (1 + 0.10) = 7.434 MB.

كيف تؤثر حقول المتجهات على تخزين القرص

توفر معظم هذه المقالة معلومات حول حجم المتجهات في الذاكرة. إذا كنت ترغب في معرفة حجم المتجه على القرص، فإن استهلاك القرص لبيانات المتجهات يساوي ثلاثة أضعاف تقريبا حجم فهرس المتجه في الذاكرة. على سبيل المثال، إذا كان استخدامك vectorIndexSize يبلغ 100 ميغابايت (10 ملايين بايت)، كنت ستستخدم 300 ميغابايت على الأقل من الحصة storageSize النسبية لاستيعاب فهارس المتجهات.