تکه تکه شدن دیرهنگام در مدل های تعبیه متن طولانی


نویسنده(های): برهومی مصبه

در ابتدا منتشر شد به سمت هوش مصنوعی.

منبع

در مقاله قبلی به بررسی آن پرداختیم بازیابی متنی از آنتروپیک، که تکنیک بهبود زمینه آنها برای بهبود سیستم های RAG است. اما تکنیک دیگری به نام وجود دارد دیر تکه تکه شدن در مدل های تعبیه متن طولانی، که به نظر من خیلی جالب تر است و می تواند قابل توجه باشد.
تعبیه‌ها یکی از حیاتی‌ترین اجزای هر سیستم بازیابی هستند، اما اغلب نادیده گرفته می‌شوند یا مورد سوء استفاده قرار می‌گیرند. هنگام انتخاب یک مدل تعبیه، باید دو پارامتر بسیار مهم را در نظر بگیرید. یکی آن است حداکثر توکن، که اساساً پنجره زمینه است و مورد دوم همان است بعد تعبیه شده، که اندازه خروجی بردار جاسازی است.
احتمالاً شما این حداکثر اندازه توکن عظیم را برای برخی از جدیدترین مدل‌های تعبیه‌شده دیده‌اید، اما یک مشکل اساسی در این مورد وجود دارد. در خط لوله استاندارد RAG، صرف نظر از اندازه قطعه، اندازه خروجی بردار تعبیه شده شما یکسان باقی می ماند. بنابراین، چه پنج توکن یا 5000 توکن جاسازی کنید، خروجی دقیقاً یکسان خواهد بود. این بدان معناست که این مدل‌های جاسازی اطلاعات زیادی را برای قطعات ورودی طولانی فشرده می‌کنند.
در بیشتر موارد، شما می خواهید از قطعات کوچکتر استفاده کنید، اما این مشکلات خاص خود را دارد. برای درک آن، بیایید به این مثال نگاه کنیم: در اینجا یک پاراگراف کوچک در مورد تونس وجود دارد:

تصویر از نویسنده

اگر از سطح جمله استفاده می کنید تکه تکه شدن استراتژی، اساساً هر جمله به بخش متفاوت خود تبدیل می شود. می بینید که اگر این تکه های مختلف را جداگانه جاسازی کنید، اطلاعات متنی را از دست خواهید داد. به عنوان مثال، “کشور” به تونس اشاره می کند، اما اگر این بخش در انزوا باشد، آن زمینه را از دست می دهد.
رویکرد بازیابی متنی سعی می‌کند اسناد را خلاصه کند و اطلاعات متنی را به هر بخش اضافه کند، اما یک رویکرد بهتر وجود دارد، و آن تکه تکه شدن دیرهنگام است.

بیایید ابتدا به نحوه عملکرد تکه‌شدن “عادی” نگاه کنیم.

فرآیند خرد کردن و جاسازی عادی

در رویکرد سنتی تکه‌شدن، ابتدا متن به تکه‌های کوچک‌تر تقسیم می‌شود و سپس هر تکه از طریق یک شبکه عصبی که یک مدل ترانسفورماتور است، عبور داده می‌شود. خروجی این فرآیند تعبیه‌هایی برای هر یک از توکن‌های منفرد درون تکه‌ها است. اطلاعات زمینه ای در این نشانه ها به قسمتی که به آن تعلق دارند محدود می شود. پس از تولید توکن‌های تعبیه‌شده، ادغام میانگین برای محاسبه خروجی نهایی انجام می‌شود. این اطلاعات متنی را حفظ می‌کند، اما فقط در تک تک تکه‌ها است و مستقل از سایر تکه‌های همان سند است.

منبع

روش تکه تکه شدن دیرهنگام

رویکرد تکه تکه شدن دیرهنگام این فرآیند را معکوس می کند. به جای تقسیم سند به قطعات و سپس محاسبه جاسازی ها، کل متن سند ابتدا از طریق یک مدل Transformer منتقل می شود. این یک نمایش تعبیه‌شده برای هر نشانه ایجاد می‌کند، و این توکن‌ها اکنون حاوی اطلاعات زمینه‌ای هستند که نه تنها محدود به یک تکه است، بلکه کل سند را نیز در بر می‌گیرد. پس از این مرحله، فرآیند تکه‌سازی انجام می‌شود، جایی که متن اصلی به تکه‌هایی تقسیم می‌شود و توکن‌های مربوطه برای محاسبه میانگین ادغام استفاده می‌شوند که در نتیجه نمایش نهایی حاصل می‌شود.

