تخزين المتجهات في Azure الذكاء الاصطناعي Search

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

يتم تخزين المتجهات في فهرس بحث. استخدم واجهة برمجة تطبيقات Create Index REST أو أسلوب Azure SDK مكافئ لإنشاء مخزن المتجهات.

تتضمن اعتبارات تخزين المتجهات النقاط التالية:

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

أنماط استرداد المتجهات

في Azure الذكاء الاصطناعي Search، يوجد نمطان للعمل مع نتائج البحث.

  • البحث التوليدي. تصوغ نماذج اللغة استجابة لاستعلام المستخدم باستخدام بيانات من Azure الذكاء الاصطناعي Search. يتضمن هذا النمط طبقة تزامن لتنسيق المطالبات والحفاظ على السياق. في هذا النمط، يتم تغذية نتائج البحث في تدفقات المطالبة، التي تتلقاها نماذج الدردشة مثل GPT وText-Davinci. يستند هذا النهج إلى بنية إنشاء زيادة الاسترداد (RAG)، حيث يوفر فهرس البحث بيانات التأريض.

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

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

مخطط مخزن متجه

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

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

يتم تمييز حقول المتجهات بنوع البيانات والخصائص الخاصة بالناقل. إليك الشكل الذي يبدو عليه حقل متجه في مجموعة حقول:

{
    "name": "content_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "retrievable": true,
    "dimensions": 1536,
    "vectorSearchProfile": "my-vector-profile"
}

حقول المتجهات من النوع Collection(Edm.Single).

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

يجب أن تكون حقول المتجهات قد dimensions عينت إلى عدد عمليات التضمين التي تم إنشاؤها بواسطة نموذج التضمين. على سبيل المثال، ينشئ text-embedding-ada-002 1536 تضمينا لكل جزء من النص.

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

مجموعة الحقول لأحمال عمل المتجهات الأساسية

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

