MODULE 03 / LESSON 22

Cross-Encoders و ColBERT در Semantic Search

مفهوم اصلی در Semantic Search تا اینجا از معماری استانداردی استفاده شد که به آن: Bi-Encoder گفته می‌شود. در این معماری: هر Document یک Vector دریافت می‌کند. هر Prompt نیز یک Vector دریافت می‌کند. سپس با مقایسه Vectorها،…

نویسنده: محمد ابوطالبی۸۸۸ واژهماژول ۳: Vector Database

مفهوم اصلی

در Semantic Search تا اینجا از معماری استانداردی استفاده شد که به آن:

Bi-Encoder

گفته می‌شود.

در این معماری:

  • هر Document یک Vector دریافت می‌کند.
  • هر Prompt نیز یک Vector دریافت می‌کند.
  • سپس با مقایسه Vectorها، Documentهای مشابه پیدا می‌شوند.

این روش:

  • سرعت بالایی دارد.
  • برای سیستم‌های Production مناسب است.

اما معماری‌های پیشرفته‌تری وجود دارند که می‌توانند کیفیت Retrieval را افزایش دهند:

  1. Cross-Encoder
  2. ColBERT

این روش‌ها بین کیفیت Search و سرعت پردازش یک Trade-off ایجاد می‌کنند.


1. Bi-Encoder (معماری پایه Semantic Search)

نحوه کار

در Bi-Encoder:

  1. تمام Documentهای Knowledge Base توسط Embedding Model تبدیل به Vector می‌شوند.
  2. این Vectorها از قبل ذخیره می‌شوند.
  3. وقتی یک Prompt دریافت می‌شود:
    • Prompt نیز به Vector تبدیل می‌شود.
  4. Vector Database با استفاده از ANN نزدیک‌ترین Vectorها را پیدا می‌کند.

دلیل نام Bi-Encoder

نام Bi-Encoder به این دلیل است که:

  • Document
  • Prompt

به صورت جداگانه Encode می‌شوند.


مزیت مهم Bi-Encoder

چون Documentها از قبل Vectorize شده‌اند:

  • فقط Prompt جدید نیاز به پردازش دارد.
  • Search بسیار سریع انجام می‌شود.

محدودیت Bi-Encoder

چون Document و Prompt جداگانه پردازش می‌شوند:

مدل نمی‌تواند ارتباط عمیق بین آن‌ها را به خوبی Cross-Encoder درک کند.


2. Cross-Encoder

مفهوم اصلی

Cross-Encoder برای افزایش کیفیت Ranking طراحی شده است.

در این معماری:

Document و Prompt با هم وارد مدل می‌شوند.


نحوه کار Cross-Encoder

برای هر Document:

  1. Prompt و Document کنار هم قرار می‌گیرند.

مثلاً:

Prompt + Document
  1. این متن ترکیبی وارد مدل می‌شود.
  2. مدل یک امتیاز Relevancy تولید می‌کند.

خروجی Cross-Encoder

معمولاً یک عدد بین:

0 تا 1

است.

این عدد نشان‌دهنده احتمال مرتبط بودن Document با Prompt است.


مثال

Prompt:

Great places to eat in New York

سه Document وجود دارد.

Cross-Encoder:

  • Prompt را با Document اول ترکیب می‌کند.
  • امتیاز تولید می‌کند.

مثلاً:

Document 1 → 0.7
Document 2 → 0.3
Document 3 → 0.1

Documentها بر اساس این امتیاز مرتب می‌شوند.


مزیت Cross-Encoder

Cross-Encoder معمولاً کیفیت Search بالاتری نسبت به Bi-Encoder دارد.

دلیل:

مدل می‌تواند:

  • ارتباط مستقیم Prompt و Document را ببیند.
  • تعاملات معنایی عمیق‌تر را تشخیص دهد.

مشکل اصلی Cross-Encoder

مقیاس‌پذیری ضعیف

فرض کنید Knowledge Base شامل:

  • میلیون‌ها
  • یا میلیاردها

Document باشد.

برای هر Prompt باید:

تمام Documentها با Prompt ترکیب شوند و دوباره مدل اجرا شود.

یعنی:

Prompt + Document 1
Prompt + Document 2
Prompt + Document 3
...

برای میلیاردها Document.


چرا نمی‌توان Precompute کرد؟

چون:

Prompt از قبل مشخص نیست.

هر کاربر Query متفاوتی ارسال می‌کند.

بنابراین نمی‌توان پردازش را از قبل انجام داد.


نتیجه

Cross-Encoder:

✅ بهترین کیفیت Retrieval
❌ سرعت بسیار پایین

بنابراین:

برای Search اصلی مناسب نیست.

اما برای بهبود نتایج Searchهای دیگر بسیار کاربردی است.


