پایگاه داده برداری
پایگاه داده برداری[۱] چیست؟
پایگاه داده برداری پایگاه دادهای است که اطلاعات را به صورت بردار ذخیره می کند، برداراهایی که نمایش عددی از اشیاء هستند و به عنوان جاسازی برداری[۲] نیز شناخته میشود. از قدرت این جاسازیهای برداری برای فهرستبندی و جستجو میان مجموعه دادههای عظیم بدون ساختار و نیمه ساختاریافته، مانند تصاویر، متن، یا داده حسگرهای اینترنت اشیاء استفاده میشود. پایگاه دادههای برداری برای مدیریت جاسازیهای برداری ساخته شدهاند و بنابراین راه حل کاملی برای مدیریت دادههای بدون ساختار و نیمه ساختار یافته ارائه می دهند.
یک پایگاه داده برداری با کتابخانه جستجوی برداری یا نمایه برداری متفاوت است: این یک راهکار مدیریت داده است که ذخیره سازی و فیلتر کردن متادادهها را امکان پذیر میکند، مقیاس پذیر است، امکان تغییرات پویا دادهها، انجام پشتیبان گیری، و ارائه ویژگیهای امنیتی را فراهم میکند.
یک بانک اطلاعاتی برداری دادهها را بوسیله بردارهای با ابعاد بالا سازماندهی میکند. بردارهای با ابعاد بالا شامل صدها بُعد هستند و هر بُعد مربوط به ویژگی یا ویژگیهای خاصی از یک شی داده است.
جاسازی برداری چیست؟
جاسازیهای برداری یک نمایش عددی از یک موضوع، کلمه، تصویر یا هر قطعه داده دیگری است. جاسازیهای برداری همچنین به عنوان جاسازی شناخته می شوند و توسط LLM[3] و سایر مدلهای هوش مصنوعی ایجاد میشوند.
فاصله بین هر بردار چیزی است که یک پایگاه داده برداری یا یک موتور جستجوی برداری را قادر می سازد تا شباهت بین بردارها را تعیین کند. فاصلهها ممکن است ابعاد مختلفی از اشیاء داده را نشان دهند که یادگیری ماشین و درک هوش مصنوعی از الگوها، روابط و ساختارهای زیربنایی را ممکن می سازد.
پایگاه داده برداری چگونه کار می کند؟
پایگاه داده برداری با استفاده از الگوریتمهایی برای فهرستبندی و پرسوجو کردن روی جاسازی بردارها کار میکند. الگوریتم جستجوی تقریبی نزدیکترین همسایه[۱] را از طریق هش کردن[۲]، کوانتیزه کردن[۳]، یا جستجوی مبتنی بر نمودار[۴] فعال میکند.
برای بازیابی اطلاعاتِ یک جستجوی ANN ، پرسوجو نزدیکترین همسایه برداری را پیدا میکند، که از نظر محاسباتی کمتر از الگوریتم k واقعی نزدیکترین همسایه است، همچنین جستجوی تقریبی نزدیکترین همسایه نیز دقت کمتری دارد. با این حال، برای مجموعه داده های بزرگ بردارهای با ابعاد بالا کارآمد و مقیاسپذیر کار میکند.
خط لوله بانک اطلاعاتی برداری به شکل زیر است:
- ایندکس گذاری یا نمایه سازی:
با استفاده از هش کردن، کوانتیزه کردن، یا تکنیکهای مبتنی بر نمودار، یک بانک اطلاعاتی برداری، بردارها را با نگاشت آنها به یک ساختار داده مشخص ایندکس میکند. این نوع ایندکسگذاری امکان جستجوی سریعتر را فراهم میکند.
- Hashing هش کردن
یک الگوریتم هش، مانند الگوریتم هش حساس محلی[۱] ، بهترین گزینه برای جستجوی تقریبی نزدیکترین همسایه است زیرا نتایج را سریع فعال میکند و نتایج تقریبی ایجاد میکند. این الگوریتم از جداول هش برای نقشهبرداری از نزدیکترین همسایگان استفاده میکند (به یک پازل سودوکو فکر کنید). پرسوجویی در یک جدول هش میشود و سپس با مجموعهای از بردارها در همان جدول مقایسه میشود تا شباهت مشخص شود.
- Quantization کوانتیزه کرده
یک تکنیک کوانتیزاسیون مانند کوانیتزه کردن محصول[۲]، بردارها را به قطعات کوچکتر تقسیم میکند و آن قسمتها را با کد نشان میدهد و سپس قطعات را دوباره کنار هم قرار میدهد، ماحصلش نمایش کد یک بردار و اجزای آن است. مجموعه این کدها به عنوان کتاب کد شناخته میشود. هنگامی که یک پایگاه داده برداری که از کوانتیزاسیون استفاده می کند پرسوجو میشود، پرسوجو را به کد تقسیم میکند و سپس آن را با کتاب کد مطابقت میدهد تا شبیه ترین کد را برای تولید نتایج پیدا کند.
- Graph-based مبتنی بر نمودار
یک الگوریتم گراف، مانند الگوریتم HNSW[3] از گره برای نمایش بردارها استفاده میکند. الگوریتم گرهها را خوشهبندی میکند و خطوط یا لبههایی را بین گرههای مشابه رسم میکند، سپس نمودارهای سلسله مراتبی ایجاد میکند. هنگامی که یک پرسوجو ایجاد میشود، الگوریتم سلسله مراتب نمودار را برای یافتن گرههای حاوی بردارهایی که شبیهترین بردار به پرسوجو هستند، پیدا میکند.
یک پایگاه داده برداری متاداده یک شی داده را ایندکس میکند. به همین دلیل، یک بانک اطلاعاتی برداری دارای دو شاخص است: نمایه برداری و نمایه متاداده.
- Querying پرسوجو
هنگامی که روی یک پایگاه داده برداری پرسوجو میکنیم، پایگاه داده بردارهای نمایه شده را با بردار پرسوجو مقایسه میکند تا نزدیکترین همسایگان بردار را تعیین کند. برای ایجاد نزدیکترین همسایگان، یک بانک اطلاعاتی برداری بر روشهای ریاضی موسوم به اندازهگیریهای شباهت تکیه میکند. انواع مختلفی از معیارهای شباهت وجود دارد که در ادامه به برخی اشاره میشود.
- Cosine similarity شباهت کسینوسی
شباهت را در محدوده ۱- تا ۱ ایجاد میکند. با اندازهگیری کسینوس زاویه بین دو بردار در یک فضای برداری، بردارهایی را به صورت قطری متضاد (نمایش ۱-)، متعامد (نمایش ۰) هستند. یا یکسان (با ۱ نشان داده شده است) نشان میدهد.
- Euclidean distance فاصله اقلیدسی
با اندازه گیری فاصله خط مستقیم بین بردارها شباهت را در محدوده ۰ تا بی نهایت تعیین میکند. بردارهای یکسان با ۰ نشان داده می شوند، در حالی که مقادیر بیشتر نشان دهنده تفاوت بیشتر بین بردارها است.
- Dot product شباهت محصول نقطهای
این معیار شباهت برداری را در محدوده منهای بینهایت تا بینهایت تعیین میکند. با اندازهگیری حاصل ضرب بزرگی دو بردار و کسینوس زاویه بین آنها حاصل ضرب نقطهای یا اسکالر بدست میآید. بردارهایی که از یکدیگر دور هستند مقادیر منفی، بردارهای عمود بر هم مقدار صفر و بردارهایی که در یک جهت هستند مقادیر مثبت اختصاص میدهد.
- Post-processing پس پردازش
مرحله نهایی در خط لوله بانک اطلاعاتی برداری گاهی اوقات پس پردازش یا پس از فیلتر است، که طی آن پایگاه داده برداری از معیار شباهت متفاوتی برای رتبهبندی مجدد نزدیکترین همسایگان استفاده میکند. در این مرحله بانک اطلاعاتی برداری نزدیکترین همسایگان پرسوجو شناسایی شده در جستجو را بر اساس متاداده آنها فیلتر میکند.
برخی از پایگاههای داده برداری ممکن است قبل از اجرای جستجوی برداری از فیلترها استفاده کنند. در این مورد به آن پیش پردازش یا پیش فیلتر می گویند.
چرا پایگاه داده های برداری مهم هستند؟
پایگاه دادههای برداری به این دلیل مهم هستند که جاسازیهای برداری را در خود نگهداری میکنند و مجموعهای از قابلیتها از جمله نمایهسازی، معیارهای فاصله و جستجوی شباهت را فعال میکنند. به عبارت دیگر، پایگاه داده برداری مخصوص مدیریت دادههای بدون ساختار و دادههای نیمه ساختار یافته هستند. در نتیجه، بانک اطلاعاتی برداری ابزاری حیاتی در یادگیری ماشینی و چشم انداز دیجیتالی هوش مصنوعی است
اجزای اصلی پایگاه های داده برداری
یک پایگاه داده برداری ممکن است دارای اجزای اصلی زیر باشد:
- عملکرد و تحمل خطا
فرآیند Sharding یا تقسیم و تکرار[۴] تضمین میکند که پایگاه داده برداری عملکرد و تحمل خطاها را دارد. این فرآیند شامل پارتیشنبندی دادهها در چندین گره است، در حالی که تکثیر شامل ساخت چندین نسخه از داده ها در گره های مختلف است. با این تفاسیر در صورت خرابی یک گره، این امکان تحمل خطا و ادامه عملکرد را فراهم می کند.
- قابلیت های نظارت
برای اطمینان از عملکرد و تحمل خطا، پایگاه داده برداری نیاز به نظارت بر استفاده از منابع، عملکرد پرس و جو و سلامت کلی سیستم دارد.
- قابلیت کنترل دسترسی
پایگاه دادههای برداری نیاز به مدیریت امنیت دادهها دارند، به همین دلیل مقررات کنترل دسترسی، انطباق، پاسخگویی، و توانایی ممیزی استفاده از پایگاه داده را تضمین میکند. همچنین به این معنی است که دادهها محافظت میشوند و افرادی که مجوزها را دارند به آن دسترسی پیدا میکنند یا سابقه فعالیت کاربر حفظ میشود.
- مقیاسپذیری و تنظیمپذیری
قابلیت های کنترل دسترسی خوب بر مقیاس پذیری و تنظیم پذیری پایگاه داده برداری تأثیر میگذارد. با افزایش مقدار دادههای ذخیره شده، امکان مقیاس افقی اجباری میشود. نرخ مختلف درج و پرس و جو، و همچنین تفاوت در سخت افزار، بر نیازهای برنامه تاثیر میگذارد.
- کاربران چندگانه و جداسازی دادهها
در کنار مقیاس پذیری و قابلیتهای کنترل دسترسی، یک بانک اطلاعاتی برداری باید چندین کاربر یا چند اجارهای[۵] را در خود جای دهد. در هماهنگی با این، پایگاه دادههای برداری باید جداسازی دادهها را فعال کنند تا هرگونه فعالیت کاربر (مانند درج، حذف، یا پرس و جو) برای سایر کاربران خصوصی باقی بماند مگر اینکه نیاز باشد.
- پشتیبان گیری
پایگاه داده برداری پشتیبانگیری منظم از دادهها را انجام میدهد. این یک جزء کلیدی از یک بانک اطلاعاتی برداری است که در صورت خرابی سیستم از آن استفاده میگردد. در صورت از دست رفتن داده یا خرابی دادهها، پشتیبانگیری میتواند به بازگرداندن پایگاه داده به حالت قبلی کمک کند. این باعث میشود تا زمان خرابی به حداقل برسد.
- API ها و SDK ها
یک پایگاه داده برداری از API ها[۶] برای فعال کردن یک رابط کاربر پسند استفاده میکند. API یک رابط برنامهنویسی کاربردی یا نوعی نرمافزار است که برنامهها را قادر میسازد از طریق درخواستها و پاسخها با یکدیگر صحبت کنند. لایههای API تجربه جستجوی برداری را ساده میکند. SDK ها[۷] یا کیت های توسعه نرم افزار، اغلب API ها را بسته بندی میکنند. آنها زبانهای برنامه نویسی هستند که پایگاه داده برای برقراری ارتباط و مدیریت از آنها استفاده میکند. SDK ها مورد پسند و استفاده توسعهدهندگان است و از آن در پایگاه های داده برداری استفاده میکنند، زیرا در هنگام توسعه موارد استفاده خاص (جستجوی معنایی، سیستمهای توصیه و غیره) نیازی به نگرانی در مورد ساختار اساسی ندارند.
تفاوت بین پایگاه داده برداری و پایگاه داده رابطهای
یک پایگاه داده رابطهای اطلاعات را به شکل جدولی ذخیره میکند و با اختصاص مقادیر به نقاط داده، داده ها را ایندکسگذاری میکند. هنگامی که روی پایگاه داده رابطهای پرسوجو میشود، نتایجی را برمیگرداند که دقیقاً با پرس و جو مطابقت دارند.
اما پایگاه داده برداری، بردارها را به شکل جاسازیها ذخیره میکند و جستجوی برداری را فعال میکند، که نتایج پرسوجو را بر اساس معیارهای شباهت (به جای مطابقت دقیق) برمیگرداند. یک بانک اطلاعاتی برداری در جایی که کار با جاسازی های برداری طراحی شده استفاده میشود.
یک بانک اطلاعاتی برداری همچنین در کاربردهای خاص مانند یافتن مشابه، هوش مصنوعی و برنامههای یادگیری ماشین مناسبتر از پایگاه داده رابطهای است، زیرا جستجوی با ابعاد بالا و ایندکسگذاری سفارشی را امکان پذیر میکند و به مزایایی چون مقیاسپذیری، انعطافپذیری و کارآمدی بالا را دارد.
کاربردهای پایگاه داده برداری
پایگاه داده های برداری در هوش مصنوعی، یادگیری ماشین (ML)، پردازش زبان طبیعی (NLP) و برنامههای کاربردی تشخیص تصویر استفاده میشود.
- برنامه های کاربردی AI/ML
بانک اطلاعاتی برداری میتواند قابلیت های هوش مصنوعی را با بازیابی اطلاعات معنایی و حافظه بلند مدت بهبود بخشد.
- برنامه های کاربردی NLP
جستجوی شباهت برداری، جزء کلیدی پایگاه های داده برداری است که برای برنامههای کاربردی پردازش زبان طبیعی مفید است. پایگاه داده برداری میتواند جاسازیهای متن را پردازش کند، که به رایانه امکان میدهد زبان انسانی یا طبیعی را «درک» کند.
- برنامه های کاربردی شناسایی و بازیابی تصویر
پایگاه داده برداری تصاویر را به جاسازی تصویر تبدیل میکند. با جستجوی شباهت، آنها قادر به بازیابی تصاویر مشابه یا شناسایی تصاویر مشابه هستند.
پایگاه داده های برداری همچنین می توانند به برنامه های تشخیص ناهنجاری و تشخیص چهره خدمت کنند.
روندهای آینده در پایگاه داده های برداری
آینده بانک اطلاعاتی برداری به طور پیچیده ای با توسعه هوش مصنوعی و ML و همچنین تحقیقات مربوط به استفاده از یادگیری عمیق برای ایجاد جاسازیهای قویتر برای دادههای ساختاریافته و بدون ساختار مرتبط است.
با بهبود توانایی ایجاد جاسازیهای بهتر، توانایی پایگاه داده برداری برای پردازش و مدیریت بهتر این جاسازیها، تکنیکها و الگوریتمهای جدید افزایش مییابد. در واقع، چنین روشهای جدیدی به طور مداوم در حال توسعه هستند.
تحقیقات تکمیلی به توسعه پایگاه دادههای ترکیبی اختصاص داده شده است. این نوع بانک اطلاعاتی در نظر دارد تا قدرت پایگاه دادههای رابطهای و بانک اطلاعاتی برداری را به عنوان پاسخی به نیاز روزافزون به پایگاه های داده کارآمد و مقیاس پذیر ترکیب کنند.
[۱] locality-sensitive hashing (LSH)
[۲] Product Quantization (PQ)
[۳] Hierarchical Navigable Small World (HNSW)
[۴] به طور کلی تقسیم و تکرار یا Sharding فرآیند ذخیره سازی یک پایگاه داده بزرگ در چندین ماشین است. یک ماشین یا سرور پایگاه داده تنها می تواند مقدار محدودی داده را ذخیره و پردازش کند. اشتراک گذاری پایگاه داده با تقسیم داده ها به تکه های کوچکتر به نام خرده و ذخیره آنها در چندین سرور پایگاه داده بر این محدودیت غلبه می کند. همه سرورهای پایگاه داده معمولاً دارای فناوری های زیربنایی یکسانی هستند و برای ذخیره و پردازش حجم زیادی از داده ها با هم کار می کنند.
[۵] چند اجارهای یا Muli-tenancy یک معماری ابری است که در آن یک نمونه از یک برنامه نرمافزاری به چندین مشتری خدمت میکند. به هر مشتری مستاجر گفته میشود. میتوان به مستاجرین این امکان را داد که برخی از قسمتهای برنامه را سفارشی کنند، مانند رنگ رابط کاربری یا قوانین تجاری، اما نمیتوانند کد برنامه را سفارشی کنند.
[۶] Application Programming Interface (API)
[۷] Software Development Kit (SDK)
[۱] Approximate Nearest Neighbor (ANN) search
[۲] hashing
[۳] کوانتیزاسیون برداری یک تکنیک فشرده سازی داده است که برای کاهش اندازه داده های با ابعاد بالا استفاده می شود. فشرده سازی بردارها استفاده از حافظه را کاهش می دهد و در عین حال تقریباً تمام اطلاعات ضروری را حفظ می کند. این روش امکان ذخیره سازی کارآمدتر و عملیات جستجوی سریع تر، به ویژه در مجموعه داده های بزرگ را فراهم می کند.
[۴] graph-based search
[۱] Vector Database
[۲] vector embedding
[۳] Large Language Models (LLM)
تألیف و ترجمه: آقای مهندس رضا بهادری زاده در صورت تمایل. برای کسب اطلاعات بیشتر در زمینه مهندسی داده. و ارتباط با اینجانب، شماره تلفن مستقیم ۰۲۱۸۶۱۱۱۷۲۵ در اختیار شماست.
جهت استفاده از خدمت هوش تجاری نفیس. و همچنین گرفتن مشاوره. هوشمند سازی کسبوکار در سازمان خود، فرم زیر را تکمیل بفرمائید:
نوشتن نظر