البرنامج التعليمي: استخدام ذاكرة التخزين المؤقت Azure ل Redis كذاكرة تخزين مؤقت دلالية
في هذا البرنامج التعليمي، يمكنك استخدام ذاكرة التخزين المؤقت Azure ل Redis كذاكرة تخزين مؤقت دلالية مع نموذج لغة كبيرة مستندة إلى الذكاء الاصطناعي (LLM). يمكنك استخدام خدمة Azure OpenAI لإنشاء استجابات LLM للاستعلامات وتخزين تلك الاستجابات مؤقتا باستخدام ذاكرة التخزين المؤقت Azure ل Redis، وتقديم استجابات أسرع وخفض التكاليف.
نظرا لأن Azure Cache for Redis يوفر إمكانية بحث متجه مضمنة، يمكنك أيضا إجراء التخزين المؤقت الدلالي. يمكنك إرجاع الاستجابات المخزنة مؤقتا للاستعلامات المتطابقة وكذلك للاستعلامات المتشابهة في المعنى، حتى إذا لم يكن النص هو نفسه.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء مثيل Azure Cache for Redis تم تكوينه للتخزين المؤقت الدلالي
- استخدم مكتبات Python الشائعة الأخرى في LangChain.
- استخدم خدمة Azure OpenAI لإنشاء نص من نماذج الذكاء الاصطناعي ونتائج ذاكرة التخزين المؤقت.
- راجع مكاسب الأداء من استخدام التخزين المؤقت مع LLMs.
هام
يرشدك هذا البرنامج التعليمي خلال إنشاء Jupyter Notebook. يمكنك متابعة هذا البرنامج التعليمي مع ملف التعليمات البرمجية Python (.py) والحصول على نتائج مماثلة ، ولكن تحتاج إلى إضافة جميع كتل التعليمات البرمجية في هذا البرنامج التعليمي في .py
الملف وتنفيذ مرة واحدة لمشاهدة النتائج. بمعنى آخر، توفر Jupyter Notebooks نتائج وسيطة أثناء تنفيذ الخلايا، ولكن هذا ليس السلوك الذي يجب أن تتوقعه عند العمل في ملف التعليمات البرمجية ل Python.
هام
إذا كنت ترغب في المتابعة في دفتر ملاحظات Jupyter مكتمل بدلا من ذلك، فنزل ملف دفتر ملاحظات Jupyter المسمى semanticcache.ipynb واحفظه في المجلد الدلالي الجديد.
المتطلبات الأساسية
اشتراك Azure - إنشاء اشتراك مجاناً
الوصول الممنوح إلى Azure OpenAI في اشتراك Azure المطلوب حاليا، يجب عليك التقدم بطلب للوصول إلى Azure OpenAI. يمكنك التقدم بطلب للوصول إلى Azure OpenAI عن طريق إكمال النموذج في https://aka.ms/oai/access.
Jupyter Notebooks (اختياري)
مورد Azure OpenAI مع توزيع نماذج text-embedding-ada-002 (الإصدار 2) وgpt-35-turbo-instruct. تتوفر هذه النماذج حاليا فقط في مناطق معينة. راجع دليل توزيع الموارد للحصول على إرشادات حول كيفية نشر النماذج.
إنشاء مثيل Azure Cache لـ Redis
اتبع دليل التشغيل السريع: إنشاء ذاكرة التخزين المؤقت ل Redis Enterprise. في الصفحة خيارات متقدمة ، تأكد من إضافة الوحدة النمطية RediSearch واختيار نهج نظام مجموعة المؤسسة . يمكن أن تتطابق جميع الإعدادات الأخرى مع الإعداد الافتراضي الموضح في التشغيل السريع.
يستغرق إنشاء ذاكرة التخزين المؤقت بضع دقائق. يمكنك الانتقال إلى الخطوة التالية في هذه الأثناء.
إعداد بيئة التطوير
أنشئ مجلدا على الكمبيوتر المحلي باسم semanticcache في الموقع الذي تحفظ فيه مشاريعك عادة.
إنشاء ملف python جديد (tutorial.py) أو دفتر ملاحظات Jupyter (tutorial.ipynb) في المجلد.
تثبيت حزم Python المطلوبة:
pip install openai langchain redis tiktoken
إنشاء نماذج Azure OpenAI
تأكد من أن لديك نموذجين تم نشرهما في مورد Azure OpenAI:
LLM الذي يوفر استجابات نصية. نستخدم نموذج GPT-3.5-turbo-instruct لهذا البرنامج التعليمي.
نموذج تضمين يحول الاستعلامات إلى خطوط متجهة للسماح بمقارنتها بالاستعلامات السابقة. نستخدم نموذج text-embedding-ada-002 (الإصدار 2) لهذا البرنامج التعليمي.
راجع نشر نموذج للحصول على إرشادات أكثر تفصيلا. سجل الاسم الذي اخترته لكل نشر نموذج.
استيراد المكتبات وإعداد معلومات الاتصال
لإجراء مكالمة بنجاح مقابل Azure OpenAI، تحتاج إلى نقطة نهاية ومفتاح. تحتاج أيضا إلى نقطة نهاية ومفتاح للاتصال بذاكرة التخزين المؤقت Azure ل Redis.
انتقل إلى مورد Azure OpenAI في مدخل Microsoft Azure.
حدد موقع نقطة النهاية والمفاتيح في قسم إدارة الموارد في مورد Azure OpenAI. انسخ نقطة النهاية ومفتاح الوصول لأنك تحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. مثال على نقطة النهاية هو:
https://docs-test-001.openai.azure.com
. يمكنك استخدام إماKEY1
أوKEY2
.انتقل إلى صفحة نظرة عامة على Azure Cache لمورد Redis في مدخل Microsoft Azure. انسخ نقطة النهاية.
حدد موقع مفاتيح Access في قسم الإعدادات. انسخ مفتاح الوصول الخاص بك. يمكنك استخدام إما
Primary
أوSecondary
.أضف التعليمات البرمجية التالية إلى خلية تعليمات برمجية جديدة:
# Code cell 2 import openai import redis import os import langchain from langchain.llms import AzureOpenAI from langchain.embeddings import AzureOpenAIEmbeddings from langchain.globals import set_llm_cache from langchain.cache import RedisSemanticCache import time AZURE_ENDPOINT=<your-openai-endpoint> API_KEY=<your-openai-key> API_VERSION="2023-05-15" LLM_DEPLOYMENT_NAME=<your-llm-model-name> LLM_MODEL_NAME="gpt-35-turbo-instruct" EMBEDDINGS_DEPLOYMENT_NAME=<your-embeddings-model-name> EMBEDDINGS_MODEL_NAME="text-embedding-ada-002" REDIS_ENDPOINT = <your-redis-endpoint> REDIS_PASSWORD = <your-redis-password>
قم بتحديث قيمة
API_KEY
وRESOURCE_ENDPOINT
بقيم المفتاح ونقطة النهاية من توزيع Azure OpenAI.EMBEDDINGS_DEPLOYMENT_NAME
قم بتعيينLLM_DEPLOYMENT_NAME
وإلى اسم النموذجين المنشورين في خدمة Azure OpenAI.قم بتحديث
REDIS_ENDPOINT
وREDIS_PASSWORD
بنقطة النهاية وقيمة المفتاح من Azure Cache لمثيل Redis.هام
نوصي بشدة باستخدام المتغيرات البيئية أو مدير سري مثل Azure Key Vault لتمرير مفتاح API ونقطة النهاية ومعلومات اسم النشر. يتم تعيين هذه المتغيرات في نص عادي هنا من أجل البساطة.
تنفيذ خلية التعليمات البرمجية 2.
تهيئة نماذج الذكاء الاصطناعي
بعد ذلك، يمكنك تهيئة نماذج LLM وتضمينها
أضف التعليمات البرمجية التالية إلى خلية تعليمات برمجية جديدة:
# Code cell 3 llm = AzureOpenAI( deployment_name=LLM_DEPLOYMENT_NAME, model_name="gpt-35-turbo-instruct", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION, ) embeddings = AzureOpenAIEmbeddings( azure_deployment=EMBEDDINGS_DEPLOYMENT_NAME, model="text-embedding-ada-002", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION )
تنفيذ خلية التعليمات البرمجية 3.
إعداد Redis كذاكرة تخزين مؤقت دلالية
بعد ذلك، حدد Redis كذاكرة تخزين مؤقت دلالية ل LLM الخاص بك.
أضف التعليمات البرمجية التالية إلى خلية تعليمات برمجية جديدة:
# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
هام
تحدد قيمة المعلمة
score_threshold
مدى تشابه استعلمين لإرجاع نتيجة مخزنة مؤقتا. كلما انخفض الرقم، زادت تشابه الاستعلامات. يمكنك التغلب على هذه القيمة لضبطها على التطبيق الخاص بك.تنفيذ خلية التعليمات البرمجية 4.
الاستعلام عن الاستجابات والحصول عليها من LLM
وأخيرا، استعلم عن LLM للحصول على استجابة تم إنشاؤها الذكاء الاصطناعي. إذا كنت تستخدم دفتر ملاحظات Jupyter، يمكنك إضافة %%time
أعلى الخلية لإخراج مقدار الوقت المستغرق لتنفيذ التعليمات البرمجية.
أضف التعليمات البرمجية التالية إلى خلية تعليمات برمجية جديدة وقم بتنفيذها:
# Code cell 5 %%time response = llm("Please write a poem about cute kittens.") print(response)
يجب أن تشاهد مخرجات ومخرجات مشابهة لهذا:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 2.67 s
Wall time
يظهر قيمة 2.67 ثانية. هذا هو مقدار الوقت الحقيقي الذي استغرقه الاستعلام عن LLM و LLM لإنشاء استجابة.تنفيذ الخلية 5 مرة أخرى. يجب أن تشاهد نفس الإخراج بالضبط، ولكن مع وقت جدار أصغر:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 575 ms
يبدو أن وقت الحائط يقصر بمقدار خمسة-- وصولا إلى 575 مللي ثانية.
قم بتغيير الاستعلام من
Please write a poem about cute kittens
إلىWrite a poem about cute kittens
ثم قم بتشغيل الخلية 5 مرة أخرى. يجب أن تشاهد نفس الإخراج بالضبط ووقت جدار أقل من الاستعلام الأصلي. على الرغم من تغيير الاستعلام، ظل المعنى الدلالي للاستعلام كما هو، لذلك تم إرجاع نفس الإخراج المخزن مؤقتا. هذه هي ميزة التخزين المؤقت الدلالي!
تغيير حد التشابه
حاول تشغيل استعلام مشابه مع معنى مختلف، مثل
Please write a poem about cute puppies
. لاحظ أن النتيجة المخزنة مؤقتا يتم إرجاعها هنا أيضا. المعنى الدلالي للكلمةpuppies
قريب بما يكفي من الكلمةkittens
التي يتم إرجاع النتيجة المخزنة مؤقتا.يمكن تعديل حد التشابه لتحديد متى يجب أن ترجع ذاكرة التخزين المؤقت الدلالية نتيجة مخزنة مؤقتا ومتى يجب أن ترجع إخراجا جديدا من LLM. في خلية التعليمات البرمجية 4، قم بالتغيير
score_threshold
من0.05
إلى0.01
:# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.01))
حاول الاستعلام
Please write a poem about cute puppies
مرة أخرى. يجب أن تتلقى مخرجات جديدة خاصة بالجراء:Oh, little balls of fluff and fur With wagging tails and tiny paws Puppies, oh puppies, so pure The epitome of cuteness, no flaws With big round eyes that melt our hearts And floppy ears that bounce with glee Their playful antics, like works of art They bring joy to all they see Their soft, warm bodies, so cuddly As they curl up in our laps Their gentle kisses, so lovingly Like tiny, wet, puppy taps Their clumsy steps and wobbly walks As they explore the world anew Their curiosity, like a ticking clock Always eager to learn and pursue Their little barks and yips so sweet Fill our days with endless delight Their unconditional love, so complete ... For they bring us love and laughter, year after year Our cute little pups, in every way. CPU times: total: 15.6 ms Wall time: 4.3 s
من المحتمل أن تحتاج إلى ضبط حد التشابه استنادا إلى التطبيق الخاص بك للتأكد من استخدام الحساسية الصحيحة عند تحديد الاستعلامات المراد تخزينها مؤقتا.
تنظيف الموارد
إذا كنت تريد الاستمرار في استخدام الموارد التي قمت بإنشائها في هذه المقالة، فاحتفظ بمجموعة الموارد.
وإلا، إذا انتهيت من الموارد، يمكنك حذف مجموعة موارد Azure التي قمت بإنشائها لتجنب الرسوم.
هام
حذف مجموعة الموارد لا يمكن التراجع عنه. عند حذف مجموعة موارد، يتم حذف كافة الموارد الموجودة فيها نهائيًا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. إذا قمت بإنشاء الموارد داخل مجموعة موارد موجودة تحتوي على الموارد التي تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة بدلا من حذف مجموعة الموارد.
لحذف مجموعة موارد
سجل الدخول إلى مدخل Azure، وحدد "Resource groups".
حدد مجموعة الموارد التي تريد حذفها.
إذا كان هناك العديد من مجموعات الموارد، فاستخدم المربع تصفية لأي حقل... ، واكتب اسم مجموعة الموارد التي أنشأتها لهذه المقالة. حدد مجموعة الموارد في قائمة النتائج.
حدد Delete resource group.
يُطلب منك تأكيد حذف مجموعة الموارد. اكتب اسم مجموعة الموارد لتأكيده، واختر "Delete".
بعد مرور لحظات قليلة، يتم حذف مجموعة الموارد وجميع مواردها.
المحتوى ذو الصلة
- تعرف على المزيد حول Azure Cache for Redis
- تعرف على المزيد حول ذاكرة التخزين المؤقت Azure لإمكانيات البحث عن متجهات Redis
- البرنامج التعليمي: استخدام البحث عن تشابه المتجهات على ذاكرة التخزين المؤقت Azure ل Redis
- اقرأ كيفية إنشاء تطبيق مدعوم الذكاء الاصطناعي باستخدام OpenAI وRedis
- إنشاء تطبيق Q&A مع إجابات دلالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