بروس مومجیان در حال سخنرانی درباره هوش مصنوعی و پایگاه داده
بروس مومجیان در حال سخنرانی درباره هوش مصنوعی و پایگاه داده

چگونه از یک پایگاه داده «هوش مصنوعی» تولید کنیم: بروس مومجیان

در FOSDEM 2025، بروس مومجیان، کارشناس ارشد PostgreSQL در EDB، مراحل تبدیل داده به هوش مصنوعی را برای حضار تشریح کرد.

دفعه بعدی که از ChatGPT یا سرویس دیگری از هوش مصنوعی مولد (Generative AI) سوالی می‌پرسید، به ترتیب کلمات در پاسخی که دریافت می‌کنید توجه کنید.

چند کلمه آخر در پرسش شما، تقریباً همیشه اولین کلمات پاسخ تولید شده خواهند بود.

بروس مومجیان، معاون EDB و مروج Postgres، در سخنرانی خود در کنفرانس FOSDEM 2025 در بروکسل ماه گذشته، اشاره کرد که این یک فرآیند مهم در نحوه کار مدل‌های زبان بزرگ (LLMها) است — به صورت معکوس، هر کلمه را بر اساس کلمه قبلی‌اش ارزیابی می‌کند.

مومجیان با استفاده از فناوری پایگاه داده به عنوان نقطه شروع، حضار را با چگونگی تبدیل داده به هوش مصنوعی آشنا کرد و توضیح داد که چرا هنوز نباید دستکاری داده‌ها را با هوش واقعی انسان اشتباه بگیریم.

از توصیفی به مولد

قبل از سال ۲۰۲۲، آنچه ما به عنوان «هوش مصنوعی» می‌شناختیم عمدتاً وظایف تمایز و شفاف‌سازی بود، جایی که هوش مصنوعی به سوالاتی مانند «سگ یا گربه؟» یا اینکه آیا تراکنش کارت اعتباری واقعی است یا نه، پاسخ می‌داد. این فناوری برای پیش‌بینی‌ها، طبقه‌بندی‌ها و توصیه‌ها عالی بود.

«هوش مصنوعی» جدید، که با موفقیت فوری ChatGPT آشکار شد، مربوط به تولید محتوایی است که قبلاً وجود نداشته است: خلاصه‌سازی، ربات‌های گفتگو، جستجوی معنایی، و ایجاد تصاویر، برنامه‌نویسی، صداها و ویدیو.

به جای جستجوی مرزها، همانطور که هوش مصنوعی پیش‌بینی‌کننده قبلی انجام می‌داد، هوش مصنوعی مولد به طور موثر محتوای جدیدی را تولید می‌کند.

مومجیان گفت: «ما در غرب وحشی هستیم. واقعاً نمی‌دانیم چه کارهایی می‌توانیم انجام دهیم.»

جهانی عظیم از بردارها

کلید این رویکرد با پردازش برداری (vector processing) آغاز می‌شود. گوگل این تکنیک را در مقاله‌ای در سال ۲۰۱۸ با عنوان «تخمین کارآمد نمایش کلمات در فضای برداری» پیشگام کرد و مدلی به نام word2vec ارائه داد.

بردار یک شیء ریاضی با دو عدد است: اندازه (طول) و جهت.

هر کلمه در داده‌های آموزشی دارای یک بردار نسبت به هر کلمه دیگر است که یک فضای برداری با ابعاد بسیار بالا را تشکیل می‌دهد. (برای سادگی، مومجیان بر روی هوش مصنوعی مولد مبتنی بر متن تمرکز کرد، اگرچه تولید تصاویر و سایر اشکال محتوا بر اساس اصول مشابهی عمل می‌کنند).

اسلایدی که یک بردار مولد را نشان می‌دهد
اسلاید: بروس مومجیان

این جهان کلمات واقعاً بسیار بزرگ است.

مومجیان گفت: «ما با مقیاسی سروکار داریم که از هر چیزی که در دنیای فیزیکی می‌توانیم درک کنیم، بسیار فراتر است.»

