ویرگول
ورودثبت نام
هادی
هادی
هادی
هادی
خواندن ۷ دقیقه·۸ ماه پیش

هوش مصنوعی تولیدی(Generative AI)

Generative AI
Generative AI


در این مقاله قصد داریم در مورد GenAI و قابلیت ها و محدودیت هاش صحبت کنیم.

در ابتدا باید با مفهوم GenAI آشنا شویم. Generative AI یا هوش مصنوعی تولیدی، نوعی از هوش مصنوعی است که میتواند محتوای جدیدی را تولید کند. نمونه بارز این هوش مصنوعی ها، چت بات های هوشمند میباشند که با استفاده از LLM ها یک خروجی برای پرسش و درخواست کاربر آماده میکنند.

با توجه به اینکه این مفهوم در دنیای نرم افزار جدید است و سرعت پیشرفت بالایی دارد و همچنین از مرحله Concept وارد مرحله عملیاتی شده، تکنیک ها و تکنولوژی های موجود به سرعت در حال تغییر و پیشرفت مطابق با آن میباشند.

در ابتدا از حالت های ساده یک GenAI شروع میکنیم، مشکلات آن را بررسی میکنیم و راهکار مناسب را نیز شرح خواهیم داد.

ساده ترین حالت ممکن ارسال مستقیم prompt به LLM و دریافت پاسخ از آن میباشد. در این روش هیچ کنترلی انجام نمیشود و LLM با توجه به اطلاعاتی که آموزش داده شده است پاسخ میدهد. پایگاه دانش LLM یک پایگاه دانش محدود است و قطعا تمام موضوعات را در بر نمیگیرد. همچنین میتوان گفت LLM یک پاسخ دهنده مغرور است و اگر موضوعی را نداند به آن اقرار نمیکند و ممکن است پاسخ اشتباهی را تولید کند.

در نتیجه استفاده از LLM به تنهایی برای موارد خاص یا پایگاه دانش خصوصی نتیجه رضایت بخشی ندارد و باید با سایر روش ها ترکیب شود. قبل از شروع بیان راهکارها ابتدا باید چند مفهوم از جمله Eval ها(ارزیاب های LLM) و Embedding را توضیح داد.


مفهوم Eval یا ارزیاب LLM: برای ارزیابی خروجی یک LLM و اینکه چه میزان این خروجی صحیح میباشد میتوان از راهکارهای زیر استفاده کرد:

1- ارزیابی یک LLM توسط خود LLM: میتوان پرسش و پاسخ تولید شده را مجدد به صورت یکجا به خود LLM داد و در یک prompt از آن درخواست کرد صحت این پرسش و پاسخ را بررسی کند. این یک روش ساده است اما به شدت دارای ریسک است. مدل میتواند پاسخ اشتباه خود را تصدیق کند و یک پاسخ کاملا اشتباه تولید کند.

2- بررسی خروجی توسط یک اپراتور: یک راهکار سنتی و همیشگی، بررسی خروجی توسط یک فرد مسلط به آن حیطه میباشد. برای حجم دیتا بالا قطعا این روش پاسخگو نیست اما میتوان با روش های دیگر آن را ترکیب کرد تا از خروجی اطمینان حاصل شود

3- استفاده از یک LLM تصدیق گر: روش دیگر استفاده از یک LLM دیگر به عنوان تصدیق گر یا ارزیاب میباشد. برخی LLM ها به همین منظور trainمیشوند و مناسب این کار میباشند.

مفهوم Embedding: در واقع LLM ها شبکه های عصبی ای هستند که شامل لایه های ورودی، لایه های پنهان و لایه های خروجی میباشند. یکی از لایه های ورودی Embedding نام دارد. در این بخش داده های ورودی به بردارهای عددی تبدیل میشوند و بعد به لایه های پنهان ارسال میشوند. در واقع LLM از داده های عددی برای بررسی ورودی و تولید پاسخ استفاده میکند. از Embedding برای یافتن و جستجو میان شباهت های داده های مختلف میتوان استفاده کرد. اما باید توجه داشت این روش برای داده های غیرساختار یافته مانند متن ها و فایل ها و تصاویر مناسب میباشد. برای داده های ساختار یافته مانند دیتابیس های SQL این روش به این صورت قابل استفاده نیست. مفهوم Vector Store نیز به یک Storage برای داده های برداری اشاره دارد که امکان ذخیره سازی و جستجو بر طبق این نوع داده را فراهم میکند. با توجه به اینکه خود LLM به صورت ذاتی از Embedding استفاده میکند، برای جستجو نیز میتواند این موضوع یک روش مناسب باشد.

تا اینجا با موضوع GenAI و Direct prompt و مفاهیم eval, embedding و vector store آشنا شدیم. حال به سراغ بهبود روش Direct Promptمیرویم.

میتوانیم از دو روش RAG یا Fine tuning برای این موضوع استفاده کنیم.

ابتدا میرسیم به RAG یا Retrieve augmented document به مفهومی اشاره دارد که همراه با Prompt کاربر مجموعه ای از داده های مرتبط دیگر نیز به LLM ارسال گردد تا به کمک آن پاسخ را تولید کند. متداول ترین روش این است که مجموعه ای از فایل ها برای مثال فایل های PDF را با استفاده از Embedding model به بردارهای عددی تبدیل کرده و در یک Vector storeذخیره کرد. زمان دریافت ورودی کاربر، این ورودی را نیز به یک بردار عددی تبدیل کرده و با استفاده از الگوریتم های ANN similarity search بر روی vector store، محتوای مرتبط را استخراج کرده و همراه ورودی کاربر به LLM ارسال کنیم. این روش بدون نیاز به دستکاری LLM قابلیت تولید پاسخ بر اساس پایگاه دانش خصوصی را دارد و یک روش به صرفه و بهینه میباشد. اما این روش محدودیت ها و مشکلاتی نیز همراه خود دارد.

