مفهوم اصلی
Semantic Search روشی برای بازیابی اطلاعات است که اسناد را بر اساس معنی مشترک با Prompt پیدا میکند، نه فقط بر اساس تطابق کلمات.
برخلاف Keyword Search که به دنبال کلمات مشابه میگردد، Semantic Search میتواند ارتباط معنایی بین مفاهیم را تشخیص دهد.
تفاوت Semantic Search و Keyword Search
محدودیت Keyword Search
Keyword Search فقط کلمات یکسان را پیدا میکند.
مثال:
کلمات:
- happy
- glad
از نظر معنی مشابه هستند (Synonym)، اما Keyword Search نمیتواند این ارتباط را تشخیص دهد.
مثال دیگر:
کلمه:
Python
میتواند دو معنی داشته باشد:
- زبان برنامهنویسی Python
- مار پایتون (Python snake)
Keyword Search ممکن است هر دو را مشابه در نظر بگیرد، چون فقط کلمه را میبیند.
ایده کلی Semantic Search
در سطح بالا، Semantic Search شبیه Keyword Search عمل میکند:
- هر Document به یک Vector تبدیل میشود.
- Prompt نیز به یک Vector تبدیل میشود.
- Vector مربوط به Prompt با Vector اسناد مقایسه میشود.
- نزدیکترین اسناد انتخاب میشوند.
تفاوت اصلی:
روش تولید Vectorها متفاوت است.
Embedding Model چیست؟
در Semantic Search، Vectorها توسط یک مدل ریاضی خاص ساخته میشوند که:
Embedding Model
نام دارد.
وظیفه Embedding Model:
تبدیل متن به یک Vector که معنی آن متن را در فضای ریاضی نشان دهد.
مفهوم Embedding
Embedding یعنی:
قرار دادن یک مفهوم در یک نقطه از یک فضای چندبعدی.
هر نقطه با یک Vector نمایش داده میشود.
مثال ساده:
Embedding Model ممکن است:
کلمه:
pizza
را تبدیل کند به:
[3,1]
و کلمه:
bear
را تبدیل کند به:
[5,2]
در فضای دوبعدی، این Vectorها میتوانند مانند نقاط روی محور X و Y نمایش داده شوند.
ارتباط معنی و فاصله در فضای Vector
ویژگی مهم Embedding Model:
مفاهیم مشابه را در نقاط نزدیک به هم قرار میدهد.
مثال:
کلمات:
food
cuisine
از نظر معنا نزدیک هستند، بنابراین Vector آنها نیز نزدیک خواهد بود.
اما:
trombone
cat
معنای متفاوتی دارند، پس فاصله بیشتری خواهند داشت.
فضای چندبعدی Embedding
در مثالهای ساده، Vectorها ممکن است در فضای دوبعدی نمایش داده شوند.
اما در واقعیت:
- Vectorها معمولاً صدها یا هزاران مقدار دارند.
- فضای واقعی بسیار بزرگ و چندبعدی است.
تصور کردن این فضا دشوار است، اما قوانین همان هستند:
- مفاهیم مشابه → نقاط نزدیک
- مفاهیم متفاوت → نقاط دور
محورهای فضای Embedding چه معنایی دارند؟
در فضای Embedding:
محورها معمولاً معنی ساده و مشخصی ندارند.
مثلاً:
یک محور مشخص برای:
- غذا
- حیوانات
- تکنولوژی
وجود ندارد.
بلکه مدل روابط پیچیده بین مفاهیم را در فضای چندبعدی ذخیره میکند.
Embedding برای انواع داده
Embedding فقط برای کلمات نیست.
مدلهای Embedding میتوانند برای:
- کلمات
- جملات
- اسناد کامل
استفاده شوند.
در هر حالت:
ورودی:
متن
خروجی:
یک Vector که موقعیت آن متن را در فضای معنایی مشخص میکند.
مثال Embedding برای جملهها
سه جمله:
He spoke softly in class.
He whispered quietly during class.
Her daughter brightened the gloomy day.
بعد از تبدیل به Vector:
- جمله اول و دوم نزدیک خواهند بود.
- جمله سوم از آنها فاصله خواهد داشت.
زیرا:
دو جمله اول معنی مشابهی دارند، اما جمله سوم مفهوم متفاوتی دارد.
اندازهگیری شباهت Vectorها
برای مقایسه دو متن، فاصله یا شباهت بین Vectorهای آنها اندازهگیری میشود.
روشهای مختلفی وجود دارد.
1. Euclidean Distance
مفهوم
فاصله مستقیم بین دو نقطه را اندازه میگیرد.
مانند کشیدن یک خط مستقیم بین دو نقطه.
این همان فاصلهای است که در هندسه با آن آشنا هستیم.
فرمول آن مشابه قضیه فیثاغورس است، اما برای ابعاد بیشتر گسترش داده شده است.
مشکل در فضای بسیار بزرگ
در فضای چندبعدی بزرگ:
- تقریباً همه نقاط از یکدیگر فاصله زیادی دارند.
به همین دلیل روشهای دیگری بیشتر استفاده میشوند.
2. Cosine Similarity
مفهوم
Cosine Similarity به جای فاصله، جهت Vectorها را مقایسه میکند.
مثال:
Vectorها:
[10,10]
و:
[100,100]
از نظر فاصله نزدیک نیستند، اما جهت یکسانی دارند.
پس شباهت معنایی بالایی دارند.
محدوده Cosine Similarity
مقدار آن بین:
-1 تا 1
است.
معنی:
| مقدار | مفهوم |
|---|---|
| 1 | جهت کاملاً مشابه |
| 0 | بدون ارتباط |
| -1 | جهت کاملاً مخالف |
3. Dot Product
روش دیگر:
Dot Product
است.
این روش اندازه تصویر یک Vector روی Vector دیگر را محاسبه میکند.
نتیجه:
- Vectorهای مشابه از نظر جهت و اندازه → مقدار بزرگتر
- زاویه ۹۰ درجه → مقدار صفر
- جهت مخالف → مقدار منفی
مقایسه روشهای اندازهگیری
| روش | مفهوم |
|---|---|
| Euclidean Distance | فاصله واقعی بین نقاط |
| Cosine Similarity | شباهت جهت Vectorها |
| Dot Product | میزان همجهتی و طول Vector |
در عمل معمولاً نیاز نیست این روشها را از صفر پیادهسازی کنید، اما شناخت نحوه کار آنها مفید است.
فرآیند Semantic Search در Retriever
مرحله ۱: تبدیل Documents به Vector
تمام اسناد Knowledge Base توسط Embedding Model تبدیل میشوند.
نتیجه:
- اسناد با معنی مشابه نزدیک قرار میگیرند.
- اسناد متفاوت دورتر قرار میگیرند.
مرحله ۲: تبدیل Prompt به Vector
Prompt کاربر نیز با همان Embedding Model تبدیل به Vector میشود.
مرحله ۳: مقایسه Vectorها
فاصله یا شباهت بین:
- Prompt Vector
- Document Vectorها
محاسبه میشود.
مرحله ۴: رتبهبندی اسناد
اسناد مرتب میشوند.
اسنادی که:
- نزدیکترین Vector
- بیشترین شباهت معنایی
را دارند، انتخاب میشوند.
نقش Embedding Model در Semantic Search
کل Semantic Search وابسته به عملکرد Embedding Model است.
اگر Embedding Model درست آموزش دیده باشد:
- مفاهیم مشابه نزدیک قرار میگیرند.
- محاسبه فاصله Vectorها نشاندهنده میزان ارتباط خواهد بود.
جمعبندی
- Semantic Search اسناد را بر اساس معنی مشابه با Prompt پیدا میکند.
- برخلاف Keyword Search، نیاز به وجود کلمات یکسان ندارد.
- Embedding Model متن را به Vector تبدیل میکند.
- Vectorهای مفاهیم مشابه در فضای Embedding نزدیک یکدیگر قرار میگیرند.
- برای اندازهگیری شباهت Vectorها از روشهایی مانند Euclidean Distance، Cosine Similarity و Dot Product استفاده میشود.
- در Semantic Search، ابتدا Documents و Prompt به Vector تبدیل میشوند.
- سپس نزدیکترین Vectorها به Prompt پیدا شده و به عنوان اسناد مرتبط انتخاب میشوند.