MultiVectorEncoder میتوان برای هر بخش/Token سند embedding مستقل نگه داشت و با MaxSim آنها را در زمان جستجو مقایسه کرد، که معمولاً Retrieval دقیقتر و قابلتفسیرتری ایجاد میکند، اما هزینه حافظه و Index بیشتری دارد. Late Interaction یعنی چه؟در این روش Query و Document ابتدا جداگانه Encode میشوند، بنابراین اسناد را میتوان از قبل پردازش و Index کرد.
اما هنگام جستجو، بهجای مقایسه یک بردار Query با یک بردار Document، بردارهای توکنهای Query با بردارهای توکنهای Document مقایسه میشوند.
در Embedding معمولی یا Dense Embedding، کل یک متن در نهایت تبدیل میشود به یک بردار:
Document »»»»»»»»Transformer »»»»» 1 Vector
مثلاً یک متن 500 کلمهای ممکن است در یک بردار 768 بعدی خلاصه شود. مشکل این است که اطلاعات مهم و جزئی مانند اسم خاص، شماره محصول، یک شرط خاص یا یک عبارت دقیق ممکن است هنگام این فشردهسازی ضعیف شوند. اما Multi-Vector بهجای یک بردار برای کل متن، تقریباً برای هر Token یک بردار جداگانه نگه میدارد مثلاً یک سند 9 توکنی میتواند به ماتریس 9×128 تبدیل شود، نه یک بردار واحد. Multi-Vector مخصوصاً برای Queryهایی مناسب است که چند شرط دارند. اما در Multi-Vector هر بخش Query میتواند مستقل از بقیه دنبال شواهد مربوط به خودش در سند بگردد. در نتیجه بازیابی معمولاً دقیقتر میشود، مخصوصاً برای اسناد طولانی و Queryهای چندشرطی.
اما در Multi-Vector هر بخش Query میتواند مستقل از بقیه دنبال شواهد مربوط به خودش در سند بگردد. در نتیجه بازیابی معمولاً دقیقتر میشود، مخصوصاً برای اسناد طولانی و Queryهای چندشرطی.
یکی از مزایای جالب MaxSim این است که میتوان دقیقاً دید کدام قسمت Query باعث انتخاب کدام قسمت Document شده است.
بنابراین برخلاف یک embedding واحد که تا حد زیادی یک نمایش فشرده و مبهم است، در Multi-Vector میتوان مشاهده کرد هر Token Query به کدام Token یا ناحیه سند متصل شده است. برای تصاویر نیز میتوان این ارتباط را به شکل Heatmap روی صفحه نشان داد.
▪️ Multi-Vector (Late Interaction) Embedding Models with Sentence Transformers
#منابع #مقاله
☑️ @AI_DeepMind
✅ @AI_Person
