مفهوم اصلی
در سیستم RAG، بعد از اینکه Retriever اطلاعات مرتبط را پیدا میکند، این اطلاعات به شکل یک Augmented Prompt به LLM ارسال میشوند.
اما یک سؤال مهم وجود دارد:
LLM چگونه این اطلاعات را درک میکند و بر اساس آن پاسخ تولید میکند؟
پاسخ این سؤال در معماری Transformer قرار دارد؛ معماریای که پایه اصلی اکثر LLMهای امروزی است.
معرفی Transformer
معماری Transformer در سال 2017 در مقاله معروف:
Attention Is All You Need
معرفی شد.
هدف اولیه این معماری:
- حل مسئله Machine Translation (ترجمه ماشینی)
بود.
اجزای اصلی Transformer
Transformer اولیه دو بخش اصلی داشت:
- Encoder
- Decoder
1. Encoder
وظیفه
Encoder متن ورودی را پردازش میکند و یک درک عمیق از معنی آن ایجاد میکند.
مثال:
ورودی:
- یک پاراگراف آلمانی
Encoder:
- معنی متن را تحلیل میکند.
- ارتباط بین کلمات را استخراج میکند.
2. Decoder
وظیفه
Decoder بر اساس اطلاعات Encoder:
- متن جدید تولید میکند.
مثال:
ورودی:
متن آلمانی
خروجی:
ترجمه انگلیسی
Encoder و Decoder در LLMها
بیشتر LLMهای امروزی فقط بخش:
Decoder
را استفاده میکنند.
دلیل:
هدف اصلی آنها:
- تولید متن
است.
در مقابل:
Encoderها معمولاً در:
Embedding Model
استفاده میشوند.
زیرا هدف آنها:
- ساخت نمایش معنایی از متن
است.
مسیر یک Prompt داخل LLM
مرحله 1: Tokenization
اولین مرحله:
Prompt به Tokenها تقسیم میشود.
مثلاً:
یک جمله تبدیل میشود به مجموعهای از بخشهای کوچکتر.
مرحله 2: ایجاد Vector اولیه برای Tokenها
هر Token یک:
Dense Vector
دریافت میکند.
این Vector:
- اولین حدس مدل درباره معنی Token است.
ویژگی این Vector:
Static است.
یعنی:
اگر یک Token یکسان چند بار وارد مدل شود:
همیشه همان Vector اولیه را دریافت میکند.
مرحله 3: Positional Vector
LLM باید بداند هر Token کجای جمله قرار دارد.
بنابراین:
به هر Token یک:
Positional Vector
اضافه میشود.
این Vector اطلاعات موقعیت Token را نگه میدارد.
مرحله 4: Attention Mechanism
بعد از آماده شدن Tokenها، وارد مهمترین بخش Transformer میشوند:
Attention
مفهوم Attention
Attention یعنی:
هر Token تصمیم میگیرد به کدام Tokenهای دیگر بیشتر توجه کند.
هر Token:
- معنی خود را بررسی میکند.
- موقعیت Tokenهای دیگر را میبیند.
- میزان اهمیت آنها را مشخص میکند.
مثال
جمله:
The brown dog sat next to the red fox
کلمه:
dog
احتمالاً بیشتر به:
- brown
- sat
توجه میکند.
چون این کلمات ارتباط مستقیم با dog دارند.
مثلاً:
dog attention:
brown → 70%
sat → 20%
سایر کلمات → 10%
Attention Head
مکانیزمی که Attention را محاسبه میکند:
Attention Head
نام دارد.
LLMها معمولاً چندین Attention Head دارند.
دلیل وجود چند Attention Head
هر Head میتواند نوع متفاوتی از رابطه را یاد بگیرد.
مثلاً:
Head اول:
رابطه بین:
- شیء
- ویژگی آن
مثلاً:
fox → brown
Head دوم:
رابطه مکانی:
مثلاً:
fox → next / sat
اما این روابط از قبل توسط انسان تعریف نشدهاند.
مدل خودش در زمان Training آنها را یاد میگیرد.
تعداد Attention Headها
مدلهای کوچک:
- حدود 8 تا 16 Head
مدلهای بزرگ:
- بیش از 100 Head
دارند.
نتیجه Attention
Attention باعث میشود:
هر Token ارتباط خود با تمام Tokenهای دیگر را بررسی کند.
نتیجه:
- یک نمایش بسیار دقیق از روابط بین کلمات ایجاد میشود.
مرحله Feedforward
بعد از Attention:
اطلاعات وارد:
Feedforward Network
میشود.
این بخش:
بزرگترین قسمت LLM است و بیشترین تعداد Parameterها را دارد.
وظیفه Feedforward
با استفاده از:
- Vector اولیه Token
- Position
- Attention
یک Vector جدید برای هر Token ایجاد میکند.
این Vector جدید:
درک بهتر و دقیقتری از معنی Token دارد.
زیرا Context سایر کلمات را هم در نظر گرفته است.
تکرار لایههای Transformer
LLM معمولاً این فرآیند را چندین بار تکرار میکند:
Attention
↓
Feedforward
↓
Vectorهای بهتر
یک مدل معمولی ممکن است:
- 8 تا 64 بار
این فرآیند را تکرار کند.
هر مرحله:
درک مدل از متن را بهتر میکند.
تولید Token جدید
بعد از پردازش کامل:
LLM آماده تولید متن میشود.
مدل بررسی میکند:
بر اساس Training Data، چه Tokenهایی احتمال دارند بعدی باشند؟
Probability Distribution
LLM برای تمام Tokenهای Vocabulary احتمال ایجاد میکند.
مثلاً:
Vocabulary:
100,000 Token
برای هر Token:
یک احتمال محاسبه میشود.
تعداد کمی Token:
احتمال بالا دارند.
بقیه:
تقریباً صفر هستند.
انتخاب Token
مدل یکی از Tokenها را انتخاب میکند.
انتخاب:
بر اساس احتمال Tokenها انجام میشود.
بنابراین:
- Tokenهای محتمل بیشتر انتخاب میشوند.
- اما Tokenهای کماحتمال هم ممکن است انتخاب شوند.
تولید کامل پاسخ
بعد از انتخاب Token:
Token به انتهای Prompt اضافه میشود.
برای Token بعدی:
کل فرآیند دوباره اجرا میشود.
یعنی:
Prompt
↓
Generate Token 1
↓
Generate Token 2
↓
Generate Token 3
↓
...
تا زمانی که:
- محدودیت Token تمام شود.
- مدل Token پایان متن تولید کند.
ارتباط Transformer با RAG
شناخت Transformer چند نکته مهم برای طراحی RAG مشخص میکند.
1. چرا RAG کار میکند؟
LLM میتواند:
- معنی اطلاعات اضافهشده در Prompt را بفهمد.
- ارتباط آن را با سؤال کاربر درک کند.
دلیل:
- Attention Mechanism
- اطلاعات یادگرفتهشده در Feedforward Layers
است.
2. LLM هنوز تصادفی است
حتی اگر اطلاعات مفید به Prompt اضافه شود:
LLM ممکن است:
- به شکل کامل از آن استفاده نکند.
زیرا فرآیند انتخاب Token دارای Randomness است.
بنابراین در RAG لازم است:
- رفتار مدل کنترل شود.
- بررسی شود پاسخ واقعاً بر اساس Retrieval تولید شده است.
3. هزینه محاسباتی LLM
اجرای Transformer بسیار پرهزینه است.
دلیل:
برای تولید هر Token:
مدل باید ارتباط آن با Tokenهای دیگر را بررسی کند.
هرچه:
- Prompt طولانیتر باشد.
- Completion طولانیتر باشد.
هزینه بیشتر میشود.
نکته مهم در RAG
بخش زیادی از هزینه سیستم RAG مربوط به اجرای همین مدلهای Transformer قدرتمند است.
به همین دلیل:
- مدیریت Context
- Chunking مناسب
- Retrieval دقیق
اهمیت زیادی دارند.
جمعبندی
- Transformer معماری اصلی اکثر LLMهای امروزی است.
- Transformer اولیه شامل Encoder و Decoder بود، اما بیشتر LLMها فقط Decoder دارند.
- Prompt ابتدا Tokenize شده و هر Token Vector و Position دریافت میکند.
- Attention ارتباط بین Tokenها را تحلیل میکند.
- Attention Headهای مختلف روابط متفاوتی را یاد میگیرند.
- Feedforward Network Vectorهای Tokenها را با توجه به Context بهبود میدهد.
- LLM با محاسبه احتمال Tokenها، متن را مرحلهبهمرحله تولید میکند.
- RAG به دلیل توانایی LLM در درک Context داخل Prompt کار میکند.
- با این حال LLMها همچنان تصادفی و پرهزینه هستند، بنابراین طراحی صحیح RAG ضروری است.