مقدمهای بر جاسازیهای برداری: چه هستند و چگونه از آنها استفاده کنیم

Summarize this content to 400 words in Persian Lang
جاسازی های برداری و زمان و نحوه استفاده از آنها را درک کنید. برنامه های کاربردی دنیای واقعی را با پایگاه داده برداری Milvus و Zilliz Cloud کاوش کنید.
تعبیههای برداری نمایشهای عددی نقاط داده هستند که جستجوی دادههای بدون ساختار را آسانتر میکنند. این جاسازیها در پایگاههای داده تخصصی مانند Milvus و Zilliz Cloud (میلووس کاملاً مدیریت شده) ذخیره میشوند که از الگوریتمهای پیشرفته و تکنیکهای نمایهسازی برای بازیابی سریع دادهها استفاده میکنند.
مدلهای مدرن هوش مصنوعی (AI)، مانند مدلهای زبان بزرگ (LLM)، از جاسازیهای متنی برای درک زبان طبیعی و ایجاد پاسخهای مرتبط استفاده میکنند. علاوه بر این، نسخه های پیشرفته LLM ها از Retrieval Augmented Generation (RAG) برای بازیابی اطلاعات از فروشگاه های برداری خارجی برای برنامه های کاربردی خاص استفاده می کنند.
در این پست وبلاگ، مفهوم جاسازی های برداری را درک خواهیم کرد و کاربردها، بهترین شیوه ها و ابزارهای کار با جاسازی ها را بررسی خواهیم کرد.
جاسازی های برداری چیست؟
تعبیه برداری فهرستی از نقاط داده عددی است که هر عدد نشان دهنده یک ویژگی داده است. این تعبیه ها با تجزیه و تحلیل اتصالات در یک مجموعه داده به دست می آیند. نقاط داده ای که به یکدیگر نزدیکتر هستند از نظر معنایی مشابه شناسایی می شوند.
جاسازیها با استفاده از مدلهای یادگیری عمیق که برای نگاشت دادهها به یک فضای برداری با ابعاد بالا آموزش داده شدهاند، فرمولبندی میشوند. مدلهای جاسازی محبوب مانند BERT و Data2Vec اساس بسیاری از برنامههای کاربردی یادگیری عمیق مدرن را تشکیل میدهند.
علاوه بر این، تعبیههای برداری به دلیل کارایی که دارند به طور گسترده در برنامههای NLP و CV استفاده میشوند.
انواع جاسازی وکتور
سه نوع اصلی جاسازی بر اساس ابعاد آنها وجود دارد: تعبیه متراکم، پراکنده و باینری. در اینجا چگونگی تفاوت آنها در ویژگی ها و استفاده آمده است:
1. جاسازی های متراکم
جاسازی های برداری که نقاط داده را با اکثر عناصر غیر صفر نشان می دهند متراکم هستند. آنها جزئیات دقیقتری را ثبت میکنند، زیرا همه دادهها، حتی مقادیر صفر را ذخیره میکنند، و باعث میشود کارایی ذخیرهسازی کمتری داشته باشند.
Word2Vec، GloVe، CLIP و BERT مدل هایی هستند که جاسازی های برداری متراکمی را از داده های ورودی ایجاد می کنند.
2. جاسازی های پراکنده
تعبیههای برداری پراکنده، بردارهایی با ابعاد بالا هستند که اکثر عناصر برداری صفر دارند. مقادیر غیر صفر در جاسازی های پراکنده نشان دهنده اهمیت نسبی نقاط داده در یک پیکره است. جاسازی های پراکنده به حافظه و ذخیره سازی کمتری نیاز دارند و برای داده های پراکنده با ابعاد بالا مانند فرکانس کلمه مناسب هستند.
TF-IDF و SPLADE روشهای محبوبی برای ایجاد جاسازیهای برداری پراکنده هستند.
3. تعبیه های باینری
یک تعبیه باینری اطلاعات را تنها در 2 بیت، 1 و 0 ذخیره می کند. این شکل از ذخیره سازی به طور قابل ملاحظه ای کارآمدتر از اعداد صحیح ممیز شناور 32 بیتی است و بازیابی داده ها را بهبود می بخشد. با این حال، به از دست دادن اطلاعات منجر می شود زیرا ما در حال شماره گیری دقیق اطلاعات هستیم.
صرف نظر از این، تعبیههای باینری در موارد استفاده خاصی که سرعت برای دقت جزئی ترجیح داده میشود، محبوب هستند.
جاسازی های برداری چگونه ایجاد می شوند؟
مدلهای یادگیری عمیق پیچیده و روشهای آماری به ایجاد تعبیههای برداری کمک میکنند. این مدل ها الگوها و اتصالات را در داده های ورودی شناسایی می کنند تا تفاوت بین نقاط داده را بیاموزند. مدلها بر اساس درک خود از اتصالات زیربنایی، جاسازیهای برداری را در یک فضای n بعدی ایجاد میکنند.
فضای N-بعدی فراتر از تفکر سه بعدی ما است و داده ها را از منظرهای متعدد می گیرد. تعبیههای برداری با ابعاد بالا اجازه میدهد تا جزئیات دقیقتری را از نقاط داده ثبت کنید و در نتیجه خروجیهای دقیقی به دست آورید.
به عنوان مثال، در داده های متنی، فضای با ابعاد بالا امکان ثبت تفاوت های ظریف در معانی کلمات را فراهم می کند. کار کردن در یک فضای دو بعدی، کلمات “خسته” و “خسته” را با هم گروه بندی می کند. یک فضای n بعدی آنها را در ابعاد مختلف نشان می دهد و تفاوت در احساسات را به تصویر می کشد. از نظر ریاضی بردار زیر یک بردار است v در فضای n بعدی:
v=[v1,v2,…,vn]
دو تکنیک محبوب برای ایجاد جاسازی های برداری عبارتند از:
شبکه های عصبی
شبکههای عصبی، مانند شبکههای عصبی کانولوشن (CNN) یا شبکههای عصبی تکراری (RNN)، در یادگیری پیچیدگیهای داده برتری دارند. به عنوان مثال، BERT اصطلاحات همسایه یک کلمه را تجزیه و تحلیل می کند تا معنای آن را درک کند و جاسازی ها را ایجاد کند.
فاکتورسازی ماتریسی
بر خلاف شبکه های عصبی، فاکتورسازی ماتریس یک مدل تعبیه ساده تر است. داده های آموزشی را به عنوان یک ماتریس می گیرد که در آن هر سطر و ستون نشان دهنده یک رکورد داده است. سپس این مدل نقاط داده را به ماتریس های رتبه پایین تر تبدیل می کند. فاکتورسازی ماتریس عموماً در سیستمهای توصیه استفاده میشود، جایی که ماتریس ورودی ماتریس رتبهبندی کاربر با ردیفهایی است که کاربران و ستونهایی نشاندهنده آیتم (مثلاً فیلم) هستند. ضرب ماتریس جاسازی کاربر با جابجایی ماتریس جاسازی آیتم، ماتریسی تولید می کند که به ماتریس اصلی تقریب دارد.
ابزارها و کتابخانه های مختلف فرآیند تولید جاسازی ها از داده های ورودی را ساده می کنند. محبوب ترین کتابخانه ها عبارتند از TensorFlow، PyTorch و Hugging Face. این کتابخانه ها و ابزارهای منبع باز اسناد کاربر پسند را برای ایجاد مدل های جاسازی ارائه می دهند.
جدول زیر مدل های مختلف تعبیه، توضیحات آنها و پیوندهایی به اسناد رسمی را فهرست می کند:
جاسازی های برداری برای چه مواردی استفاده می شود؟
جاسازی های برداری به طور گسترده در کارهای مختلف جستجوی مدرن و هوش مصنوعی استفاده می شود. برخی از این وظایف عبارتند از:
جستجوی شباهت: جستجوی شباهت تکنیکی برای یافتن نقاط داده مشابه در فضای با ابعاد بالا است. این کار با اندازه گیری فاصله بین جاسازی های برداری با استفاده از معیارهای تشابه مانند فاصله اقلیدسی یا شباهت ژاکارد انجام می شود. موتورهای جستجوی مدرن از جستجوی مشابه برای بازیابی صفحات وب مرتبط در برابر جستجوهای کاربر استفاده می کنند.
سیستم های پیشنهادی: سیستم های توصیه برای خوشه بندی اقلام مشابه بر داده های برداری متکی هستند. سپس عناصری از همان خوشه به عنوان توصیه برای کاربران استفاده می شوند. این سیستم ها خوشه هایی را در سطوح مختلف ایجاد می کنند، مانند گروه هایی از کاربران بر اساس جمعیت شناسی و ترجیحات و گروهی از محصولات. تمام این اطلاعات به عنوان جاسازی های برداری برای بازیابی کارآمد و دقیق در زمان اجرا ذخیره می شود.
بازیابی نسل افزوده (RAG): RAG یک تکنیک محبوب برای کاهش مسائل توهم آمیز مدل های زبان بزرگ و ارائه دانش اضافی به آنها است. مدلهای جاسازی دانش خارجی و پرسشهای کاربر را به جاسازیهای برداری تبدیل میکنند. یک پایگاه داده برداری جاسازیها را ذخیره میکند و جستجوی مشابهی را برای مرتبطترین نتایج به درخواست کاربر انجام میدهد. LLM پاسخ های نهایی را بر اساس اطلاعات زمینه ای بازیابی شده تولید می کند.
ذخیره، نمایه سازی، و بازیابی جاسازی های برداری با Milvus
Milvus یک کتابخانه داخلی برای ذخیره، فهرست بندی و جستجوی جاسازی های برداری ارائه می دهد. در اینجا روش گام به گام برای انجام این کار با استفاده از PyMilvus کتابخانه:
1. کتابخانه ها را نصب کنید و یک پایگاه داده Milvus راه اندازی کنید
نصب کنید pymilvus ، و gensim ، کجا Pymilvus یک SDK پایتون برای Milvus است و gensim یک کتابخانه پایتون برای NLP است. برای نصب کتابخانه ها کد زیر را اجرا کنید:
!pip install -U -pymilvus gensim
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این آموزش، ما Milvus را با استفاده از docker متصل می کنیم، بنابراین مطمئن شوید که Docker را در سیستم خود نصب کرده اید. برای نصب Milvus دستور زیر را در ترمینال خود اجرا کنید:
> wget -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh
> bash standalone_embed.sh start
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اکنون سرویس Milvus شروع شده است و شما آماده استفاده از پایگاه داده Milvus هستید. برای راه اندازی یک پایگاه داده محلی Milvus وکتور، یک نمونه MilvusClient ایجاد کنید و یک نام فایل را مشخص کنید. milvus_demo.db، برای ذخیره تمام داده ها.
from pymilvus import MilvusClient
client = MilvusClient(“milvus_demo.db”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. جاسازی های برداری را ایجاد کنید
کد زیر مجموعه ای برای ذخیره سازی تعبیه ها ایجاد می کند، یک مدل از پیش آموزش دیده را بارگیری می کند gensim ، و برای کلمات ساده مانند یخ و آب جاسازی می کند:
import gensim.downloader as api
from pymilvus import ( connections, FieldSchema, CollectionSchema, DataType)
# create a collection
fields = [ FieldSchema(name=”pk”, dtype=DataType.INT64, is_primary=True, auto_id=False), FieldSchema(name=”words”, dtype=DataType.VARCHAR, max_length=50), FieldSchema(name=”embeddings”, dtype=DataType.FLOAT_VECTOR, dim=50)]
schema = CollectionSchema(fields, “Demo to store and retrieve embeddings”)
demo_milvus = client.create_collection(“milvus_demo”, schema)
# load the pre-trained model from gensim
model = api.load(“glove-wiki-gigaword-50”)
# generate embeddings
ice = model[‘ice’]
water = model[‘water’]
cold = model[‘cold’]
tree = model[‘tree’]
man = model[‘man’]
woman = model[‘woman’]
child = model[‘child’]
female = model[‘female’]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. جاسازی های وکتور فروشگاهی
جاسازی های برداری تولید شده در مرحله قبل را در قسمت ذخیره کنید demo_milvus مجموعه ای که در بالا ایجاد کردیم:
#Insert data in collection
data = [ [1,2,3,4,5,6,7,8], # field pk
[‘ice’,’water’,’cold’,’tree’,’man’,’woman’,’child’,’female’], # field words
[ice, water, cold, tree, man, woman, child, female], # field embeddings]
insert_result = demo_milvus.insert(data)
# After final entity is inserted, it is best to call flush to have no growing segments left in memory
demo_milvus.flush()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. ایجاد نمایه در ورودی
ایندکس ها جستجوی برداری را سریعتر می کنند. کد زیر IVF_FLAT شاخص، L2 (Euclidean distance) متریک و 128 پارامتر برای ایجاد یک شاخص:
index = { “index_type”: “IVF_FLAT”, “metric_type”: “L2”, “params”: {“nlist”: 128},}
demo_milvus.create_index(“embeddings”, index)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
5. جاسازی های برداری را جستجو کنید
برای جستجوی جاسازی برداری، مجموعه Milvus را در حافظه با استفاده از بارگذاری کنید .load() روش و جستجوی شباهت برداری انجام دهید:
demo_milvus.load()
# performs a vector similarity search:
data = [cold]search_params = { “metric_type”: “L2”, “params”: {“nprobe”: 10},}
result = demo_milvus.search(data, “embeddings”, search_params, limit=4, output_fields=[“words”])
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بهترین روش ها برای استفاده از جاسازی های برداری
دستیابی به نتایج بهینه با تعبیههای برداری مستلزم استفاده دقیق از مدلهای جاسازی است. بهترین روش ها برای استفاده از جاسازی های برداری عبارتند از:
1. انتخاب مدل جاسازی مناسب
مدل های مختلف تعبیه برای کارهای مختلف مناسب هستند. برای مثال، CLIP برای کارهای چندوجهی و GloVe برای کارهای NLP طراحی شده است. انتخاب مدل های تعبیه شده بر اساس نیازهای داده و محدودیت های محاسباتی منجر به خروجی های بهتر می شود.
2. بهینه سازی عملکرد جاسازی
مدل های از پیش آموزش دیده مانند BERT و CLIP نقطه شروع خوبی هستند. با این حال، اینها را می توان برای بهبود عملکرد بهینه کرد.
تنظیم Hyperparameter همچنین به یافتن ترکیب مهم ویژگی ها برای عملکرد بهینه کمک می کند. افزایش داده ها راه دیگری برای بهبود عملکرد مدل تعبیه شده است. به طور مصنوعی اندازه و پیچیدگی داده ها را افزایش می دهد و آن را برای کارهایی با داده های محدود مناسب می کند.
3. مدل تعبیه نظارت
نظارت مداوم بر مدلهای تعبیهشده، عملکرد آنها را در طول زمان آزمایش میکند. این بینش هایی را در مورد تخریب مدل ارائه می دهد و امکان تنظیم دقیق آنها را برای نتایج دقیق فراهم می کند.
4. در نظر گرفتن نیازهای در حال تحول
نیازهای در حال تکامل داده مانند افزایش داده یا تغییر فرمت ممکن است دقت را کاهش دهد. بازآموزی و تنظیم دقیق مدل ها با توجه به نیازهای داده، عملکرد دقیق مدل را تضمین می کند.
تلههای رایج و نحوه اجتناب از آنها
تغییر در معماری مدل
تنظیم دقیق و تنظیم هایپرپارامتر می تواند معماری مدل زیربنایی را تغییر دهد. از آنجایی که مدل تعبیههای برداری را تولید میکند، تغییرات قابل توجهی میتواند به جاسازیهای برداری مختلف منجر شود.
برای بهبود عملکرد مدل بدون تغییر کامل آنها، از تنظیم کامل پارامترهای مدل خودداری کنید. در عوض، مدل های از پیش آموزش دیده مانند Word2Vec و BERT را برای کارهای خاص تنظیم کنید.
رانش داده
جابجایی دادهها زمانی اتفاق میافتد که دادهها نسبت به مدل آموزش داده شده تغییر میکنند. این ممکن است منجر به تعبیه برداری نادرست شود. نظارت مداوم بر داده ها تضمین می کند که با الزامات مدل سازگار می مانند.
معیارهای ارزیابی گمراه کننده
تمام معیارهای ارزیابی برای کارهای مختلف مناسب هستند. انتخاب تصادفی معیارهای ارزیابی ممکن است منجر به تحلیل گمراهکننده شود و عملکرد واقعی مدل را پنهان کند.
معیارهای ارزیابی مناسب برای وظایف خود را با دقت انتخاب کنید. به عنوان مثال، شباهت کسینوس برای تفاوت های معنایی و امتیاز BLEU برای کارهای ترجمه.
منابع بیشتر
بهترین راه برای ایجاد درک عمیق تر از جاسازی های برداری، تماشای منابع مرتبط، تمرین و تعامل با متخصصان صنعت است. در زیر روش هایی وجود دارد که می توانید عمیقاً جاسازی های برداری را کشف کنید:
2. مشارکت جامعه
به انجمن Discord ما بپیوندید تا با توسعه دهندگان GenAI از صنایع مختلف ارتباط برقرار کنید و درباره همه چیز مربوط به جاسازی های برداری، پایگاه های داده برداری و هوش مصنوعی بحث کنید. بحثهای مربوطه را در مورد Stack Overflow، Reddit و GitHub دنبال کنید تا با مشکلات احتمالی که ممکن است هنگام کار با جاسازیها با آن مواجه شوید آشنا شوید و مهارتهای اشکالزدایی خود را بهبود ببخشید.
بهروز ماندن با منابع و تعامل با جامعه تضمین میکند که مهارتهای شما با پیشرفت فناوری رشد میکند، که مزیت رقابتی در صنعت هوش مصنوعی به شما ارائه میدهد.
جاسازی های برداری و زمان و نحوه استفاده از آنها را درک کنید. برنامه های کاربردی دنیای واقعی را با پایگاه داده برداری Milvus و Zilliz Cloud کاوش کنید.
تعبیههای برداری نمایشهای عددی نقاط داده هستند که جستجوی دادههای بدون ساختار را آسانتر میکنند. این جاسازیها در پایگاههای داده تخصصی مانند Milvus و Zilliz Cloud (میلووس کاملاً مدیریت شده) ذخیره میشوند که از الگوریتمهای پیشرفته و تکنیکهای نمایهسازی برای بازیابی سریع دادهها استفاده میکنند.
مدلهای مدرن هوش مصنوعی (AI)، مانند مدلهای زبان بزرگ (LLM)، از جاسازیهای متنی برای درک زبان طبیعی و ایجاد پاسخهای مرتبط استفاده میکنند. علاوه بر این، نسخه های پیشرفته LLM ها از Retrieval Augmented Generation (RAG) برای بازیابی اطلاعات از فروشگاه های برداری خارجی برای برنامه های کاربردی خاص استفاده می کنند.
در این پست وبلاگ، مفهوم جاسازی های برداری را درک خواهیم کرد و کاربردها، بهترین شیوه ها و ابزارهای کار با جاسازی ها را بررسی خواهیم کرد.
جاسازی های برداری چیست؟
تعبیه برداری فهرستی از نقاط داده عددی است که هر عدد نشان دهنده یک ویژگی داده است. این تعبیه ها با تجزیه و تحلیل اتصالات در یک مجموعه داده به دست می آیند. نقاط داده ای که به یکدیگر نزدیکتر هستند از نظر معنایی مشابه شناسایی می شوند.
جاسازیها با استفاده از مدلهای یادگیری عمیق که برای نگاشت دادهها به یک فضای برداری با ابعاد بالا آموزش داده شدهاند، فرمولبندی میشوند. مدلهای جاسازی محبوب مانند BERT و Data2Vec اساس بسیاری از برنامههای کاربردی یادگیری عمیق مدرن را تشکیل میدهند.
علاوه بر این، تعبیههای برداری به دلیل کارایی که دارند به طور گسترده در برنامههای NLP و CV استفاده میشوند.
انواع جاسازی وکتور
سه نوع اصلی جاسازی بر اساس ابعاد آنها وجود دارد: تعبیه متراکم، پراکنده و باینری. در اینجا چگونگی تفاوت آنها در ویژگی ها و استفاده آمده است:
1. جاسازی های متراکم
جاسازی های برداری که نقاط داده را با اکثر عناصر غیر صفر نشان می دهند متراکم هستند. آنها جزئیات دقیقتری را ثبت میکنند، زیرا همه دادهها، حتی مقادیر صفر را ذخیره میکنند، و باعث میشود کارایی ذخیرهسازی کمتری داشته باشند.
Word2Vec، GloVe، CLIP و BERT مدل هایی هستند که جاسازی های برداری متراکمی را از داده های ورودی ایجاد می کنند.
2. جاسازی های پراکنده
تعبیههای برداری پراکنده، بردارهایی با ابعاد بالا هستند که اکثر عناصر برداری صفر دارند. مقادیر غیر صفر در جاسازی های پراکنده نشان دهنده اهمیت نسبی نقاط داده در یک پیکره است. جاسازی های پراکنده به حافظه و ذخیره سازی کمتری نیاز دارند و برای داده های پراکنده با ابعاد بالا مانند فرکانس کلمه مناسب هستند.
TF-IDF و SPLADE روشهای محبوبی برای ایجاد جاسازیهای برداری پراکنده هستند.
3. تعبیه های باینری
یک تعبیه باینری اطلاعات را تنها در 2 بیت، 1 و 0 ذخیره می کند. این شکل از ذخیره سازی به طور قابل ملاحظه ای کارآمدتر از اعداد صحیح ممیز شناور 32 بیتی است و بازیابی داده ها را بهبود می بخشد. با این حال، به از دست دادن اطلاعات منجر می شود زیرا ما در حال شماره گیری دقیق اطلاعات هستیم.
صرف نظر از این، تعبیههای باینری در موارد استفاده خاصی که سرعت برای دقت جزئی ترجیح داده میشود، محبوب هستند.
جاسازی های برداری چگونه ایجاد می شوند؟
مدلهای یادگیری عمیق پیچیده و روشهای آماری به ایجاد تعبیههای برداری کمک میکنند. این مدل ها الگوها و اتصالات را در داده های ورودی شناسایی می کنند تا تفاوت بین نقاط داده را بیاموزند. مدلها بر اساس درک خود از اتصالات زیربنایی، جاسازیهای برداری را در یک فضای n بعدی ایجاد میکنند.
فضای N-بعدی فراتر از تفکر سه بعدی ما است و داده ها را از منظرهای متعدد می گیرد. تعبیههای برداری با ابعاد بالا اجازه میدهد تا جزئیات دقیقتری را از نقاط داده ثبت کنید و در نتیجه خروجیهای دقیقی به دست آورید.
به عنوان مثال، در داده های متنی، فضای با ابعاد بالا امکان ثبت تفاوت های ظریف در معانی کلمات را فراهم می کند. کار کردن در یک فضای دو بعدی، کلمات “خسته” و “خسته” را با هم گروه بندی می کند. یک فضای n بعدی آنها را در ابعاد مختلف نشان می دهد و تفاوت در احساسات را به تصویر می کشد. از نظر ریاضی بردار زیر یک بردار است v
در فضای n بعدی:
v=[v1,v2,…,vn]
دو تکنیک محبوب برای ایجاد جاسازی های برداری عبارتند از:
شبکه های عصبی
شبکههای عصبی، مانند شبکههای عصبی کانولوشن (CNN) یا شبکههای عصبی تکراری (RNN)، در یادگیری پیچیدگیهای داده برتری دارند. به عنوان مثال، BERT اصطلاحات همسایه یک کلمه را تجزیه و تحلیل می کند تا معنای آن را درک کند و جاسازی ها را ایجاد کند.
فاکتورسازی ماتریسی
بر خلاف شبکه های عصبی، فاکتورسازی ماتریس یک مدل تعبیه ساده تر است. داده های آموزشی را به عنوان یک ماتریس می گیرد که در آن هر سطر و ستون نشان دهنده یک رکورد داده است. سپس این مدل نقاط داده را به ماتریس های رتبه پایین تر تبدیل می کند. فاکتورسازی ماتریس عموماً در سیستمهای توصیه استفاده میشود، جایی که ماتریس ورودی ماتریس رتبهبندی کاربر با ردیفهایی است که کاربران و ستونهایی نشاندهنده آیتم (مثلاً فیلم) هستند. ضرب ماتریس جاسازی کاربر با جابجایی ماتریس جاسازی آیتم، ماتریسی تولید می کند که به ماتریس اصلی تقریب دارد.
ابزارها و کتابخانه های مختلف فرآیند تولید جاسازی ها از داده های ورودی را ساده می کنند. محبوب ترین کتابخانه ها عبارتند از TensorFlow، PyTorch و Hugging Face. این کتابخانه ها و ابزارهای منبع باز اسناد کاربر پسند را برای ایجاد مدل های جاسازی ارائه می دهند.
جدول زیر مدل های مختلف تعبیه، توضیحات آنها و پیوندهایی به اسناد رسمی را فهرست می کند:
جاسازی های برداری برای چه مواردی استفاده می شود؟
جاسازی های برداری به طور گسترده در کارهای مختلف جستجوی مدرن و هوش مصنوعی استفاده می شود. برخی از این وظایف عبارتند از:
-
جستجوی شباهت: جستجوی شباهت تکنیکی برای یافتن نقاط داده مشابه در فضای با ابعاد بالا است. این کار با اندازه گیری فاصله بین جاسازی های برداری با استفاده از معیارهای تشابه مانند فاصله اقلیدسی یا شباهت ژاکارد انجام می شود. موتورهای جستجوی مدرن از جستجوی مشابه برای بازیابی صفحات وب مرتبط در برابر جستجوهای کاربر استفاده می کنند.
-
سیستم های پیشنهادی: سیستم های توصیه برای خوشه بندی اقلام مشابه بر داده های برداری متکی هستند. سپس عناصری از همان خوشه به عنوان توصیه برای کاربران استفاده می شوند. این سیستم ها خوشه هایی را در سطوح مختلف ایجاد می کنند، مانند گروه هایی از کاربران بر اساس جمعیت شناسی و ترجیحات و گروهی از محصولات. تمام این اطلاعات به عنوان جاسازی های برداری برای بازیابی کارآمد و دقیق در زمان اجرا ذخیره می شود.
-
بازیابی نسل افزوده (RAG): RAG یک تکنیک محبوب برای کاهش مسائل توهم آمیز مدل های زبان بزرگ و ارائه دانش اضافی به آنها است. مدلهای جاسازی دانش خارجی و پرسشهای کاربر را به جاسازیهای برداری تبدیل میکنند. یک پایگاه داده برداری جاسازیها را ذخیره میکند و جستجوی مشابهی را برای مرتبطترین نتایج به درخواست کاربر انجام میدهد. LLM پاسخ های نهایی را بر اساس اطلاعات زمینه ای بازیابی شده تولید می کند.
ذخیره، نمایه سازی، و بازیابی جاسازی های برداری با Milvus
Milvus یک کتابخانه داخلی برای ذخیره، فهرست بندی و جستجوی جاسازی های برداری ارائه می دهد. در اینجا روش گام به گام برای انجام این کار با استفاده از PyMilvus
کتابخانه:
1. کتابخانه ها را نصب کنید و یک پایگاه داده Milvus راه اندازی کنید
نصب کنید pymilvus
، و gensim
، کجا Pymilvus
یک SDK پایتون برای Milvus است و gensim
یک کتابخانه پایتون برای NLP است. برای نصب کتابخانه ها کد زیر را اجرا کنید:
!pip install -U -pymilvus gensim
در این آموزش، ما Milvus را با استفاده از docker متصل می کنیم، بنابراین مطمئن شوید که Docker را در سیستم خود نصب کرده اید. برای نصب Milvus دستور زیر را در ترمینال خود اجرا کنید:
> wget -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh
> bash standalone_embed.sh start
اکنون سرویس Milvus شروع شده است و شما آماده استفاده از پایگاه داده Milvus هستید. برای راه اندازی یک پایگاه داده محلی Milvus وکتور، یک نمونه MilvusClient ایجاد کنید و یک نام فایل را مشخص کنید. milvus_demo.db
، برای ذخیره تمام داده ها.
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
2. جاسازی های برداری را ایجاد کنید
کد زیر مجموعه ای برای ذخیره سازی تعبیه ها ایجاد می کند، یک مدل از پیش آموزش دیده را بارگیری می کند gensim
، و برای کلمات ساده مانند یخ و آب جاسازی می کند:
import gensim.downloader as api
from pymilvus import ( connections, FieldSchema, CollectionSchema, DataType)
# create a collection
fields = [ FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False), FieldSchema(name="words", dtype=DataType.VARCHAR, max_length=50), FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=50)]
schema = CollectionSchema(fields, "Demo to store and retrieve embeddings")
demo_milvus = client.create_collection("milvus_demo", schema)
# load the pre-trained model from gensim
model = api.load("glove-wiki-gigaword-50")
# generate embeddings
ice = model['ice']
water = model['water']
cold = model['cold']
tree = model['tree']
man = model['man']
woman = model['woman']
child = model['child']
female = model['female']
3. جاسازی های وکتور فروشگاهی
جاسازی های برداری تولید شده در مرحله قبل را در قسمت ذخیره کنید demo_milvus
مجموعه ای که در بالا ایجاد کردیم:
#Insert data in collection
data = [ [1,2,3,4,5,6,7,8], # field pk
['ice','water','cold','tree','man','woman','child','female'], # field words
[ice, water, cold, tree, man, woman, child, female], # field embeddings]
insert_result = demo_milvus.insert(data)
# After final entity is inserted, it is best to call flush to have no growing segments left in memory
demo_milvus.flush()
4. ایجاد نمایه در ورودی
ایندکس ها جستجوی برداری را سریعتر می کنند. کد زیر IVF_FLAT
شاخص، L2 (Euclidean distance)
متریک و 128 پارامتر برای ایجاد یک شاخص:
index = { "index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128},}
demo_milvus.create_index("embeddings", index)
5. جاسازی های برداری را جستجو کنید
برای جستجوی جاسازی برداری، مجموعه Milvus را در حافظه با استفاده از بارگذاری کنید .load()
روش و جستجوی شباهت برداری انجام دهید:
demo_milvus.load()
# performs a vector similarity search:
data = [cold]search_params = { "metric_type": "L2", "params": {"nprobe": 10},}
result = demo_milvus.search(data, "embeddings", search_params, limit=4, output_fields=["words"])
بهترین روش ها برای استفاده از جاسازی های برداری
دستیابی به نتایج بهینه با تعبیههای برداری مستلزم استفاده دقیق از مدلهای جاسازی است. بهترین روش ها برای استفاده از جاسازی های برداری عبارتند از:
1. انتخاب مدل جاسازی مناسب
مدل های مختلف تعبیه برای کارهای مختلف مناسب هستند. برای مثال، CLIP برای کارهای چندوجهی و GloVe برای کارهای NLP طراحی شده است. انتخاب مدل های تعبیه شده بر اساس نیازهای داده و محدودیت های محاسباتی منجر به خروجی های بهتر می شود.
2. بهینه سازی عملکرد جاسازی
مدل های از پیش آموزش دیده مانند BERT و CLIP نقطه شروع خوبی هستند. با این حال، اینها را می توان برای بهبود عملکرد بهینه کرد.
تنظیم Hyperparameter همچنین به یافتن ترکیب مهم ویژگی ها برای عملکرد بهینه کمک می کند. افزایش داده ها راه دیگری برای بهبود عملکرد مدل تعبیه شده است. به طور مصنوعی اندازه و پیچیدگی داده ها را افزایش می دهد و آن را برای کارهایی با داده های محدود مناسب می کند.
3. مدل تعبیه نظارت
نظارت مداوم بر مدلهای تعبیهشده، عملکرد آنها را در طول زمان آزمایش میکند. این بینش هایی را در مورد تخریب مدل ارائه می دهد و امکان تنظیم دقیق آنها را برای نتایج دقیق فراهم می کند.
4. در نظر گرفتن نیازهای در حال تحول
نیازهای در حال تکامل داده مانند افزایش داده یا تغییر فرمت ممکن است دقت را کاهش دهد. بازآموزی و تنظیم دقیق مدل ها با توجه به نیازهای داده، عملکرد دقیق مدل را تضمین می کند.
تلههای رایج و نحوه اجتناب از آنها
تغییر در معماری مدل
تنظیم دقیق و تنظیم هایپرپارامتر می تواند معماری مدل زیربنایی را تغییر دهد. از آنجایی که مدل تعبیههای برداری را تولید میکند، تغییرات قابل توجهی میتواند به جاسازیهای برداری مختلف منجر شود.
برای بهبود عملکرد مدل بدون تغییر کامل آنها، از تنظیم کامل پارامترهای مدل خودداری کنید. در عوض، مدل های از پیش آموزش دیده مانند Word2Vec و BERT را برای کارهای خاص تنظیم کنید.
رانش داده
جابجایی دادهها زمانی اتفاق میافتد که دادهها نسبت به مدل آموزش داده شده تغییر میکنند. این ممکن است منجر به تعبیه برداری نادرست شود. نظارت مداوم بر داده ها تضمین می کند که با الزامات مدل سازگار می مانند.
معیارهای ارزیابی گمراه کننده
تمام معیارهای ارزیابی برای کارهای مختلف مناسب هستند. انتخاب تصادفی معیارهای ارزیابی ممکن است منجر به تحلیل گمراهکننده شود و عملکرد واقعی مدل را پنهان کند.
معیارهای ارزیابی مناسب برای وظایف خود را با دقت انتخاب کنید. به عنوان مثال، شباهت کسینوس برای تفاوت های معنایی و امتیاز BLEU برای کارهای ترجمه.
منابع بیشتر
بهترین راه برای ایجاد درک عمیق تر از جاسازی های برداری، تماشای منابع مرتبط، تمرین و تعامل با متخصصان صنعت است. در زیر روش هایی وجود دارد که می توانید عمیقاً جاسازی های برداری را کشف کنید:
2. مشارکت جامعه
به انجمن Discord ما بپیوندید تا با توسعه دهندگان GenAI از صنایع مختلف ارتباط برقرار کنید و درباره همه چیز مربوط به جاسازی های برداری، پایگاه های داده برداری و هوش مصنوعی بحث کنید. بحثهای مربوطه را در مورد Stack Overflow، Reddit و GitHub دنبال کنید تا با مشکلات احتمالی که ممکن است هنگام کار با جاسازیها با آن مواجه شوید آشنا شوید و مهارتهای اشکالزدایی خود را بهبود ببخشید.
بهروز ماندن با منابع و تعامل با جامعه تضمین میکند که مهارتهای شما با پیشرفت فناوری رشد میکند، که مزیت رقابتی در صنعت هوش مصنوعی به شما ارائه میدهد.