الدرس: توجيه طلبات الذكاء الاصطناعي حسب التشابه الدلالي مع Azure Managed Redis

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

يتطلب البحث المتجه في Redis خدمة RediSearch وهو متوفر في Azure Managed Redis، كما هو موضح في نظرة عامة على البحث المتجه في Redis المدارة من Azure. يجب تفعيل وحدات Redis، بما في ذلك RediSearch، عند إنشاء نسخة Redis المدارة في Azure. للمستويات والسياسات المدعومة، انظر استخدام وحدات Redis مع متطلبات Redis وRediSearch في Azure Managed Redis.

يوفر RedisVL واجهة SemanticRouter تستخدم بحث Redis لتصنيف الطلب مقابل مجموعة من Route المراجع. بالنسبة لنموذج المتجهات الأساسي، يخزن Redis المتجهات والبيانات الوصفية في التجزئة أو كائنات JSON ويبحث فيها باستخدام حقول المتجهات، ومقاييس المسافة، واستعلامات KNN أو النطاق. لمزيد من المعلومات، راجع دليل RedisVL SemanticRouterومفاهيم البحث المتجهة في Redis.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • حدد المسارات الدلالية المسماة مع مراجع تمثيلية.
  • إنشاء راوتر دلالي RedisVL مدعوم ب Azure Managed Redis.
  • توجيه الطلبات إلى مسار أو أكثر متطابق.
  • تعامل مع الأخطاء والمباريات الغامضة.
  • ضبط العتبات وتشغيل التوجيه الدلالي أثناء الإنتاج.
  • تطبيق التوجيه الدلالي على أنماط تطبيقات الذكاء الاصطناعي الشائعة.

المتطلبات

  • اشتراك في Azure. إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني.
  • نسخة Redis مدارة من Azure مع تفعيل RediSearch عند وقت الإنشاء. RediSearch هو وحدة Redis التي تتيح البحث المتجه في Azure Managed Redis، ويجب اختيار الوحدات عند إنشاء المظهر. راجع مصفوفة الوحدات المدعومة ومتطلبات سياسة RediSearch في وحدات Use Redis باستخدام Azure Managed Redis.
  • سلسلة سلسلة الاتصال أو رابط Redis لنسخة Redis المدمجة في Azure الخاصة بك. استخدم TLS وطريقة التحقق المعتمدة من طلبك.
  • بيئة Python يمكنها تثبيت RedisVL والتبعيات لنموذج التضمين الذي تختاره.
  • استراتيجية تضمين أو أداة متجهة. يستخدم هذا الدرس RedisVL HFTextVectorizer كمثال مختصر. استخدم نفس نموذج التضمين لكل مرجع مسار وكل طلب وارد في مؤشر الموجه حتى تبقى أبعاد المتجهات ومقاييس المسافة متوافقة. تتطلب مؤشرات المتجهات ريديس وجود ثابت DIM و DISTANCE_METRIC لحقل المتجه. لمزيد من المعلومات، انظر مفاهيم البحث المتجهة في Redis.

تثبيت RedisVL:

pip install redisvl

صمم مساراتك

يمثل المسار قرار تطبيق، مثل قالب الطلب، الأداة، النموذج، أو سير العمل. يتضمن كل مسار ما يلي:

  • مستقر name يربطه تطبيقك بمعالج.
  • references، وهي عبارات تمثيلية لذلك المسار.
  • اختياري metadata، مثل معرفات المعالج، إصدارات الطلب، تفضيلات الطراز، أو معلومات المالك.
  • لكل مسار distance_threshold. في RedisVL، تستخدم عتبات المسار وحدات مسافة Redis COSINE حيث تتطلب القيم الأدنى مطابقة أكثر صرامة. العتبات خاصة بالنموذج ويجب التحقق منها بطلباتك الخاصة.

على سبيل المثال، قد يستخدم مساعد ذكاء اصطناعي هذه المسارات:

مسار وجهة نموذجية المراجع التمثيلية
billing سير عمل الفوترة أو المطالبة "تحديث فاتورتي"، "لماذا تم تحصيل الرسوم مرتين؟"
technical_support أداة فرز الدعم "كاش الخاص بي ينتهي وقتي"، "ساعدني في تصحيح أخطاء الاتصال"
sales سير عمل المبيعات "مقارنة الخطط"، "تحدث مع المبيعات حول الأسعار"

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

إنشاء موجه دلالي

حدد عنوان Redis الخاص بك في متغير بيئتي. يعتمد تنسيق الرابط الدقيق على طريقة المصادقة وتكوين العميل. استخدم رابط rediss:// URL عند الاتصال ب TLS.

import os