1- بازیابی اطلاعات نامناسب و غیربهینه از vector database: همانطور که گفته شد اطلاعات ابتدا تبدیل به داده های عددی شده و در vector database ذخیره میشود. شیوه انجام این عملیات به پارامترهای مختلفی به خصوص سایز chunk ها در embedding بستگی دارد. با جدا سازی تکه های مختلف یک محتوا شاید مفهوم معنایی آن نیز از بین رود. یک مثال خیلی ساده، شاید پاسخ یک پرسش در دو بخش جدا از هم embedding و ذخیره شود و از نظر معنایی و برداری یکی از این بخش ها ارتباط کمتری با موضوع داشته باشند و در نتیجه در خروجی ظاهر نشود. اما اگر این دو بخش بصورت یکجا و در یک بخش ذخیره میشدند نتیجه دقیقتری تولید میشد. یک راهکار برای حل این مشکل استفاده از روش های جستجوی دیگر در کنار این روش میباشد. برای مثال استفاده از روش مرسوم جستجوی keyword ها برای نمونه در Elasticsearch ، که داده ها در این حالت نیز باید در storage یا دیتابیس مخصوص ذخیره شوند. میتوان علاوه بر جستجوی برداری، جستجوی keyword را نیز انجام داد و مجموعه بزرگتری از اطلاعات را به LLM برای تولید پاسخ بهتر ارسال کرد. اما مشکلی که به وجود می آورد ارسال اطلاعات خیلی بیشتر به LLM میباشد که ممکن است چالش هایی ایجاد کند.

2- پرسش غیر دقیق کاربر: هیچگاه کاربر به طور دقیق نمیتواند پرسش خود را مطرح کند به گونه ای که پرسش به بهترین شیوه بیان شده باشد. این موضوع در خروجی LLM تاثیر بسزایی دارد. یکی از راهکار استفاده از خود LLM برای بهبود پرسش کاربر است. میتوان از همان LLM یا یک LLM دیگر استفاده کرد و پرسش کاربر را به آن ارسال کرد و درخواست داد تا معادل های کامل تری برای این پرسش تولید کند، سپس آنها را برای تولید خروجی نهایی به LLM ارسال کرد. در این روش نیز دوبار از LLM استفاده شده است که موضوع performance باید مورد توجه قرار گیرد.

3- عدم توانایی LLM در پردازش مناسب حجم زیاد دیتا ورودی: در صورتی که حجم دیتا ورودی به LLM برای پرسش زیاد باشد نتیجه ممکن است رضایت بخش نباشد. معمولا LLM ها اگر پاسخ در ابتدای محتوا یا در انتهای محتوا باشد پاسخ خوبی تولید میکنند اما اگر پاسخ اصلی در میانه محتوا باشد و ورودی نیز به شدت زیاد باشد، پاسخ رضایت بخشی تولید نخواهند کرد. برای حل این مشکل یکی از راه حل ها استفاده از Reranker ها میباشد. وظیفه Rerankerارزیابی و امتیازدهی به محتوای بازیابی شده از Vector database ها یا سایر سورس ها میباشد. Reranker از شبکه های عصبی عمیق و الگوریتم های خاص خود استفاده میکند و هر محتوای بازیابی شده و ارتباط آن با پرسش کاربر را امتیازدهی میکند. سپس میتوانیم محتوا با امتیاز پایینتر را از لیست حذف کنیم تا محتوای ارسال شده به LLMکاهش یابد. موضوع performance را نیز باید مورد توجه قرار داد.

4- امنیت: یکی از مهم ترین مشکلات LLM ها بحث محدودسازی ها و امنیت و تعیین سطوح دسترسی به اطلاعات میباشد. میتوان به راحتی LLM را دور زد تا نکات امنیتی را مورد توجه قرار ندهد و هر نوع پرسشی را پاسخ دهد. یکی از راهکارها استفاده از Guardrail ها میباشد که در واقع یک LLM است که مخصوص این کار train داده شده و جلوی LLM اصلی قرار میگرد و ابتدا ورودی کاربر را بررسی میکند که آیا با قوانین داده شده مطابقت دارد یا خیر. در این روش نیز با توجه به استفاده از یک LLM دیگر باید performance را مورد توجه قرار داد.

تا اینجا RAG و محدودیت ها و راهکارهای مقابله با محدودیت ها شرح داده شد. گاهی اوقات پرسش کاربر در مورد یک موضوع خیلی خاص و پیشرفته است و ممکن است با استفاده از RAG نیز پاسخ مطلوب ایجاد نشود. در اینجا موضوع Fine Tune کردن LLM های از پیش آموزش داده شده مطرح میشود. برخی از LLM ها با در اختیار قرارداد یک API امکان fine tune کردن مدل یا تغییر پارامترهای محاسباتی شبکه عصبی را فراهم میکنند. اما باید دقت داشت این کار به توان سخت افزاری بالایی نیاز دارد و در خیلی موارد شاید به صرفه نباشد.

و در آخر ساخت یک LLM اختصاصی! در اکثر موارد روش های بالا پاسخگو هستند و نیازی حتی به fine tune کردن نیز نمیباشد اما اگر تمام راهکار را امتحان کردید و باز هم پاسخ مطلوب تولید نشد باید سراغ یک LLM اختصاصی بروید!

هوش مصنوعیai
۰
۰
هادی
هادی
شاید از این پست‌ها خوشتان بیاید