3. ColBERT

مفهوم اصلی

ColBERT تلاش می‌کند بین دو روش تعادل ایجاد کند:

  • سرعت Bi-Encoder
  • کیفیت Cross-Encoder

نام کامل:

Contextualized Late Interaction over BERT


ایده اصلی ColBERT

مانند Bi-Encoder:

  • Documentها از قبل پردازش می‌شوند.

اما برخلاف Bi-Encoder:

به جای یک Vector برای کل Document:

برای هر Token یک Vector ساخته می‌شود.


مقایسه با Bi-Encoder

Bi-Encoder:

یک Document:

Document → یک Vector

ColBERT:

یک Document:

Token 1 → Vector
Token 2 → Vector
Token 3 → Vector
...

مثلاً:

Document با 1000 Token:

نیاز دارد به:

1000 Vector

نحوه امتیازدهی در ColBERT

وقتی Prompt وارد می‌شود:

Prompt نیز Token به Token تبدیل به Vector می‌شود.

سپس:

هر Token در Prompt:

نزدیک‌ترین Token خودش در Document را پیدا می‌کند.


مثال

Prompt:

Great Places to Eat in New York

Document:

شامل:

  • New York City
  • Cuisine
  • Restaurants

مقایسه:

  • Tokenهای New و York با New York و City تطبیق پیدا می‌کنند.
  • Token Eat با Cuisine تطبیق پیدا می‌کند.

MaxSim Score

برای هر Token در Prompt:

بالاترین شباهت با Tokenهای Document انتخاب می‌شود.

سپس:

تمام این Maximum Scoreها جمع می‌شوند.

نتیجه:

یک امتیاز کلی برای Document ایجاد می‌شود.

این امتیاز:

MaxSim Score

نام دارد.


مزایای ColBERT

ColBERT:

  • تعامل معنایی بیشتری نسبت به Bi-Encoder دارد.
  • کیفیتی نزدیک به Cross-Encoder ارائه می‌دهد.
  • سریع‌تر از Cross-Encoder است.

محدودیت ColBERT

مصرف حافظه بالا

چون برای هر Token یک Vector ذخیره می‌شود.

مثال:

Document با:

2000 Token

نیاز دارد به:

2000 Vector

در حالی که Bi-Encoder فقط:

1 Vector

ذخیره می‌کند.


مقایسه معماری‌ها

معماری کیفیت Search سرعت مصرف حافظه
Bi-Encoder خوب بسیار سریع کم
Cross-Encoder عالی بسیار کند کم
ColBERT نزدیک به عالی متوسط تا سریع زیاد

انتخاب معماری مناسب

Bi-Encoder

انتخاب پیش‌فرض Semantic Search است.

دلایل:

  • کیفیت مناسب
  • سرعت بالا
  • ذخیره‌سازی کم

Cross-Encoder

برای:

  • بهترین Ranking ممکن

استفاده می‌شود.

اما:

به دلیل هزینه بالا نمی‌تواند Search اصلی باشد.


ColBERT

برای پروژه‌هایی مناسب است که:

  • کیفیت Retrieval بسیار مهم است.
  • افزایش مصرف حافظه قابل قبول است.

مثال:

  • حوزه پزشکی
  • حوزه حقوقی

در این حوزه‌ها افزایش کیفیت Search ممکن است ارزش مصرف حافظه بیشتر را داشته باشد.


استفاده ترکیبی در سیستم‌های Production

Cross-Encoder معمولاً به صورت مستقیم برای کل Search استفاده نمی‌شود.

روش معمول:

  1. ابتدا با روش سریع‌تر:
    • Bi-Encoder
    • Hybrid Search

تعداد کمی Document انتخاب می‌شود.

  1. سپس Cross-Encoder روی همان Documentهای محدود اجرا می‌شود.

نتیجه:

  • سرعت مناسب
  • کیفیت Ranking بالا

جمع‌بندی

  • Semantic Search معمولاً با معماری Bi-Encoder ساخته می‌شود.
  • Bi-Encoder سریع است اما تعامل عمیق Prompt و Document را محدود دارد.
  • Cross-Encoder کیفیت بالاتری دارد چون Prompt و Document را همزمان تحلیل می‌کند.
  • مشکل Cross-Encoder هزینه محاسباتی بسیار زیاد است.
  • ColBERT با ذخیره Vector برای هر Token تلاش می‌کند کیفیت Cross-Encoder را با سرعت Bi-Encoder ترکیب کند.
  • انتخاب معماری به نیاز پروژه، حجم داده و اهمیت کیفیت Retrieval بستگی دارد.
  • در سیستم‌های Production معمولاً از ترکیب چند روش برای رسیدن به بهترین نتیجه استفاده می‌شود.