پایگاهداده برداری (Vector Database) چیست؟
پایگاهدادهای تخصصی برای ذخیره Embeddingها و جستوجوی سریع «نزدیکترینها» بر اساس شباهت معنایی، نه تطابق دقیق متن.
چرا مهم است؟
پایگاهدادههای رابطهای/سندی برای جستوجوی دقیق (WHERE name = ...) بهینهاند، نه برای «کدام متنها از نظر معنا شبیه این متناند؟» — دقیقاً همان سؤالی که RAG و جستوجوی معنایی نیاز دارند؛ Vector Database با ایندکسهای تخصصی (HNSW و مشابه) این جستوجو را روی میلیونها بردار در چند میلیثانیه ممکن میکند.
تعریف
Vector Database بردارهای عددی (خروجی مدلهای Embedding) را بههمراه متن اصلی ذخیره میکند و بهجای تطابق دقیق، بر اساس فاصله بین بردارها (Cosine Similarity رایجترین است) نزدیکترین نتایج را برمیگرداند.
گزینههای رایج
| نوع | نمونه | نکته |
|---|---|---|
| اختصاصی/ابری | Pinecone، Qdrant، Weaviate | مدیریتشده، مقیاسپذیر، شروع سریع |
| افزونه روی دیتابیس موجود | pgvector (روی PostgreSQL) | اگر از قبل PostgreSQL دارید، بدون زیرساخت جدید |
| سرویس ابری مایکروسافت | Azure AI Search | یکپارچه با اکوسیستم Azure و Semantic Kernel |
| در حافظه/سبک | Redis (RediSearch)، SQLite-VSS | مناسب پروژههای کوچک یا Cache |
جریان کار پایه
// 1) تبدیل متن به بردار
float[] vector = await embeddingGenerator.GenerateAsync(document.Text);
// 2) ذخیره بردار + متن اصلی در Vector Database
await vectorStore.UpsertAsync(document.Id, vector, document.Text);
// 3) در زمان جستوجو، سؤال کاربر هم به بردار تبدیل و مقایسه میشود
var results = await vectorStore.SearchAsync(queryVector, topK: 5);
اشتباه رایج
❌ استفاده از فاصله اقلیدسی (Euclidean) و Cosine Similarity بهجای هم بدون توجه — بیشتر مدلهای Embedding متنی برای Cosine بهینه شدهاند؛ انتخاب اشتباه معیار شباهت، نتایج نامرتبط برمیگرداند.
منبع و مطالعه بیشتر
خلاصه
Vector Database بردارهای Embedding را ذخیره و بر اساس شباهت معنایی (نه تطابق دقیق) جستوجو میکند و پایه اصلی RAG است. گزینهها از سرویسهای اختصاصی (Pinecone، Qdrant) تا افزونه روی دیتابیس موجود (pgvector) و Azure AI Search متغیرند. معیار شباهت درست (معمولاً Cosine) باید با مدل Embedding همخوان باشد. مرجع کامل: Microsoft Learn.
