Embedding چیست؟
بازنمایی عددی (یک بردار از اعداد اعشاری) از متن، تصویر یا هر داده دیگر که معنای آن را در فضایی چندبعدی کدگذاری میکند.
چرا مهم است؟
کامپیوتر نمیتواند «شباهت معنایی» دو جمله را مستقیم از روی حروف بفهمد؛ Embedding این معنا را به بردارهایی تبدیل میکند که فاصله ریاضی بینشان (مثل Cosine Similarity) تقریباً معادل شباهت معنایی متن اصلی است — پایه جستوجوی معنایی، RAG، خوشهبندی و سیستمهای پیشنهاددهنده.
تعریف
Embedding خروجی یک مدل خاص (مثل text-embedding-3-small) است که هر متن ورودی را به یک بردار با تعداد ثابتی بُعد (مثلاً ۱۵۳۶ عدد اعشاری) تبدیل میکند. متنهایی که از نظر معنا به هم نزدیکاند، بردارهایشان هم در این فضا به هم نزدیک میشوند — حتی اگر از نظر کلمات کاملاً متفاوت باشند (مثل «گربه» و «بچهگربه»).
تولید Embedding با C#
IEmbeddingGenerator<string, Embedding<float>> generator =
new OpenAIClient(apiKey).AsEmbeddingGenerator("text-embedding-3-small");
var embedding = await generator.GenerateAsync("داتنت یک پلتفرم متنباز است.");
float[] vector = embedding.Vector.ToArray(); // مثلاً ۱۵۳۶ عدد اعشاری
کاربردهای اصلی
| کاربرد | توضیح |
|---|---|
| جستوجوی معنایی | یافتن نتایج مرتبط از نظر معنا، نه فقط تطابق کلمهبهکلمه |
| RAG | بازیابی قطعات مرتبط دانش قبل از پاسخ مدل |
| خوشهبندی (Clustering) | گروهبندی خودکار اسناد مشابه |
| تشخیص تکراری بودن | یافتن دو متن با معنای یکسان اما نوشتار متفاوت |
اشتباه رایج
❌ مقایسه مستقیم بردارهای تولیدشده توسط دو مدل Embedding متفاوت (مثلاً یکی از OpenAI، یکی از یک مدل دیگر) — فضای برداری هر مدل مستقل و غیرقابلمقایسه با مدل دیگر است؛ همه بردارهای یک مجموعه باید با یک مدل ثابت تولید شوند.
منبع و مطالعه بیشتر
خلاصه
Embedding متن را به یک بردار عددی تبدیل میکند که معنای آن را کدگذاری میکند؛ متنهای هممعنا بردارهای نزدیک به هم دارند. پایه جستوجوی معنایی، RAG و خوشهبندی است. همه بردارهای یک مجموعه باید با یک مدل Embedding ثابت تولید شوند تا قابلمقایسه باشند. مرجع کامل: OpenAI Docs و Azure OpenAI.
