«من گرسنه هستم.»
این جمله برای انسان کاملاً قابل فهم است، اما کامپیوتر در ابتدا آن را فقط بهعنوان یک رشته (String) از کاراکترها میبیند و هیچ درکی از مفهوم آن ندارد.
برای اینکه کامپیوتر بتواند مفهوم متن را درک کند، از یک Embedding Model استفاده میکنیم. این مدل متن را به یک لیست از اعداد تبدیل میکند؛ برای مثال:
[0.1, 1.0, -0.75]
به این لیست از اعداد Vector (بردار) گفته میشود.
این بردار در واقع مختصات متن در یک فضای n بعدی است؛ یعنی هر عدد یکی از ابعاد این فضا را نشان میدهد و مجموع این اعداد مشخص میکند که متن در چه موقعیتی از فضای معنایی قرار گرفته است.
حالا جملهی دیگری را در نظر بگیرید:
«من غذا میخواهم.»
برای انسان، مفهوم این جمله به «من گرسنه هستم» نزدیک است، اما کامپیوتر هنوز این موضوع را نمیداند. بنابراین این جمله نیز توسط همان Embedding Model به یک بردار تبدیل میشود؛ مثلاً:
[0.1, 1.2, -0.65]
اکنون کامپیوتر این دو بردار را با هم مقایسه میکند. اگر فاصلهی آنها کم باشد (یا شباهت آنها زیاد باشد)، نتیجه میگیرد که این دو متن از نظر معنایی به یکدیگر نزدیک هستند، حتی اگر دقیقاً از کلمات یکسانی استفاده نکرده باشند.
اگر هزاران یا میلیونها متن را به همین روش به بردار تبدیل کنیم، مجموعهای از بردارها خواهیم داشت که میتوان آنها را بهصورت یک ماتریس در نظر گرفت؛ ماتریسی که هر سطر آن بردار مربوط به یک متن است. از آنجا که این بردارها معمولاً صدها یا هزاران بعد دارند، به این محیط فضای چندبعدی (Vector Space) گفته میشود.
برای ذخیره و جستجوی سریع این حجم از بردارها از Vector Store یا Vector Database استفاده میکنیم. این سیستمها با استفاده از الگوریتمهای جستجوی شباهت، نزدیکترین بردارها را در میان میلیونها بردار با سرعت بالا پیدا میکنند.
در این فرآیند، Embedding Model وظیفهی تبدیل متن به بردار را بر عهده دارد و خروجی آن Embedding نامیده میشود. سپس این بردارها در یک Vector Store ذخیره میشوند تا بتوان بر اساس شباهت معنایی بین آنها جستجو انجام داد.
@code_crafters
