مفهوم اصلی
وظیفه اصلی یک Embedding Model ساده است:
تبدیل متنهای مشابه به Vectorهایی که در فضای برداری به یکدیگر نزدیک باشند و متنهای غیرمشابه را به Vectorهایی دورتر از هم تبدیل کند.
اما انجام این کار بسیار پیچیده است، زیرا مدل باید بتواند مفهوم و معنی متن را درک کند.
سؤال اصلی:
یک کامپیوتر چگونه میتواند معنی یک متن را بفهمد و آن را به یک موقعیت در فضای ریاضی تبدیل کند؟
پاسخ در نحوه آموزش Embedding Model قرار دارد.
مفهوم Positive Pair و Negative Pair
آموزش Embedding Model بر اساس مقایسه متنهای مشابه و متفاوت انجام میشود.
Positive Pair (جفت مثبت)
دو متن که معنی مشابهی دارند.
هدف:
Vector آنها باید به یکدیگر نزدیک شود.
مثال:
Good morning
Hello
این دو عبارت از نظر مفهوم مشابه هستند، بنابراین باید در فضای Vector نزدیک قرار بگیرند.
Negative Pair (جفت منفی)
دو متن که معنی متفاوتی دارند.
هدف:
Vector آنها باید از یکدیگر دور شود.
مثال:
Good morning
That's a noisy trombone
این دو متن ارتباط معنایی ندارند، بنابراین باید فاصله بیشتری داشته باشند.
هدف آموزش Embedding Model
مدل باید طوری آموزش ببیند که:
- Positive Pairها → نزدیک شوند.
- Negative Pairها → از هم دور شوند.
مرحله اول آموزش: ساخت Dataset
اولین مرحله آموزش:
ایجاد مجموعه بزرگی از:
- Positive Pair
- Negative Pair
است.
این مجموعهها معمولاً بسیار بزرگ هستند و ممکن است شامل:
- میلیونها نمونه
باشند.
هر کلمه یا متن در نمونههای زیادی قرار میگیرد تا رابطه آن با مفاهیم مختلف یاد گرفته شود.
مرحله دوم: شروع آموزش با Vectorهای تصادفی
در ابتدای آموزش:
Embedding Model هر متن را به یک Vector تصادفی تبدیل میکند.
این Vectorها:
- معنی خاصی ندارند.
- هیچ ارتباطی با مفهوم متن ندارند.
اگر در این مرحله از مدل برای Retrieval استفاده شود:
نتایج کاملاً بیمعنی خواهند بود.
Contrastive Training (آموزش تضادی)
پس از ایجاد Vectorهای اولیه، مدل شروع به مقایسه میکند.
مدل بررسی میکند:
- آیا Positive Pairها به اندازه کافی نزدیک هستند؟
- آیا Negative Pairها به اندازه کافی دور هستند؟
به دلیل استفاده از تضاد بین نمونههای مثبت و منفی، این روش:
Contrastive Training
نام دارد.
بهروزرسانی پارامترهای مدل
بر اساس نتیجه ارزیابی:
مدل پارامترهای داخلی خود را تغییر میدهد.
هدف:
- نزدیکتر کردن Positive Pairها
- دورتر کردن Negative Pairها
فرآیند تکراری آموزش
این فرآیند بارها تکرار میشود:
- متنها با پارامترهای جدید به Vector تبدیل میشوند.
- عملکرد مدل با Positive و Negative Pairها بررسی میشود.
- پارامترهای مدل دوباره تغییر میکنند.
- Vectorها دوباره اصلاح میشوند.
این چرخه بارها تکرار میشود تا ساختار معنایی مناسبی شکل بگیرد.
مثال آموزشی با یک متن مشخص
فرض کنید عبارت زیر را داریم:
He could smell the roses
این عبارت را:
Anchor Point
مینامیم.
Positive Pair
متن مشابه:
A field of fragrant flowers
این باید به Anchor نزدیک شود.
Negative Pair
متن نامرتبط:
A lion roared majestically
این باید از Anchor دور شود.
وضعیت قبل از آموزش
در شروع:
هر سه عبارت در نقاط تصادفی قرار دارند.
Vectorها هیچ معنی خاصی ندارند.
هدف مدل
از دید Anchor:
- عبارت مربوط به گلها باید به سمت آن کشیده شود.
- عبارت مربوط به شیر باید از آن دور شود.
پس از آموزشهای متعدد:
- متنهای مشابه نزدیک میشوند.
- متنهای متفاوت فاصله میگیرند.
پیچیدگی در مقیاس واقعی
در مثال ساده فقط چند نقطه وجود داشت.
اما در عمل:
- میلیونها Anchor
- میلیونها Positive Pair
- میلیونها Negative Pair
وجود دارند.
در نتیجه:
هر Vector همزمان از جهات مختلف:
- کشیده میشود.
- رانده میشود.
چرا Embeddingها ابعاد زیادی دارند؟
به همین دلیل Vectorهای Embedding معمولاً:
- صدها
- یا هزاران
بعد دارند.
فضای چندبعدی بالا به مدل اجازه میدهد:
- روابط پیچیدهتر را نمایش دهد.
- مفاهیم نزدیک را در مناطق مناسب قرار دهد.
معنی Vectorهای Semantic
یک نکته مهم:
Vectorهای Semantic ذاتاً معنی مشخصی ندارند.
قبل از آموزش
مکان یک نقطه در فضای Vector:
- تصادفی است.
- هیچ مفهوم خاصی ندارد.
بعد از آموزش
مکانها دارای معنی میشوند، اما نه به صورت مستقیم.
معنی از طریق Clusterها ایجاد میشود.
مثال:
ممکن است یک بخش از فضای Vector شامل:
- کلمات مرتبط با شیرها
باشد.
و بخش دیگری شامل:
- مفاهیم مرتبط با ترومپت
باشد.
چرا اجرای دوباره آموزش ممکن است مکانهای متفاوت ایجاد کند؟
اگر آموزش دو بار انجام شود:
اما با:
- Vectorهای اولیه متفاوت
- مقادیر تصادفی اولیه متفاوت
ممکن است:
- Clusterهای مشابه شکل بگیرند.
- اما در نقاط متفاوت فضای Vector قرار بگیرند.
یعنی:
ساختار معنایی حفظ میشود، اما مختصات دقیق تغییر میکند.
مقایسه Vectorهای Embedding
یک قانون مهم:
فقط Vectorهایی را مقایسه کنید که توسط یک Embedding Model یکسان ساخته شدهاند.
چرا؟
چون مدلهای مختلف:
- داده آموزشی متفاوت دارند.
- تعداد ابعاد متفاوت دارند.
- مقداردهی اولیه متفاوت دارند.
بنابراین مقایسه Vectorهای دو مدل مختلف نتیجه معنیداری ندارد.
استفاده عملی در RAG
در عمل معمولاً:
- Embedding Model آماده استفاده میشود.
- نیازی به آموزش مدل جدید نیست.
مدلهای آماده معمولاً عملکرد خوبی دارند و میتوانند:
- کلمات مشابه
- جملات مشابه
- اسناد مشابه
را در فضای Vector نزدیک قرار دهند.
نکات مهم برای استفاده از Embedding در RAG
- معمولاً لازم نیست فاصله Vectorها را خودتان پیادهسازی کنید.
- کتابخانهها و ابزارهای آماده این محاسبات را انجام میدهند.
- اما درک نحوه کار Embedding Model کمک میکند بهتر تصمیم بگیرید:
- چه دادهای ذخیره کنید.
- چگونه Retriever را طراحی کنید.
- نتایج Semantic Search را تحلیل کنید.
جمعبندی
- وظیفه Embedding Model تبدیل متنهای مشابه به Vectorهای نزدیک و متنهای متفاوت به Vectorهای دور است.
- آموزش Embedding بر اساس Positive Pair و Negative Pair انجام میشود.
- Positive Pairها به هم نزدیک و Negative Pairها از هم دور میشوند.
- این فرآیند با روش Contrastive Training انجام میشود.
- Vectorهای اولیه تصادفی هستند و بعد از آموزش ساختار معنایی پیدا میکنند.
- فضای چندبعدی بزرگ به مدل اجازه نمایش روابط پیچیده را میدهد.
- مختصات Vectorها در مدلهای مختلف قابل مقایسه نیستند.
- در سیستمهای RAG معمولاً از Embedding Modelهای آماده استفاده میشود.