يحتوي هذا المستودع على مثال عملي حول كيفية إنشاء تطبيق أسئلة وأجوبة قادر على الإجابة على الأسئلة المتعلقة بمستنداتك الخاصة باستخدام خدمات GenAI AWS.
في السابق، قمت بإنشاء تطبيق أسئلة وأجوبة باستخدام Azure OpenAI GPT-4 وPinecone (يمكنك العثور عليه هنا) .
في هذا المستودع، سأقوم بإنشاء نفس التطبيق تمامًا ولكن باستخدام خدمات AWS فقط (+ Streamlit لواجهة المستخدم).
لنكون أكثر دقة، يحتوي التطبيق على البنية التالية:
ويستخدم التقنيات التالية:
يحتوي هذا المستودع على التطبيق التالي:
Streamlit
، الذي يسمح لنا بالاستعلام عن البيانات المخزنة في AWS Kendra باستخدام أحد نماذج AWS Bedrock LLM المتوفرة.يتم تخزين المستندات الخاصة في دلو s3.
تم تكوين مؤشر Kendra لاستخدام موصل s3. يقوم الفهرس بفحص مجموعة s3 كل N دقيقة بحثًا عن محتوى جديد. إذا تم العثور على محتوى جديد في المجموعة، فسيتم تحليله تلقائيًا وتخزينه في قاعدة بيانات Kendra.
عندما يقوم المستخدم بتشغيل استعلام من خلال تطبيق Streamlit
، يتبع التطبيق الخطوات التالية:
إذا كنت تفضل بدلاً من استخدام تطبيق Streamlit
تنفيذ التعليمات خطوة بخطوة لإعداد نمط RAG، فلديك دفتر ملاحظات Jupyter ( /notebooks/rag-with-langchain.ipynb
) الذي سيسمح لك بالقيام بذلك بدقة.
يستخدم تطبيق Streamlit
مكتبة LangChain
بكثافة لتنفيذ نمط RAG. إذا كنت تفضل عدم استخدام أي مكتبات تابعة لجهات خارجية وإعداد نمط RAG باستخدام مكتبة boto3
فقط، فلديك دفتر ملاحظات Jupyter ثانٍ ( /notebooks/rag-with-only-boto3.ipynb
) الذي سيسمح لك بالقيام بذلك .
في المجلد /infra
، ستجد سلسلة من ملفات Terraform التي ستقوم بإنشاء كل خدمات AWS المطلوبة لتشغيل التطبيق بشكل سليم.
ستقوم ملفات Terraform هذه بإنشاء الموارد التالية:
هناك بعض المتطلبات الأساسية التي يجب أن تكون على دراية بها قبل محاولة تشغيل التطبيق.
في قسم "الوصول إلى النموذج"، لديك نظرة عامة على شهادات LLM التي يمكنك الوصول إليها وتلك التي لا يمكنك الوصول إليها.
لاستخدام هذا التطبيق بشكل كامل، يجب أن يكون لديك حق الوصول إلى كل برامج LLM التابعة لجهة خارجية في AWS Bedrock .
boto3
لاسترداد بيانات اعتماد AWS من ملف التعريف default
لملف تكوين AWS على جهازك المحلي. للحصول على نظرة عامة على الأساليب المتعددة لتكوين بيانات اعتماد boto3
، انتقل إلى الرابط التالي:
قبل محاولة تشغيل التطبيق، اقرأ قسم AWS Infrastructure والمتطلبات الأساسية .
يحتوي المستودع على ملف .env
يحتوي على متغيرات البيئة التي يتطلبها التطبيق للتشغيل بنجاح:
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
تغيير القيم وفقا لذلك.
pip install -r requirements.txt
عند تثبيت Streamlit
، يتم تثبيت أداة سطر الأوامر (CLI) أيضًا. الغرض من هذه الأداة هو تشغيل تطبيقات Streamlit
.
لتنفيذ التطبيق، فقط قم بتشغيل الأمر التالي:
streamlit run app.py
يحتوي هذا المستودع على
Dockerfile
إذا كنت تفضل تنفيذ التطبيق على حاوية.
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
لجعله متوافقًا مع أحدث تغييرات Bedrock.boto3
و botocore3
. أصبح boto3
المتوافق مع Bedrock متاحًا للجمهور أخيرًا.