MODULE 02 / LESSON 12

Semantic Search (جستجوی معنایی) — مقدمه

مفهوم اصلی Semantic Search روشی برای بازیابی اطلاعات است که اسناد را بر اساس معنی مشترک با Prompt پیدا می‌کند، نه فقط بر اساس تطابق کلمات. برخلاف Keyword Search که به دنبال کلمات مشابه می‌گردد، Semantic Search می‌تواند ارتباط…

نویسنده: محمد ابوطالبی۹۱۵ واژهماژول ۲: Retriever

مفهوم اصلی

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 عمل می‌کند:

  1. هر Document به یک Vector تبدیل می‌شود.
  2. Prompt نیز به یک Vector تبدیل می‌شود.
  3. Vector مربوط به Prompt با Vector اسناد مقایسه می‌شود.
  4. نزدیک‌ترین اسناد انتخاب می‌شوند.

تفاوت اصلی:

روش تولید 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 پیدا شده و به عنوان اسناد مرتبط انتخاب می‌شوند.