PG-Jev: فیلتر کردن دیتای Postgres با جملهٔ انگلیسی ساده
خلاصهٔ کاملتر
PG-Jev یه اکستنشن Postgres هست که بهت اجازه میده وسط کوئری SQL یه شرط به انگلیسی ساده بنویسی، مثلاً «is this customer angry or frustrated». به جای regex یا لیست کلمههای کلیدی یا فرستادن دیتا به کد اپلیکیشن، اکستنشن کار معنایی رو میده به یه decision model (یعنی مدل زبانیای که مخصوص تصمیمگیری و دستهبندی ساخته شده). دیتابیس منبع اصلی دیتا میمونه و مدل فقط اون بخشی رو انجام میده که SQL براش ساخته نشده.
تو ویدیوی منبع، یه تابع به اسم jev_probe نشون داده شده که داخل select یا where میاد. یه متن (مثلاً متن تیکت) و یه سؤال طبیعی میگیره و یه امتیاز یا دسته برمیگردونه که میشه باهاش مرتب یا فیلتر کرد. تو دمو، ده تا تیکت پشتیبانی بر اساس «امتیاز عصبانیت» مرتب شدن: اپی که کرش میکرد و یه شارژ مورد اعتراض رفتن بالا، مشتری راضی و درخواست فیچر رفتن پایین.
همین الگو برای مسیریابی به بخشها (billing، technical، shipping، security) و امتیاز فوریت هم کار کرد و همهٔ دستهبندیهای دمو درست بودن. مثلاً فعالیت مشکوک حساب رفت به security و نزدیک critical امتیاز گرفت، ولی درخواست فیچر امتیاز صفر گرفت. هیچ داده آموزشی یا لیست قانونی هم لازم نبود.
نصبش از طریق PGXN انجام میشه (یعنی رجیستری عمومی اکستنشنهای Postgres، چیزی شبیه npm برای Node). دمو روی Ubuntu و Postgres نسخهٔ 14.24 بود و به پشتیبانی Python تو Postgres نیاز داره. بعد از create extension باید API key و اسم مدل رو تو session تنظیم کنی؛ اگه مدل رو ندی، آخرین مدل موجود انتخاب میشه. هر endpoint سازگار با OpenAI هم قبول میکنه، پس میشه به یه مدل لوکال وصلش کرد، هرچند برای مدلهای Jev ساخته شده.
نویسنده صادقانه میگه لازم نیست حتماً همین اکستنشن رو داشته باشی. میشه هر مدل خوبی رو تو یه tool call یا MCP server بپیچی و به هر دیتابیسی (MySQL، SQL Server، Oracle) وصلش کنی. مزیت PG-Jev راحتیه: منطق تو لایهٔ دیتابیس میمونه و دیگه لازم نیست یه میکروسرویس routing یا لایهٔ مدیریت prompt بسازی.
هزینهش همونیه که هر سیستم LLM-محوری داره: هر ردیف یه فراخوانی مدله، پس تأخیر و هزینه با اندازهٔ کوئری بالا میره و کیفیت هم کاملاً به مدل بستگی داره. به گفتهٔ نویسنده برای جدولهای کوچیک و متوسط مثل صف تیکتها منطقیه، ولی برای اسکن میلیونها ردیف تو هر کوئری حسابش فرق میکنه.
نکات کلیدی:
- تابع jev_probe داخل select یا where یه متن و یه سؤال انگلیسی میگیره و امتیاز برمیگردونه.
- نصب از طریق کلاینت PGXN انجام میشه و به پشتیبانی Python تو Postgres نیاز داره.
- اگه اسم مدل تنظیم نشه، اکستنشن آخرین مدل موجود رو استفاده میکنه.
- هر endpoint سازگار با OpenAI قبوله، پس مدل لوکال هم میشه وصل کرد.
- هر ردیف یه فراخوانی مدله، پس برای میلیونها ردیف گرون و کند میشه.