from redisvl.extensions.router import Route, SemanticRouter
from redisvl.utils.vectorize import HFTextVectorizer

redis_url = os.environ["REDIS_URL"]  # Example: rediss://:<password>@<host>:10000

billing = Route(
    name="billing",
    references=[
        "I need a copy of my invoice",
        "why was my card charged twice",
        "change the billing email for my account",
    ],
    metadata={"handler": "billing_workflow", "prompt": "billing_v1"},
    distance_threshold=0.55,
)

technical_support = Route(
    name="technical_support",
    references=[
        "my cache is timing out",
        "help me debug Redis connection errors",
        "why am I seeing high server load",
    ],
    metadata={"handler": "support_triage_tool", "prompt": "support_v2"},
    distance_threshold=0.50,
)

sales = Route(
    name="sales",
    references=[
        "compare pricing plans",
        "I want to talk to sales",
        "which tier should I choose for production",
    ],
    metadata={"handler": "sales_workflow", "prompt": "sales_v1"},
    distance_threshold=0.60,
)

routes = [billing, technical_support, sales]
routes_by_name = {route.name: route for route in routes}

router = SemanticRouter(
    name="ai-request-router",
    vectorizer=HFTextVectorizer(),
    routes=routes,
    redis_url=redis_url,
    overwrite=False,
)

عند التهيئة، يقوم RedisVL بإنشاء وتعبئة فهرس بحث Redis لمراجع المسارات. يستخدم ريديس حقول المتجهات وحقول البيانات الوصفية في الفهرس لإجراء بحث التشابه على المراجع المدمجة. للحصول على تفاصيل حول تهيئة الموجه وحقول المسار، راجع دليل RedisVL SemanticRouter. للحصول على تفاصيل حول مؤشرات متجهات ريديس، انظر مفاهيم البحث عن متجهات ريديس.

تلميح

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

مسار طلب

الاتصال بالراوتر يعطي أفضل تطابق مسار. إذا لم يكن أي مسار قريبا بما يكفي لتحقيق عتبه، فإن RedisVL يعيد خطأ مشابه ل RouteMatch(name=None, distance=None).

request = "The cache keeps timing out when my app connects."
match = router(request)

if match.name is None:
    destination = "fallback_workflow"
else:
    route = routes_by_name[match.name]
    destination = route.metadata["handler"]

print(match.name, match.distance, destination)

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

التعامل مع الأخطاء والمباريات الغامضة

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

للمحاولات الفاشلة:

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

للحصول على تطابقات متعددة المسارات المحتملة، استخدم route_many() لفحص المسارات والمسافات المرشحة:

request = "Can you help me choose a production tier and estimate the price?"
matches = router.route_many(request, max_k=3)

for candidate in matches:
    print(candidate.name, candidate.distance)

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

تحديث وتسلسل إعدادات الموجه

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

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

ضبط عتبات الضبط باستخدام مجموعة تقييم

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

استخدم عملية الضبط هذه:

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

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

افهم المسافة، العتبات، والأولويات

مسافة المسار هي مسافة التشابه بين تضمين الطلب الوارد وتضمينات مرجعية المسار. مع مقياس المسافة الدلالي لموجه COSINE RedisVL، تعني القيمة الأصغر أن الطلب أقرب إلى مرجع المسار. يقبل الموجه مسارا فقط عندما تكون المسافة الناتجة ضمن نطاق distance_thresholdذلك المسار.

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

مسارات RedisVL لا تحتوي على إعداد وزن دلالي منفصل. استخدم هذه الروافع التوجيهية بدلا من ذلك:

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

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

استخدم التوجيه الدلالي في أنماط الذكاء الاصطناعي الحقيقية

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

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

تشغيل التوجيه الدلالي في الإنتاج

استخدم هذه الممارسات لأحمال العمل الإنتاجية:

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

تنظيف الموارد

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

وإلا، إذا انتهيت من الموارد، يمكنك حذف مجموعة موارد Azure التي قمت بإنشائها لتجنب الرسوم.

مهم

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

لحذف مجموعة موارد

  1. سجل الدخول إلى بوابة Azure، ثم اختر Resource groups.

  2. حدد مجموعة الموارد التي تريد حذفها.

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

    لقطة شاشة تظهر قائمة بمجموعات الموارد التي يجب حذفها في لوحة العمل.

  3. حدد Delete resource group.

  4. يُطلب منك تأكيد حذف مجموعة الموارد. اكتب اسم مجموعة الموارد لتأكيده، واختر "Delete".

    لقطة شاشة تظهر نموذجا يتطلب اسم المورد لتأكيد الحذف.

بعد مرور لحظات قليلة، يتم حذف مجموعة الموارد وجميع مواردها.