یکی از مهمترین بخشهای ساخت سیستمهای هوش مصنوعی مبتنی بر اسناد، انتخاب و راهاندازی یک پایگاه داده مناسب برای ذخیره اطلاعات و بازیابی محتوای مرتبط است. اگر قصد دارید با n8n یک چتبات هوشمند، دستیار پاسخگویی یا سیستم RAG بسازید، احتمالاً با اصطلاح Vector Database یا پایگاه داده برداری روبهرو شدهاید.
پایگاه داده برداری به شما کمک میکند نمایش عددی متنها، تصاویر یا دادههای دیگر را ذخیره کنید و هنگام دریافت یک سؤال، اطلاعاتی را پیدا کنید که از نظر معنایی به آن نزدیک هستند.
در این آموزش از CMSNevis یاد میگیریم Vector Database چیست، چه تفاوتی با پایگاه دادههای معمولی دارد و چگونه میتوان آن را به n8n متصل کرد. همچنین با یک مثال عملی، مسیر ذخیرهسازی اطلاعات و بازیابی آنها را برای استفاده در پروژههای هوش مصنوعی بررسی میکنیم.
Vector Database چیست؟
Vector Database یا پایگاه داده برداری، نوعی پایگاه داده است که برای ذخیره و جستوجو در میان بردارهای عددی طراحی شده است.
برای درک بهتر، فرض کنید سه جمله زیر را در اختیار دارید:
- روش تغییر رمز عبور حساب کاربری چیست؟
- چگونه رمز حسابم را عوض کنم؟
- قیمت محصول جدید چقدر است؟
از نظر معنایی، دو جمله اول به یک موضوع نزدیک هستند؛ هرچند کلمات آنها دقیقاً یکسان نیستند.
در جستوجوی متنی معمولی، پیدا کردن چنین ارتباطی ممکن است به روش جستوجو و عبارت واردشده وابسته باشد. اما در جستوجوی برداری، میتوان متنها را با یک مدل Embedding به بردارهای عددی تبدیل کرد و میزان شباهت آنها را سنجید.
Vector Database این بردارها و اطلاعات مرتبط با آنها را نگهداری میکند تا بتوان در زمان نیاز، بخشهای مرتبط را بازیابی کرد.
Embedding چیست؟
Embedding نمایش عددی یک داده است که توسط یک مدل مخصوص تولید میشود. برای مثال، یک مدل متنی میتواند جمله را به برداری با تعداد مشخصی مؤلفه عددی تبدیل کند.
این بردار معمولاً بهگونهای تولید میشود که روابط معنایی میان متنها تا حدی در آن بازتاب پیدا کند.
نکته مهم این است که همه مدلهای Embedding خروجی یکسانی ندارند. هنگام انتخاب مدل، باید ابعاد بردار و سازگاری آن با تنظیمات Collection در پایگاه داده را بررسی کنید.
تفاوت Vector Database با MySQL و PostgreSQL چیست؟
پایگاه دادههای رابطهای مانند MySQL و PostgreSQL برای نگهداری دادههای ساختاریافته، روابط میان جداول و انجام پرسوجوهای مختلف بسیار کاربردی هستند.
Vector Database برای سناریوهایی طراحی شده است که در آنها جستوجو بر اساس شباهت برداری اهمیت دارد.
| ویژگی | پایگاه داده رابطهای | پایگاه داده برداری |
|---|---|---|
| ذخیره دادههای ساختاریافته | بسیار مناسب | بسته به محصول و قابلیتها |
| جستوجو بر اساس شناسه و فیلدها | بله | معمولاً از طریق Metadata و فیلترها نیز ممکن است |
| جستوجوی شباهت معنایی | نیازمند پیادهسازی یا قابلیت مکمل | از کاربردهای اصلی |
| ذخیره بردارهای Embedding | بسته به قابلیتها | از کاربردهای اصلی |
| استفاده در RAG | امکانپذیر است | یکی از انتخابهای رایج |
این دو نوع پایگاه داده الزاماً رقیب یکدیگر نیستند. در بسیاری از پروژهها، دادههای اصلی کاربران و سفارشها در پایگاه داده رابطهای نگهداری میشوند و بردارهای اسناد در یک Vector Store قرار میگیرند.
چرا باید Vector Database را به n8n متصل کنیم؟
n8n یک ابزار اتوماسیون Workflow است که میتواند سرویسها و اجزای مختلف را به یکدیگر متصل کند.
با اتصال آن به Vector Database میتوانید فرایندهایی مانند موارد زیر را پیادهسازی کنید:
- ذخیره Embedding مربوط به اسناد
- جستوجوی معنایی در میان فایلها
- ساخت پایگاه دانش برای چتبات هوش مصنوعی
- بازیابی اطلاعات مرتبط برای AI Agent
- بهروزرسانی اطلاعات اسناد
- اتصال پایگاه دانش به تلگرام یا سایت
- ساخت سیستم جستوجوی هوشمند در مستندات
برای مثال، میتوانید Workflowای بسازید که هر بار یک فایل جدید دریافت میکند، متن آن را استخراج کرده و پس از تولید Embedding در Vector Database ذخیره کند.
سپس هنگام دریافت سؤال کاربر، Workflow دیگری اطلاعات مرتبط را بازیابی میکند و برای تولید پاسخ به مدل زبانی میدهد.
انتخاب Vector Database برای n8n
پیش از شروع، باید یک پایگاه داده برداری انتخاب کنید. گزینه مناسب به زیرساخت، حجم داده، هزینه و نیازهای پروژه بستگی دارد.
چند گزینه شناختهشده عبارتاند از:
- Qdrant: پایگاه داده برداری با امکان استقرار مستقل و ارائه سرویس مدیریتشده.
- Pinecone: سرویس مدیریتشده برای ذخیرهسازی و جستوجوی برداری.
- Weaviate: پایگاه دادهای با قابلیتهای جستوجوی برداری و امکانات مرتبط.
- PostgreSQL همراه pgvector: گزینهای برای نگهداری دادههای رابطهای و بردارها در یک زیرساخت مشترک.
در این آموزش از Qdrant بهعنوان مثال استفاده میکنیم؛ چون میتوان آن را بهصورت سرویس مستقل اجرا کرد یا از سرویس مدیریتشده آن بهره برد.
مراحل کلی مفاهیم مشابهی در گزینههای دیگر دارند، اما آدرس اتصال، روش احراز هویت، ساختار تنظیمات و Nodeهای مورد استفاده ممکن است متفاوت باشد.
آموزش اتصال Qdrant به n8n
برای این مثال به یک نمونه Qdrant قابل دسترس، یک Workflow در n8n و یک مدل Embedding سازگار نیاز دارید.
اگر n8n و Qdrant روی سرورهای جداگانه اجرا میشوند، باید ارتباط شبکه و دسترسی لازم نیز برقرار باشد.
مرحله اول: آمادهسازی Qdrant
ابتدا Qdrant را به یکی از روشهای پشتیبانیشده راهاندازی کنید؛ برای مثال با Docker یا سرویس مدیریتشده.
پس از راهاندازی، اطلاعات زیر را مشخص کنید:
- آدرس سرویس Qdrant
- روش احراز هویت
- نام Collection مورد استفاده
- ابعاد بردارهای مدل Embedding
- تنظیمات دسترسی شبکه
Collection را میتوان بهعنوان فضایی برای نگهداری مجموعهای از بردارها و دادههای مرتبط در نظر گرفت.
برای نمونه، میتوانید Collectionای با نام cmsnevis_knowledge برای اسناد پایگاه دانش خود در نظر بگیرید.
نام Collection دلخواه است، اما ابعاد بردار باید با مدل Embedding انتخابشده سازگار باشد.
نکته امنیتی: سرویس Qdrant را بدون بررسی امنیتی روی اینترنت عمومی در دسترس قرار ندهید. برای محیط عملیاتی، احراز هویت، محدودسازی دسترسی شبکه و استفاده از ارتباط امن را در نظر بگیرید.
مرحله دوم: آمادهسازی اتصال شبکه
اگر Qdrant و n8n روی یک سرور و در کانتینرهای Docker قرار دارند، معمولاً بهتر است ارتباط آنها از طریق شبکه داخلی Docker برقرار شود.
برای مثال، اگر هر دو سرویس در یک شبکه مشترک باشند، ممکن است آدرس داخلی Qdrant با نام سرویس قابل استفاده باشد. آدرس دقیق به نام سرویس، پورت و شبکه واقعی شما بستگی دارد.
اگر n8n در یک کانتینر و Qdrant در کانتینری دیگر است، استفاده از localhost داخل کانتینر n8n معمولاً به خود همان کانتینر اشاره میکند، نه کانتینر Qdrant.
بنابراین، اگر اتصال برقرار نمیشود، ابتدا موارد زیر را بررسی کنید:
- هر دو سرویس در وضعیت اجرا باشند.
- شبکه ارتباطی آنها درست تنظیم شده باشد.
- آدرس و پورت مقصد صحیح باشند.
- فایروال یا تنظیمات شبکه ارتباط را مسدود نکرده باشند.
- اطلاعات احراز هویت درست وارد شده باشد.
اگر از سرویس مدیریتشده استفاده میکنید، آدرس و اطلاعات اتصال را از پنل همان سرویس دریافت کنید.
مرحله سوم: ساخت Credential یا تنظیمات اتصال در n8n
در n8n یک Workflow جدید بسازید و Nodeهای مربوط به Vector Store را بررسی کنید.
بسته به نسخه n8n و روش پیادهسازی، ممکن است Node اختصاصی Qdrant یا گزینههای مرتبط با Vector Store در بخش AI در دسترس باشند.
اگر از Node اختصاصی Qdrant استفاده میکنید، Credential مربوط به سرویس را مطابق تنظیمات آن ایجاد کنید.
معمولاً به آدرس سرویس و در صورت فعال بودن احراز هویت، API Key نیاز دارید.
اگر از Nodeهای AI برای اتصال به Qdrant استفاده میکنید، تنظیمات اتصال را در همان Node یا Credential مرتبط وارد کنید.
نام فیلدها و گزینهها ممکن است میان نسخهها متفاوت باشد؛ بنابراین، بر اساس Node واقعی موجود در نسخه نصبشده پیش بروید.
نکته: API Key را داخل کد عمومی، پیام کاربر یا متن ثابت قابل مشاهده قرار ندهید. برای مدیریت امن اطلاعات اتصال از قابلیت Credentials در n8n استفاده کنید.
مرحله چهارم: انتخاب مدل Embedding
برای جستوجوی معنایی، متن باید به بردار تبدیل شود. به همین دلیل، باید یک مدل Embedding سازگار انتخاب کنید.
این مدل ممکن است از یک ارائهدهنده خارجی یا یک سرویس خودمیزبان تأمین شود.
در n8n، Node مربوط به Embeddings را به بخش مورد نیاز در Workflow متصل کنید.
هنگام انتخاب مدل به این نکات توجه داشته باشید:
- مدل باید از نظر کیفیت برای زبان و محتوای شما مناسب باشد.
- ابعاد بردار خروجی باید با تنظیمات Collection سازگار باشد.
- اگر Collection با مدل دیگری ساخته شده است، نمیتوانید بدون بررسی سازگاری، مدل جدیدی با ابعاد متفاوت را جایگزین کنید.
- هزینه تولید Embedding و محدودیت درخواستهای سرویس را بررسی کنید.
- اگر اسناد فارسی هستند، کیفیت مدل را با نمونههای واقعی فارسی آزمایش کنید.
مرحله پنجم: آمادهسازی متن برای ذخیرهسازی
پیش از ذخیره اطلاعات در Vector Database، باید متن اسناد را آماده کنید.
برای مثال، فرض کنید یک فایل آموزشی با محتوای زیر دارید:
«کاربران میتوانند از بخش تنظیمات حساب کاربری، رمز عبور خود را تغییر دهند. برای تغییر رمز، ابتدا باید وارد حساب کاربری شوند.»
این متن را میتوان بهعنوان یک سند وارد فرایند پردازش کرد.
اگر اسناد طولانی هستند، از یک روش مناسب برای تقسیم متن به Chunkهای کوچکتر استفاده کنید.
همچنین بهتر است Metadata مرتبط با سند را نگه دارید؛ برای مثال:
source: نام یا شناسه سندcategory: دستهبندی محتواpage: شماره صفحه، در صورت وجودdocument_version: نسخه سند
این اطلاعات برای فیلتر کردن نتایج، مدیریت تغییرات و بررسی منبع پاسخ مفید هستند.
مرحله ششم: ذخیره اطلاعات در Qdrant
اکنون میتوانید Node مربوط به Qdrant Vector Store یا روش سازگار دیگر را برای ذخیره اطلاعات انتخاب کنید.
در ساختار ذخیرهسازی معمولاً این مراحل انجام میشوند:
- دریافت سند و متن آن
- تقسیم متن به بخشهای مناسب
- تولید Embedding برای هر بخش
- ذخیره بردارها و محتوای مرتبط در Vector Store
- نگهداری Metadata لازم برای بازیابی و مدیریت سند
اگر از یک Node اختصاصی برای عملیات ذخیرهسازی استفاده میکنید، حالت یا Operation مربوط به افزودن اسناد را انتخاب کنید.
اگر از قابلیتهای AI و Vector Store در n8n استفاده میکنید، اتصال Document Loader، Text Splitter، Embeddings و Vector Store را بر اساس ساختار Nodeهای در دسترس انجام دهید.
نام دقیق عملیات و شکل اتصالها ممکن است در نسخههای مختلف متفاوت باشد.
پس از اجرا، بررسی کنید که اطلاعات مورد انتظار در Collection ذخیره شده باشند.
مرحله هفتم: جستوجو در اطلاعات ذخیرهشده
پس از ذخیره اسناد، باید بتوانید از طریق یک سؤال، بخشهای مرتبط را بازیابی کنید.
برای نمونه، اگر متن بالا در Collection ذخیره شده باشد، سؤال زیر را آزمایش کنید:
«از کجا میتوانم رمز عبورم را عوض کنم؟»
در یک جستوجوی معنایی مناسب، سیستم باید بتواند بخش مربوط به تنظیمات حساب کاربری را پیدا کند؛ حتی اگر عبارت سؤال با متن سند یکسان نباشد.
برای این کار، از عملیات جستوجو یا Retriever سازگار با Vector Store استفاده کنید.
در تنظیمات جستوجو به این موارد توجه داشته باشید:
- تعداد نتایج بازگرداندهشده
- میزان شباهت مورد قبول، در صورت پشتیبانی
- فیلترهای Metadata
- Collection مورد استفاده
- مدل Embedding مربوط به سؤال
اگر نتیجهای پیدا نمیشود، ابتدا بررسی کنید که سند واقعاً ذخیره شده باشد و مدل Embedding در مرحله جستوجو با مدل مورد استفاده در مرحله ذخیرهسازی سازگار باشد.
مرحله هشتم: استفاده از Vector Database در سیستم RAG
پس از آماده شدن ذخیرهسازی و بازیابی، میتوانید Vector Store را در یک سیستم RAG استفاده کنید.
ساختار کلی چنین است:
سؤال کاربر → بازیابی اسناد مرتبط → ارسال متن و سؤال به مدل زبانی → پاسخ نهایی
در این معماری، Vector Database وظیفه ذخیره و بازیابی اطلاعات را دارد و مدل زبانی بر اساس سؤال و محتوای بازیابیشده پاسخ تولید میکند.
اگر قصد دارید این ساختار را با AI Agent ترکیب کنید، میتوانید ابزار یا Retriever مناسب را در اختیار ایجنت قرار دهید؛ البته نحوه اتصال دقیق به نوع Agent و Nodeهای مورد استفاده بستگی دارد.
برای آشنایی با طراحی کامل این سیستم، مقاله «آموزش RAG در n8n؛ ساخت سیستم پرسشوپاسخ از روی فایلها» را نیز مطالعه کنید.
چگونه اطلاعات Vector Database را بهروزرسانی کنیم؟
فرض کنید یک سند را تغییر دادهاید و میخواهید نسخه جدید آن در پاسخهای هوش مصنوعی استفاده شود.
صرفاً اضافه کردن متن جدید کافی نیست؛ زیرا ممکن است اطلاعات قدیمی همچنان در پایگاه داده باقی مانده باشند و هنگام جستوجو بازیابی شوند.
برای مدیریت صحیح اسناد، یک فرایند مشخص طراحی کنید:
- به هر سند یک شناسه پایدار اختصاص دهید.
- هنگام ورود سند جدید، شناسه و نسخه آن را ثبت کنید.
- اگر سند تغییر کرد، Chunkهای قبلی مربوط به آن را شناسایی کنید.
- اطلاعات قدیمی را حذف یا جایگزین کنید.
- متن جدید را پردازش و Embeddingهای آن را ذخیره کنید.
- چند سؤال مرتبط را دوباره آزمایش کنید.
روش دقیق به قابلیتهای Vector Database و طراحی Workflow بستگی دارد.
اگر چند سند از یک منبع یا یک کاربر نگهداری میکنید، Metadata و شناسههای مناسب کمک میکنند اطلاعات اشتباه حذف نشوند.
خطاهای رایج هنگام اتصال Vector Database به n8n
خطای اتصال به Qdrant
آدرس، پورت، API Key و وضعیت سرویس را بررسی کنید. اگر سرویس در Docker اجرا میشود، مطمئن شوید n8n از شبکه و آدرس صحیح برای دسترسی به Qdrant استفاده میکند.
ناسازگاری ابعاد Embedding
اگر ابعاد بردار مدل با تنظیمات Collection مطابقت نداشته باشد، ممکن است عملیات ذخیره یا جستوجو با خطا مواجه شود.
در این شرایط، مدل و تنظیمات Collection را بررسی کنید. تغییر مدل Embedding ممکن است به ایجاد Collection جدید و بازتولید بردارها نیاز داشته باشد.
بازیابی اطلاعات نامرتبط
اگر نتایج جستوجو به سؤال ارتباطی ندارند، کیفیت متن ورودی، روش تقسیم متن، مدل Embedding، تعداد نتایج و فیلترهای جستوجو را بررسی کنید.
همچنین برای زبان فارسی، عملکرد مدل را با سؤالهای واقعی کاربران ارزیابی کنید.
تکراری شدن اسناد
اگر Workflow با هر اجرا تمام اسناد را دوباره اضافه کند، ممکن است دادههای تکراری در پایگاه داده ایجاد شوند.
شناسهگذاری اسناد، مدیریت نسخهها و طراحی فرایند بهروزرسانی میتواند این مشکل را کاهش دهد.
افزایش هزینه پردازش
تولید Embedding برای حجم زیادی از متن ممکن است هزینهبر باشد. برای کاهش هزینه، فقط اسناد جدید یا تغییرکرده را پردازش کنید و از اجرای دوباره مراحل غیرضروری جلوگیری کنید.
افشای اطلاعات محرمانه
اگر Vector Database شامل اطلاعات کاربران یا اسناد داخلی است، دسترسی به آن را محدود کنید. در پروژههای چندکاربره، جستوجو باید بر اساس مجوزهای کاربر انجام شود تا اطلاعات یک مشتری به مشتری دیگر نمایش داده نشود.
سؤالات متداول درباره اتصال n8n به Vector Database
آیا میتوان n8n را به Qdrant متصل کرد؟
بله. میتوان از Nodeهای سازگار با Qdrant و قابلیتهای Vector Store در n8n استفاده کرد. روش دقیق اتصال به نسخه نصبشده، نوع استقرار و تنظیمات سرویس بستگی دارد.
آیا برای Vector Database حتماً به Embedding نیاز داریم؟
برای جستوجوی مبتنی بر شباهت برداری، معمولاً به بردارهای تولیدشده توسط یک مدل Embedding نیاز دارید. اما همه انواع جستوجو به Vector Database وابسته نیستند؛ جستوجوی متنی و روشهای ترکیبی نیز کاربرد دارند.
آیا میتوان از PostgreSQL بهعنوان Vector Database استفاده کرد؟
بله، در صورت استفاده از افزونهای مانند pgvector و پیکربندی مناسب، PostgreSQL میتواند قابلیت ذخیره و جستوجوی برداری را فراهم کند.
آیا Vector Database بهتنهایی پاسخ هوش مصنوعی تولید میکند؟
معمولاً خیر. Vector Database اطلاعات مرتبط را ذخیره و بازیابی میکند. برای تولید پاسخ متنی در یک سیستم RAG، معمولاً خروجی بازیابیشده به یک مدل زبانی داده میشود.
آیا اطلاعات Vector Database باید دائماً بهروزرسانی شوند؟
اگر اسناد شما تغییر میکنند، باید فرایندی برای بهروزرسانی اطلاعات داشته باشید. زمان و روش بهروزرسانی به نوع محتوا و نیاز پروژه بستگی دارد. برای اسناد ثابت، پردازش مجدد در هر درخواست لازم نیست.
جمعبندی
Vector Database یکی از اجزای مهم بسیاری از سیستمهای هوش مصنوعی مبتنی بر بازیابی اطلاعات است. با اتصال n8n به یک پایگاه داده برداری میتوانید اطلاعات را ذخیره کنید، بخشهای مرتبط با سؤال کاربران را بازیابی کنید و آنها را در اختیار مدل زبانی یا AI Agent قرار دهید.
در این آموزش، مفاهیم اصلی Vector Database و Embedding را بررسی کردیم و مراحل کلی اتصال n8n به Qdrant، ذخیره اسناد و جستوجوی برداری را توضیح دادیم.
برای شروع، یک مجموعه کوچک از اسناد فارسی را انتخاب کنید، فرایند ذخیرهسازی و بازیابی را آزمایش کنید و سپس قابلیتهایی مانند Metadata، بهروزرسانی اسناد و اتصال به RAG را به پروژه اضافه کنید.