"name": "example-basic-vector-idx",
"fields": [
  { "name": "id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "key": true },
  { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": null },
  { "name": "content", "type": "Edm.String", "searchable": true, "retrievable": true, "analyzer": null },
  { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }
]

توفر الحقول الأخرى، مثل "content" الحقل، مكافئا قابلا للقراءة البشرية للحقل "content_vector" . إذا كنت تستخدم نماذج اللغة بشكل حصري لصياغة الاستجابة، يمكنك حذف حقول المحتوى غير البرمجي، ولكن يجب أن تحتوي الحلول التي تدفع نتائج البحث مباشرة إلى تطبيقات العميل على محتوى غير خاص.

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

المخطط الذي تم إنشاؤه بواسطة معالج استيراد البيانات واتجاهها

نوصي باستخدام معالج استيراد البيانات واتجاهها للتقييم واختبار إثبات المفهوم. ينشئ المعالج مثال المخطط في هذا القسم.

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

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

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

"name": "example-index-from-import-wizard",
"fields": [
  {"name": "chunk_id",  "type": "Edm.String", "key": true, "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true, "analyzer": "keyword"},
  { "name": "parent_id", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true},
  { "name": "chunk", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false},
  { "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": false},
  { "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-1707768500058-profile"}
]

مخطط لتطبيقات RAG ونمط الدردشة

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

لقطة شاشة للفهرس التي أنشأها المسرع.

الحقول من فهرس الدردشة التي تدعم تجربة البحث التوليدي:

"name": "example-index-from-accelerator",
"fields": [
  { "name": "id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true },
  { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
  { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "my-vector-profile"},
  { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
  { "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "facetable": true },
  { "name": "source", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true  },
  { "name": "chunk", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true },
  { "name": "offset", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true }
]

الحقول من فهرس المحادثات التي تدعم التزامن ومحفوظات الدردشة:

"fields": [
    { "name": "id", "type": "Edm.String", "key": true, "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": false },
    { "name": "conversation_id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
    { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "default-profile" },
    { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
    { "name": "type", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "user_id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "sources", "type": "Collection(Edm.String)", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "created_at", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": true, "retrievable": true },
    { "name": "updated_at", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": true, "retrievable": true }
]

فيما يلي لقطة شاشة تعرض نتائج البحث في "مستكشف البحث" لفهرس المحادثات. درجة البحث هي 1.00 لأن البحث لم يكن مؤهلا. لاحظ الحقول الموجودة لدعم التزامن وتدفقات المطالبة. يعرف معرف المحادثة دردشة معينة. "type" يشير إلى ما إذا كان المحتوى من المستخدم أو المساعد. يتم استخدام التواريخ لتقادم الدردشات من المحفوظات.

لقطة شاشة لمستكشف البحث مع نتائج من فهرس مصمم لتطبيقات RAG.

البنية المادية والحجم

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

يتم تحديد حجم ومضمون الفهرس من خلال:

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

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

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

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

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

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

  • اختر مستوى قابلا للتطوير إذا كنت تتوقع تقلبات في متطلبات تخزين المتجهات. يتم إصلاح المستوى الأساسي في قسم واحد على خدمات البحث القديمة. ضع في اعتبارك Standard 1 (S1) والإصدارات الأحدث لمزيد من المرونة والأداء الأسرع، أو أنشئ خدمة بحث جديدة تستخدم حدودا أعلى وأقسام أكثر في كل مستوى قابل للتقني.

العمليات الأساسية والتفاعل

يقدم هذا القسم عمليات وقت تشغيل المتجهات، بما في ذلك الاتصال بفهرس واحد وتأمينه.

إشعار

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

متوفر باستمرار

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

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

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

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

اتصال نقطة النهاية

تستهدف جميع طلبات الاستعلام والفهرسة المتجهة فهرسا. عادة ما تكون نقاط النهاية واحدة مما يلي:

نقطة النهاية التحكم في الاتصال والوصول
<your-service>.search.windows.net/indexes يستهدف مجموعة الفهارس. يستخدم عند إنشاء فهرس أو إدراجه أو حذفه. حقوق مسؤول مطلوبة لهذه العمليات، متوفرة من خلال المسؤول مفاتيح API أو دور Search Contributor.
<your-service>.search.windows.net/indexes/<your-index>/docs يستهدف مجموعة المستندات الخاصة بفهرس واحد. يستخدم عند الاستعلام عن تحديث فهرس أو بيانات. بالنسبة للاستعلامات، تكون حقوق القراءة كافية، ومتاحة من خلال مفاتيح واجهة برمجة التطبيقات للاستعلام أو دور قارئ البيانات. لتحديث البيانات، تكون حقوق المسؤول مطلوبة.
  1. تأكد من أن لديك أذونات أو مفتاح وصول API. ما لم تكن تقوم بالاستعلام عن فهرس موجود، فأنت بحاجة إلى حقوق المسؤول أو تعيين دور مساهم لإدارة المحتوى وعرضه على خدمة بحث.

  2. ابدأ بمدخل Azure. يمكن للشخص الذي أنشأ خدمة البحث عرض خدمة البحث وإدارتها، بما في ذلك منح حق الوصول للآخرين من خلال صفحة التحكم في الوصول (IAM ).

  3. انتقل إلى عملاء آخرين للوصول البرمجي. نوصي بقوالب التشغيل السريع والعينات للخطوات الأولى:

الوصول الآمن إلى بيانات المتجهات

ينفذ Azure الذكاء الاصطناعي Search تشفير البيانات والاتصالات الخاصة لسيناريوهات عدم الاتصال بالإنترنت وتعيينات الأدوار للوصول الآمن من خلال معرف Microsoft Entra. يتم توضيح النطاق الكامل لميزات أمان المؤسسة في الأمان في Azure الذكاء الاصطناعي Search.

إدارة مخازن المتجهات

يوفر Azure نظاما أساسيا للمراقبة يتضمن التسجيل التشخيصي والتنبيه. نوصي بأفضل الممارسات التالية:

(راجع أيضًا )