یک مدل زبان بزرگ (LLM) ChatGPT می‌تواند تا ۱۲٬۲۸۸ بُعد داشته باشد که در مجموع به بیش از ۱۰ به توان ۱۸۸٬۰۰۰ بُعد می‌رسد، که به گفته مومجیان، بسیار بیشتر از تعداد کل اتم‌های موجود در جهان است.

بردار هر کلمه طول یکسانی دارد. همچنین به آن یک جهت اختصاص داده می‌شود، یک عدد اعشاری شناور به صورت تصادفی که در جایی در این جهان ۱۰ به توان ۱۸۸٬۰۰۰ بُعدی وجود دارد.

روز آموزش

گام بعدی، تزریق حجم عظیمی از اسناد آموزشی به این فضا است.

برای هر کلمه، بردار آن طوری تنظیم می‌شود که به کلمات اطرافش نزدیک‌تر شود و بردارهای کلمات اطرافش نیز به کلمه اصلی نزدیک‌تر شوند.

در این مجموعه معروف از داده‌های آموزشی:

پادشاه مردی قدبلند است.

ملکه زنی زیبا است.

آنها با هم در اتاق تخت پادشاهی قصر می‌نشینند.

بردار «پادشاه» به سمت «مرد»، «ملکه» به سمت «زن» و «تخت پادشاهی» به سمت «قصر» خم می‌شود و این روند در هزاران بُعد تکرار می‌شود.

در تکرارهای متوالی، کلماتی مانند «مرد» و «زن» به یکدیگر نزدیک‌تر می‌شوند، همانطور که «پادشاه» و «ملکه» نیز چنین خواهند شد.

همچنین توجه داشته باشید که «مرد» و «زن» فاصله‌ای مشابه با «پادشاه» و «ملکه» خواهند داشت، که به LLM امکان می‌دهد تا با انجام برخی محاسبات ریاضی پایه، روابط بین کلمات را بهتر درک کند.

و از آنجا که ابعاد بسیار زیادی وجود دارد، نزدیک کردن یک کلمه به کلمه دیگر در یک بُعد لزوماً به معنای دورتر شدن این کلمات از کلمات دیگر نیست.

مومجیان گفت: «وقتی "مرد" را به "زن" نزدیک‌تر می‌کنیم، لزوماً آن را از "پادشاه" دورتر نمی‌کنیم، زیرا نزدیکی "پادشاه" به "مرد" احتمالاً در بُعدی متفاوت از نزدیکی "مرد" به "زن" قرار دارد.»

از داده به هوش

پایگاه‌های داده رابطه‌ای جستجوی تمام‌متن را ارائه می‌دهند اما معنای کلمات را جستجو نمی‌کنند. این قدرت جستجوی معنایی (semantic search) مبتنی بر بردار است.

معمولاً در فرآیند آموزش LLM، بلوک‌های متن را می‌توان به قطعات کوتاه‌تر «تقسیم‌بندی» (chunked) کرد. آنها می‌توانند به جملات، پاراگراف‌ها تقسیم شوند، یا کل قطعه می‌تواند یک تکه واحد باشد.

جستجوی معنایی میانگین تمام امتیازات برداری را در هر تکه محاسبه می‌کند.

سپس هوش مصنوعی مولد، میانگین بردارهای موجود در خود پرسش را محاسبه کرده و جمله یا تکه متنی را که نزدیک‌ترین امتیاز را دارد، پیدا می‌کند.

بنابراین، پرسش «پادشاه کیست؟» (Who is the King?) به طور میانگین به عبارت «پادشاه مردی قدبلند است» (The king is a tall man) نزدیک‌تر خواهد بود، به این معنی که میانگین بردار این عبارت به میانگین بردار پرسش نزدیک‌تر است.

مومجیان مقداری کد SQL را برای اجرای این نمونه نشان داد که با استفاده از PGVector، افزونه برداری برای PostgreSQL، قابل اجرا است. او جدولی برای نگهداری محتوا و جدولی برای جاسازی‌های (embeddings) آنها ایجاد کرد. یک اسکریپت پایتون که مومجیان ایجاد کرده است، OpenAI را فراخوانی می‌کند، هر کلمه را ارسال می‌کند و یک جاسازی دریافت می‌کند. بردارها میانگین‌گیری شده و در پایگاه داده نیز ذخیره می‌شوند.

