استخدم نموذجًا أساسيًا للذكاء الاصطناعي للتلخيص والإجابة على الأسئلة باستخدام بياناتك الخاصة | خدمات أمازون ويب

استخدم نموذجًا أساسيًا للذكاء الاصطناعي للتلخيص والإجابة على الأسئلة باستخدام بياناتك الخاصة | خدمات أمازون ويب

يمكن استخدام نماذج اللغات الكبيرة (LLMs) لتحليل المستندات المعقدة وتقديم ملخصات وإجابات للأسئلة. المنشور التهيئة الدقيقة لتكييف المجال لنماذج الأساس في Amazon SageMaker JumpStart على البيانات المالية يصف كيفية ضبط LLM باستخدام مجموعة البيانات الخاصة بك. بمجرد حصولك على LLM قوي ، سترغب في عرض LLM لمستخدمي الأعمال لمعالجة المستندات الجديدة ، والتي قد تكون بطول مئات الصفحات. في هذا المنشور ، نوضح كيفية إنشاء واجهة مستخدم في الوقت الفعلي للسماح لمستخدمي الأعمال بمعالجة مستند PDF ذي طول عشوائي. بمجرد معالجة الملف ، يمكنك تلخيص المستند أو طرح أسئلة حول المحتوى. نموذج الحل الموضح في هذا المنشور متاح على GitHub جيثب:.

التعامل مع المستندات المالية

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

LLMs المستخدمة للتلخيص لها حد لعدد الرموز المميزة (الأحرف) التي تم تمريرها في النموذج ، ومع بعض الاستثناءات ، لا تزيد هذه عادةً عن بضعة آلاف من الرموز المميزة. هذا عادة ما يمنع القدرة على تلخيص وثائق أطول.

يتعامل حلنا مع المستندات التي تتجاوز الحد الأقصى لطول تسلسل الرمز المميز لـ LLM ، ويجعل هذا المستند متاحًا لـ LLM للإجابة على الأسئلة.

حل نظرة عامة

يتكون تصميمنا من ثلاث قطع مهمة:

  • يحتوي على تطبيق ويب تفاعلي لمستخدمي الأعمال لتحميل ملفات PDF ومعالجتها
  • يستخدم مكتبة langchain لتقسيم ملف PDF كبير إلى أجزاء أكثر قابلية للإدارة
  • يستخدم تقنية الاسترجاع المعزز التوليد للسماح للمستخدمين بطرح أسئلة حول البيانات الجديدة التي لم يرها LLM من قبل

كما هو موضح في الرسم البياني التالي ، نستخدم واجهة أمامية مطبقة مع React JavaScript مستضافة في ملف خدمة تخزين أمازون البسيطة (Amazon S3) أمامه الأمازون CloudFront. يتيح تطبيق الواجهة الأمامية للمستخدمين تحميل مستندات PDF إلى Amazon S3. بعد اكتمال التحميل ، يمكنك تشغيل وظيفة استخراج نص مدعومة من أمازون تيكستراك. كجزء من المعالجة اللاحقة ، فإن ملف AWS لامدا تقوم الوظيفة بإدراج علامات خاصة في النص تشير إلى حدود الصفحة. عند الانتهاء من هذه المهمة ، يمكنك استدعاء واجهة برمجة تطبيقات تلخص النص أو تجيب على أسئلة حوله.

استخدم نموذجًا أساسيًا للذكاء الاصطناعي التوليدي للتلخيص والإجابة على الأسئلة باستخدام بياناتك الخاصة | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

نظرًا لأن بعض هذه الخطوات قد تستغرق بعض الوقت ، فإن البنية تستخدم نهجًا غير متزامن منفصل. على سبيل المثال ، استدعاء تلخيص مستند ما يستدعي وظيفة Lambda التي تنشر رسالة إلى ملف خدمة Amazon Simple Queue Service قائمة انتظار (Amazon SQS). تقوم وظيفة أخرى في Lambda بالتقاط تلك الرسالة وتبدأ ملف خدمة الأمازون المرنة للحاويات (أمازون ECS) AWS فارجيت مهمة. تستدعي مهمة فارجيت ملف الأمازون SageMaker نقطة نهاية الاستدلال. نستخدم مهمة Fargate هنا لأن تلخيص ملف PDF طويل جدًا قد يستغرق وقتًا وذاكرة أطول مما توفره وظيفة Lambda. عند الانتهاء من التلخيص ، يمكن لتطبيق الواجهة الأمامية التقاط النتائج من ملف الأمازون DynamoDB الجدول.