از آنجایی که فرآیند تکه تکه شدن در مرحله بعدی انجام می شود، به این روش «تکه کردن دیرهنگام» می گویند.

منبع

بهترین روش برای بازیابی

این تکه تکه شدن دیرهنگام رویکرد مستقیماً با رویکرد دیگری به نام مرتبط است تعامل دیرهنگام، که یک است رویکرد مبتنی بر COBERT، این احتمالاً بهترین روش برای بازیابی است، اما با هزینه‌های ذخیره‌سازی همراه است. در این حالت، در مرحله آخر، شما مرحله ادغام را انجام نمی دهید، بلکه جاسازی های توکن را جداگانه می گیرید و آن جاسازی توکن ها را ذخیره می کنید.

منبع

یک پست وبلاگ از بافتن تیم نشان می دهد که اگر شما حدود 100000 سند را با همان تعداد جاسازی جاسازی کنید، به حدود 1.6 میلیون بردار برای یک رویکرد تکه تکه ساده نیاز خواهید داشت که حدود 5 گیگابایت است. با این حال، اگر بخواهید تعامل دیرهنگام یا نمایش چند برداری مبتنی بر COBERT را انجام دهید، به حدود 2.5 ترابایت نیاز دارید که بسیار بزرگ است. دلیل آن این است که شما این جاسازی ها را برای هر توکن به صورت جداگانه ذخیره می کنید.

از سوی دیگر، رویکرد chunking دیرهنگام، بهترین های هر دو جهان را به شما می دهد. نه تنها زمینه را در فرآیند تکه تکه سازی نهایی شما حفظ می کند، بلکه تقریباً همان نیازهای ذخیره سازی را به شما ارائه می دهد که رویکرد تکه تکه ساده لوحانه است. این باعث می‌شود که روش تکه‌شکن دیرهنگام در مقایسه با روش‌های تعامل دیرهنگام یا مبتنی بر COBERT، که به میزان قابل توجهی ذخیره‌سازی بیشتری نیاز دارند، راه‌حلی کارآمدتر و کاربردی‌تر باشد.

منبع

نتایج

تکه تکه شدن دیرهنگام توسط معرفی شده است جینا، و آنها خود را دارند مدل های تعبیه شده. با توجه به نتایج ارائه شده در جدول، رویکرد تکه تکه شدن دیر هنگام با روش‌های دیگر ترکیب می‌شود، عملکرد امیدوارکننده‌ای را در معیارهای مختلف نشان می‌دهد.

انتخاب مدل تعبیه نقش مهمی ایفا می کند و نتایج ارائه شده در اینجا ممکن است نیاز به اعتبار بیشتر از منابع مستقل داشته باشد.

راهنمای اجرای عملی

افرادی که در پشت این ایده جدید هستند، واقعاً یک ایده را جمع آوری کرده اند دفترچه ساده این نشان می دهد که چگونه می توانید این رویکرد تکه تکه شدن دیرهنگام را در برنامه ها و خطوط لوله خود پیاده سازی کنید. حتی اگر قرار نیست در خود نوت بوک غوطه ور شویم، اجازه دهید ایده ای در مورد نتایج به شما ارائه دهم.

در دفترچه آنها شباهت “برلین” را به عنوان یک نشانه منفرد برای برخی جاسازی ها محاسبه کرده اند. اگر به جمله اول نگاه کنید، که مستقیماً در مورد برلین صحبت می کند و “برلین” را ذکر می کند، خروجی های سنتی و متأخر شباهت های بسیار مشابهی به شما می دهند.

similarity_new → تکه تکه شدن دیرهنگام → 0.849546 می دهد

similarity_trad → Normal Chunking → 0.84862185

similarity_new("Berlin", "Berlin is the capital and largest city of Germany, both by area and by population."): 0.849546
similarity_trad("Berlin", "Berlin is the capital and largest city of Germany, both by area and by population."): 0.84862185

با این حال، در جمله دوم، «بیش از 3.85 میلیون نفر جمعیت آن …» به طور غیرمستقیم به برلین اشاره دارد بدون اینکه مستقیماً به آن اشاره شود. در این مورد، با روش تکه تکه شدن دیره، شباهت 82 ~ است، در حالی که برای روش تکه تکه سازی سنتی، شباهت به 70 ~ کاهش می یابد.

similarity_new("Berlin", " Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits."): 0.82489026
similarity_trad("Berlin", " Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits."): 0.7084338