سپس پرسش «پادشاه کیست؟» از طریق یک فراخوانی API به OpenAI ارسال می‌شود تا اعداد جاسازی آن نیز محاسبه گردد. این نیز میانگین‌گیری شده و سپس با تمام میانگین‌های موجود در پایگاه داده مقایسه می‌شود که از بیشترین شباهت به کمترین رتبه‌بندی شده‌اند:

مقایسه امتیازات برداری برای یافتن نزدیک‌ترین تطابق
مقایسه امتیازات برداری برای یافتن نزدیک‌ترین تطابق

مومجیان گفت: «این با جستجوی تمام‌متن متفاوت است زیرا درکی از نحوه ارتباط کلمات با یکدیگر دارد.»

هوش مصنوعی مولد

مومجیان توضیح داد که پردازش برداری تنها اولین بلوک هوش مصنوعی مولد است. برای تولید جملات کامل، به ترانسفورمرهای حالت (state transformers) نیز نیاز دارید، نوعی شبکه عصبی برای پردازش زبان طبیعی (natural language processing).

یک بلوک توجه (attention block)، که آن هم توسط گوگل در سال ۲۰۱۷ پیشگام شد، یک نسخه وزن‌دار از متن ورودی است. هر پرسش یک بلوک توجه جدید دریافت می‌کند. هر کلمه جستجو شده و یک عدد ۱۲۸ بعدی از LLM به آن اختصاص داده می‌شود. هر کلمه در متن ورودی وزن‌دهی می‌شود تا به کلمات دیگر، کلمه به کلمه، نزدیک‌تر شود.

اسلایدی درباره بلوک‌های توجه در هوش مصنوعی
بلوک توجه (Attention Block) در پردازش زبان طبیعی

این فرآیند نزدیک کردن کلمات به یکدیگر در فضای برداری برای چندین تکرار ادامه می‌یابد تا یک جمله کامل تولید شود.

و به همین دلیل است که آخرین عبارت در پاسخ ChatGPT شما اغلب در ابتدای پاسخ ظاهر می‌شود — «پایتخت فرانسه پاریس است» — زیرا آخرین عبارتی است که برداری می‌شود. یک LLM یک جمله را به ترتیب معکوس تفسیر می‌کند:

کلمبوس در اوهایو است. پاریس کجاست؟

...ممکن است این پاسخ را برای شما به ارمغان بیاورد:

پاریس در فرانسه است. همچنین شهری به نام پاریس در ایالات متحده وجود دارد که در تگزاس واقع شده است. اگر به پاریس دیگری اشاره داشتید، لطفاً مشخص کنید!

پاسخ‌ها همچنین می‌توانند از طریق تولید افزوده با بازیابی (retrieval augmented generation - RAG) بیشتر اصلاح شوند، که دستورالعمل‌های اضافی به LLM می‌دهد، مانند کوتاه نگه داشتن پاسخ. در این حالت، سوالی در مورد موقعیت مکانی پاریس، پاسخ ساده‌ای خواهد بود که پاریس در فرانسه است.

همچنین می‌توانید از RAG برای بازگرداندن پاسخ به سوالات تحلیل داده استفاده کنید. به عنوان مثال، مومجیان نشان داد که چگونه می‌توانید سه دستور درج پایگاه داده SQL را در پیشوند RAG وارد کنید و RAG داده‌هایی را که هر دستور در آن commit شده است، برمی‌گرداند، زیرا LLM زبان SQL را «می‌داند».

در پایان، مومجیان نتیجه گرفت که گرچه سرعت تکامل هوش مصنوعی واقعاً سرسام‌آور است، با این وجود LLMها شکلی پیچیده از دستکاری داده‌ها هستند و دارای هیچ نوع آگاهی یا هوشیاری واقعی نیستند.

ارائه کامل مومجیان را اینجا مشاهده کنید. اسلایدها اینجا در دسترس هستند.