للتلخيص ، نستخدم نموذج تلخيص AI21 ، أحد نماذج الأساس المتاحة من خلال أمازون سيج ميكر جومب ستارت. على الرغم من أن هذا النموذج يتعامل مع مستندات تصل إلى 10,000 كلمة (حوالي 40 صفحة) ، فإننا نستخدم أداة تقسيم النص langchain للتأكد من أن كل استدعاء تلخيص لـ LLM لا يزيد عن 10,000 كلمة. لتوليد النص ، نستخدم نموذج Cohere's Medium ، ونستخدم GPT-J لحفلات الزفاف ، عبر JumpStart.

معالجة التلخيص

عند التعامل مع المستندات الأكبر حجمًا ، نحتاج إلى تحديد كيفية تقسيم المستند إلى أجزاء أصغر. عندما نحصل على نتائج استخراج النص من Amazon Textract ، نقوم بإدخال علامات لأجزاء أكبر من النص (عدد الصفحات القابلة للتكوين) والصفحات الفردية وفواصل الأسطر. سيتم تقسيم Langchain بناءً على تلك العلامات وتجميع المستندات الأصغر التي تكون أقل من حد الرمز المميز. انظر الكود التالي:

text_splitter = RecursiveCharacterTextSplitter( separators = ["<CHUNK>", "<PAGE>", "n"], chunk_size = int(chunk_size), chunk_overlap = int(chunk_overlap)) with open(local_path) as f: doc = f.read() texts = text_splitter.split_text(doc) print(f"Number of splits: {len(texts)}") llm = SageMakerLLM(endpoint_name = endpoint_name) responses = [] for t in texts: r = llm(t) responses.append(r) summary = "n".join(responses)

LLM في سلسلة التلخيص عبارة عن غلاف رفيع حول نقطة نهاية SageMaker الخاصة بنا:

class SageMakerLLM(LLM): endpoint_name: str @property
def _llm_type(self) -> str: return "summarize" def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str: response = ai21.Summarize.execute( source=prompt, sourceType="TEXT", sm_endpoint=self.endpoint_name ) return response.summary 

الإجابة على السؤال

في طريقة الاسترجاع المعزز ، قمنا أولاً بتقسيم المستند إلى أجزاء أصغر. نقوم بإنشاء حفلات الزفاف لكل جزء وتخزينها في قاعدة بيانات Chroma vector مفتوحة المصدر عبر واجهة langchain. نحفظ قاعدة البيانات في ملف نظام ملفات أمازون المرن (Amazon EFS) لاستخدامه لاحقًا. انظر الكود التالي:

documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 0)
texts = text_splitter.split_documents(documents)
print(f"Number of splits: {len(texts)}") embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_name,
)
vectordb = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
vectordb.persist()

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

embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_embed
)
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embeddings)
docs = vectordb.similarity_search_with_score(question)

نأخذ أقرب جزء مطابق ونستخدمه كسياق لنموذج إنشاء النص للإجابة على السؤال:

cohere_client = Client(endpoint_name=endpoint_qa)
context = docs[high_score_idx][0].page_content.replace("n", "")
qa_prompt = f'Context={context}nQuestion={question}nAnswer='
response = cohere_client.generate(prompt=qa_prompt, max_tokens=512, temperature=0.25, return_likelihoods='GENERATION')
answer = response.generations[0].text.strip().replace('n', '')

تجربة المستخدم

على الرغم من أن LLMs تمثل علم بيانات متقدمًا ، فإن معظم حالات استخدام LLM تتضمن في النهاية التفاعل مع مستخدمين غير تقنيين. يتعامل تطبيق الويب الخاص بنا على سبيل المثال مع حالة استخدام تفاعلي حيث يمكن لمستخدمي الأعمال تحميل مستند PDF جديد ومعالجته.

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

واجهة المستخدم

الخطوات التالية

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

  • استفد من LLMs القوية المتوفرة بالفعل في نماذج مؤسسة Jumpstart. من خلال بضعة أسطر من التعليمات البرمجية ، يمكن لتطبيقنا النموذجي نشر واستخدام LLMs المتقدمة من AI21 و Cohere لتلخيص النص وإنشاءه.
  • اجعل هذه الإمكانات في متناول المستخدمين غير التقنيين. من المتطلبات الأساسية لمعالجة مستندات PDF استخراج النص من المستند ، وقد تستغرق مهام التلخيص عدة دقائق للتشغيل. يتطلب ذلك واجهة مستخدم بسيطة مع إمكانات معالجة خلفية غير متزامنة ، والتي يسهل تصميمها باستخدام خدمات السحابة الأصلية مثل Lambda و Fargate.

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

وفي الختام

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

في الوقت الحالي ، لا يوجد سبب لعدم إتاحة هذه الإمكانات القوية لمستخدميك. نحن نشجعك على البدء في استخدام نماذج مؤسسة Jumpstart اليوم.


عن المؤلف

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

الطابع الزمني:

اكثر من التعلم الآلي من AWS