مفهوم اصلی
بعد از آشنایی با معماری کلی RAG، در این بخش بررسی میکنیم که مهمترین جزء آن یعنی LLM (Large Language Model) چگونه کار میکند.
درک نحوه عملکرد، نقاط قوت و محدودیتهای LLM کمک میکند بفهمیم چرا سایر اجزای RAG برای بهبود عملکرد آن طراحی شدهاند.
LLM چیست و چگونه کار میکند؟
LLM به عنوان یک Autocomplete پیشرفته
گاهی به شوخی LLMها را Autocomplete پیشرفته مینامند، اما این تعریف تا حد زیادی درست است.
وظیفه اصلی یک LLM:
پیشبینی کلمه یا بخش بعدی متن بر اساس متن قبلی است.
مثال:
Prompt:
What a beautiful day, the sun is ...
LLM باید حدس بزند چه چیزی بعد از این جمله قرار میگیرد.
Completionهای ممکن:
- The sun is shining
- The sun is rising
- The sun is out
همه این موارد میتوانند از نظر زبانی درست باشند.
مفهوم Prompt و Completion
Prompt
متنی که به LLM داده میشود.
مثال:
What a beautiful day, the sun is...
Completion
متنی که LLM به Prompt اضافه میکند.
مثال:
What a beautiful day, the sun is shining.
احتمال و معنی در پاسخهای LLM
یک Completion ممکن است از نظر گرامری درست باشد، اما احتمال کمی داشته باشد.
مثال:
The sun is exploding
این جمله از نظر زبان انگلیسی اشتباه نیست، اما احتمال آن بسیار پایین است، زیرا:
- خورشید معمولاً منفجر نمیشود.
- با مفهوم "یک روز زیبا" هماهنگ نیست.
انسانها بهصورت شهودی میدانند چه کلماتی در چه شرایطی مناسب هستند.
LLM نیز به شکلی مشابه، این روابط را یاد گرفته است.
ساختار داخلی LLM
درون LLM یک:
Neural Network (شبکه عصبی)
وجود دارد.
این شبکه یک مدل ریاضی بسیار بزرگ و پیچیده از زبان است.
مدل اطلاعاتی درباره موارد زیر ذخیره میکند:
- چه کلماتی معمولاً کنار هم استفاده میشوند.
- ترتیب معمول قرار گرفتن کلمات.
- معنی کلمات در Contextهای مختلف.
این نمایش ریاضی از زبان، پایه تولید متن جدید توسط مدل است.
نحوه تولید متن توسط LLM
LLM متن را یکباره تولید نمیکند.
فرآیند تولید:
- Prompt دریافت میشود.
- مدل یک Token بعدی را انتخاب میکند.
- Token انتخابشده به متن اضافه میشود.
- دوباره همین فرآیند تکرار میشود.
مثال:
Prompt:
The sun is
مرحله اول:
The sun is shining
مرحله دوم:
The sun is shining in
مرحله سوم:
The sun is shining in the sky
تا زمانی که مدل تشخیص دهد پاسخ کامل شده است.
Token چیست؟
LLMها در واقع کلمه تولید نمیکنند، بلکه Token تولید میکنند.
Token بخش کوچکتری از متن است.
مثال:
برخی کلمات ممکن است یک Token کامل باشند:
London
door
اما کلمات پیچیده ممکن است به چند Token تقسیم شوند:
programmatically
ممکن است به چند بخش شکسته شود.
همچنین علائم نگارشی نیز میتوانند Token باشند:
- .
- ,
- ?
Vocabulary در LLM
بیشتر LLMها دارای واژگانی بین:
- حدود ۱۰ هزار Token
- تا بیش از ۱۰۰ هزار Token
هستند.
مزیت استفاده از Tokenهای کوچکتر:
- مدل نیاز ندارد برای هر کلمه ممکن یک Token جدا داشته باشد.
- میتواند کلمات جدید و ترکیبی را با کنار هم قرار دادن Tokenها بسازد.
فرآیند انتخاب Token بعدی
قبل از اضافه کردن هر Token جدید، LLM این مراحل را انجام میدهد:
مرحله ۱: درک Context فعلی
مدل وضعیت فعلی متن را بررسی میکند و ارتباط بین کلمات و معنی کلی متن را تحلیل میکند.
مرحله ۲: محاسبه احتمال Tokenها
LLM تمام Tokenهای موجود در Vocabulary خود را بررسی میکند.
برای هر Token احتمال ظاهر شدن در مرحله بعد را محاسبه میکند.
مثال:
برای جمله:
The sun is ...
احتمالها ممکن است:
- shining → احتمال بالا
- rising → احتمال کمتر
- exploding → احتمال بسیار کم
باشند.
مرحله ۳: انتخاب Token
مدل بر اساس توزیع احتمال، Token بعدی را انتخاب میکند.
مثلاً:
- ۸۰ درصد مواقع: shining
- گاهی: rising
- حتی ممکن است: exploding
انتخابهای کماحتمال نیز ممکن است رخ دهند.
رفتار Autoregressive در LLM
LLMها رفتار Autoregressive دارند.
معنی:
خروجیهای قبلی روی انتخابهای بعدی تأثیر میگذارند.
مثال:
اگر مدل انتخاب کند:
The sun is shining
احتمالاً ادامه میدهد:
in the sky
اما اگر ابتدا انتخاب کند:
The sun is warming
ممکن است ادامه دهد:
our faces
چون مسیر تولید متن تغییر کرده است.
چرا یک Prompt چند بار پاسخهای متفاوت میدهد؟
به دلیل دو ویژگی:
- انتخاب تصادفی بر اساس احتمال
- رفتار Autoregressive
بنابراین اجرای یک Prompt مشابه چند بار ممکن است Completionهای متفاوت ایجاد کند.
آموزش LLM چگونه انجام میشود؟
LLMها از مجموعههای عظیم متن آموزش میبینند.
فرآیند آموزش:
- مدل با یک متن ناقص مواجه میشود.
- تلاش میکند Token بعدی را پیشبینی کند.
- میزان درستی پیشبینی بررسی میشود.
- پارامترهای داخلی مدل تغییر داده میشوند.
با تکرار این فرآیند، مدل یاد میگیرد:
- اطلاعات موجود در دادهها
- سبکهای مختلف نوشتاری
- الگوهای زبانی
را تولید کند.
پارامترهای LLM
مدلهای بزرگ دارای:
- میلیاردها پارامتر
- وزنهای عددی داخلی
هستند.
قبل از آموزش:
- خروجی مدل بیمعنی است.
بعد از آموزش:
- مدل توانایی تولید متن مرتبط پیدا میکند.
دادههای آموزشی LLM
بسیاری از LLMهای امروزی روی:
- تریلیونها Token متن
- بخش زیادی از اینترنت عمومی
آموزش دیدهاند.
به همین دلیل میتوانند:
- موضوعات مختلف
- سبکهای مختلف نوشتاری
را تولید کنند.
محدودیت مهم LLM: Hallucination
مفهوم Hallucination
LLM فقط توالیهایی از کلمات را تولید میکند که بر اساس آموزش آنها احتمال بیشتری دارند.
اما همیشه این احتمال با حقیقت برابر نیست.
مثال:
اگر از مدل درباره:
- اطلاعات خصوصی شرکت
- اخبار امروز
سؤال شود، احتمالاً این اطلاعات در داده آموزشی آن وجود نداشتهاند.
در نتیجه ممکن است مدلی پاسخی بدهد که:
- درست به نظر برسد.
- اما واقعاً اشتباه باشد.
چرا Hallucination رخ میدهد؟
LLM برای تولید:
- متن محتمل
طراحی شده است، نه الزاماً:
- متن کاملاً واقعی.
از دید LLM، "حقیقت" یعنی:
یک دنباله از کلمات که بر اساس دادههای آموزشی احتمال بالایی دارد.
نقش RAG در حل محدودیت LLM
RAG از توانایی LLM در درک Context استفاده میکند.
اگر سیستم RAG اطلاعات مرتبط را به Prompt اضافه کند:
- LLM میتواند آن اطلاعات را بفهمد.
- حتی اگر آن اطلاعات در داده آموزشی مدل نبوده باشند.
به این کار:
Grounding the LLM
گفته میشود.
یعنی پاسخ مدل به اطلاعات واقعیتر متصل میشود.
محدودیت اضافه کردن اطلاعات زیاد به Prompt
ممکن است تصور شود هرچه اطلاعات بیشتری به Prompt اضافه کنیم بهتر است، اما محدودیتهایی وجود دارد.
1. افزایش هزینه محاسباتی
Promptهای طولانیتر:
- پردازش بیشتری نیاز دارند.
- زمان و هزینه اجرای مدل را افزایش میدهند.
زیرا قبل از تولید هر Token جدید، مدل باید Tokenهای قبلی را بررسی کند.
2. محدودیت Context Window
هر LLM یک محدودیت دارد به نام:
Context Window
یعنی:
بیشترین مقدار متنی که مدل میتواند در یک زمان پردازش کند.
مدلهای قدیمی:
- چند هزار Token
مدلهای جدید:
- میلیونها Token
اگر Retriever اطلاعات زیادی اضافه کند:
- ابتدا هزینه افزایش پیدا میکند.
- سپس ممکن است Context Window پر شود.
استفاده از TogetherAI در دوره
در این دوره از:
TogetherAI
استفاده خواهد شد.
TogetherAI مدلهای Open Source مختلفی را ارائه میدهد.
مزیت استفاده از مدلهای Open Source:
- امکان بررسی عملکرد داخلی LLM
- درک بهتر مفاهیم مطرحشده در دوره
جمعبندی
- LLM در اصل Token بعدی متن را پیشبینی میکند.
- Prompt ورودی مدل و Completion خروجی تولیدشده است.
- LLMها با استفاده از Neural Network و میلیاردها پارامتر آموزش میبینند.
- مدلها متن را Token به Token تولید میکنند.
- انتخاب Token بعدی بر اساس توزیع احتمال انجام میشود.
- رفتار LLMها Autoregressive است؛ یعنی خروجیهای قبلی روی ادامه متن اثر میگذارند.
- LLMها ممکن است دچار Hallucination شوند، زیرا هدف آنها تولید متن محتمل است نه تضمین حقیقت.
- RAG با اضافه کردن اطلاعات مرتبط به Prompt، پاسخهای LLM را Ground میکند.
- اضافه کردن اطلاعات زیاد محدودیتهایی مانند هزینه محاسباتی و Context Window ایجاد میکند.