به طور مشابه، در جمله سوم، که به برلین به عنوان “این شهر” اشاره می کند، شباهت برای رویکرد تکه تکه شدن دیرهنگام (0.84) زیاد است، اما برای رویکرد سنتی chunking (0.75) به طور قابل توجهی کمتر است.

similarity_new("Berlin", " The city is also one of the states of Germany, and is the third smallest state in the country in terms of area."): 0.84980094
similarity_trad("Berlin", " The city is also one of the states of Germany, and is the third smallest state in the country in terms of area."): 0.7534553

اکنون، این یک مثال ساده است، اما اگر تکه‌ها بسیار بزرگ‌تر باشند، در یک رویکرد تکه‌شکن ساده، نسبت به روش تکه‌شکن دیرهنگام که پیشنهاد می‌کنند، اطلاعات قابل توجهی از دست خواهد رفت. نکته دیگری که باید به آن اشاره کرد این است که تکه تکه شدن دیررس دو جهته است. اگر اطلاعات خاصی قبل از یک تکه خاص باشد، همچنان می تواند آن اطلاعات را حفظ کند. از آنجایی که دو طرفه است، با نگاه کردن به کل سند در حین جاسازی، یک قطعه همچنان اطلاعات مربوط به خود را حفظ می کند، صرف نظر از اینکه قبل یا بعد از آن قطعه باشد.

این دو جهته بودن آن را حتی قدرتمندتر می‌کند و نشان می‌دهد که مدل‌های زمینه طولانی هم برای LLMها و هم برای این تعبیه‌ها ضروری هستند.

نتیجه گیری

می‌دانید، پس از بررسی تمام جزئیات و مثال‌های این مقاله، باید بگویم که رویکرد chunking دیرهنگام برای مدل‌های تعبیه‌شده با زمینه طولانی، واقعاً جذاب است و به نظر می‌رسد نویدبخش زیادی دارد.

بینش کلیدی در اینجا این است که روش سنتی جدا کردن اسناد و سپس جاسازی جداگانه هر تکه می تواند منجر به از دست دادن قابل توجهی از زمینه و اطلاعات مهم شود. در عوض با گرفتن کل سند، جاسازی آن ابتدا برای ثبت آن زمینه گسترده، و سپس تکه تکه کردن آن، می توانید جزئیات بیشتری را حفظ کنید.

همانطور که مثال‌ها نشان دادند، وقتی با ارجاعاتی به نهادهایی مانند «برلین» سر و کار دارید که ممکن است به‌طور مستقیم و غیرمستقیم انجام شوند، روش تکه‌شکن دیرهنگام می‌تواند درک بسیار قوی‌تری از معنا را در مقایسه با تکه‌کردن و جاسازی سنتی حفظ کند. خط لوله و این واقعیت که دو جهته است، قادر به کشیدن متن از قبل و بعد از هر قطعه است، آن را حتی قدرتمندتر می کند.

پیوندها

گوگل کولب

ویرایش توضیحات

colab.research.google.com

تکه تکه شدن دیرهنگام در مدل های تعبیه شده با زمینه طولانی

تکه تکه کردن اسناد طولانی با حفظ اطلاعات متنی چالش برانگیز است. ما “تقاطع دیرهنگام” را معرفی می کنیم که…

jina.ai

چه چیزی در اواخر خرد کردن واقعا است و چه چیزی نیست: بخش دوم

بخش 2 از کاوش ما در مورد تکه تکه شدن دیرهنگام، بررسی عمیق در مورد اینکه چرا بهترین روش برای جاسازی تکه ها و…

jina.ai

خرد کردن دیرهنگام: متعادل کردن دقت و هزینه در بازیابی متن طولانی | بافتن

درباره تکه تکه شدن دیرهنگام و اینکه چگونه ممکن است برای متعادل کردن هزینه و عملکرد در زمینه طولانی شما مناسب باشد، بیاموزید…

weaviate.io

معرفی Contextual Retrieval

Anthropic یک شرکت تحقیقاتی و ایمنی هوش مصنوعی است که در تلاش است تا هوش مصنوعی قابل اعتماد، قابل تفسیر و هدایت پذیری را بسازد…

www.anthropic.com

GitHub – jina-ai/late-chunking: کدی برای توضیح و ارزیابی انفصال دیرهنگام (تجمیع تکه تکه شده)

کد توضیح و ارزیابی انشعابات دیرهنگام (تجمیع تکه تکه شده) – jina-ai/late-chunking

github.com

منتشر شده از طریق به سمت هوش مصنوعی



منبع: https://towardsai.net/p/machine-learning/late-chunking-in-long-context-embedding-models