Laravel Vector Search अब MariaDB को सपोर्ट करता है

Laravel 13 डेवलपर्स को MariaDB पर नेटिव वेक्टर-सर्च क्वेरीज़ चलाने की सुविधा देता है, जिससे PostgreSQL पर स्विच किए बिना Laravel इकोसिस्टम में सिमेंटिक-सर्च (semantic-search) क्षमताएं जुड़ जाती हैं।

यह नया सपोर्ट फ्रेमवर्क के पिछले PostgreSQL-ओनली इम्प्लीमेंटेशन की जगह लेता है, इसलिए अब परिचित whereVectorSimilarTo मेथड सीधे MariaDB कनेक्शन के साथ काम करता है। यदि आप रिकमेंडेशन इंजन, डॉक्यूमेंट-सिमिलैरिटी टूल्स, या ऐसी कोई भी सुविधा बना रहे हैं जो "nearest-neighbor" लॉजिक पर निर्भर करती है, तो यह बदलाव एक बड़ी बाधा को दूर करता है।

यह बदलाव क्यों महत्वपूर्ण है

Laravel का क्वेरी बिल्डर पहले instanceof टेस्ट के ज़रिए वेक्टर-सर्च की ज़रूरतों का पता लगाता था, जो केवल PostgreSQL कनेक्शन को ही पहचानता था। उस दृष्टिकोण ने इस फीचर को केवल एक ही ड्राइवर तक सीमित कर दिया था और कोडबेस में डेटाबेस-विशिष्ट कंडीशन्स (conditionals) की भरमार कर दी थी।

13 रिलीज़ इस लॉजिक को ग्रामर लेयर (grammar layer) में ले जाती है और दो ड्राइवर-विशिष्ट मेथड जोड़ती है:

  • supportsVectorDistance() – Laravel को बताता है कि क्या वर्तमान कनेक्शन वेक्टर दूरियों (vector distances) की गणना कर सकता है।
  • compileVectorDistanceExpression() – उस SQL फ्रैगमेंट को बनाता है जो गणना करता है।

इन ज़िम्मेदारियों को प्रत्येक ड्राइवर को सौंपकर, फ्रेमवर्क "type-checking" हैक को हटा देता है और भविष्य के विस्तार (extensions) के लिए रास्ता साफ करता है। अब किसी अन्य डेटाबेस के लिए सपोर्ट जोड़ने का मतलब कंडीशनल ब्लॉक्स को बिखेरने के बजाय कुछ ड्राइवर मेथड्स को लागू करना है।

MariaDB को नेटिव फंक्शन्स मिलते हैं, MySQL को नहीं

MariaDB नेटिव वेक्टर फंक्शन्स के साथ आता है। स्टैंडर्ड MySQL में इनकी कमी है, जब तक कि आप किसी विशेष क्लाउड सर्विस का उपयोग न करें जो AI एक्सटेंशन जोड़ती हो।

Laravel जानबूझकर PHP-साइड सिमिलैरिटी कैलकुलेशन से बचता है। PHP में वेक्टर की गणना करने से पेजिनेशन (pagination) टूट सकता है और ऐप बिना किसी चेतावनी के धीमा हो सकता है। जब ड्राइवर ऑपरेशन को हैंडल नहीं कर पाता, तो एरर देना एक सुरक्षित फेलियर मोड (failure mode) प्रदान करता है।

MySQL यूज़र्स अब क्या कर सकते हैं

यदि आपका स्टैक सादे MySQL पर चलता है, तो आपके पास तीन व्यावहारिक रास्ते हैं:

  1. MariaDB पर माइग्रेट करें – अधिकांश MySQL वर्कलोड के लिए यह एक ड्रॉप-इन रिप्लेसमेंट है जो आपको उसी इकोसिस्टम को बनाए रखते हुए नेटिव वेक्टर सपोर्ट देता है।
  2. एक समर्पित सर्च सर्विस जोड़ें – केवल सिमिलैरिटी क्वेरीज़ के लिए MySQL के साथ एक हल्का PostgreSQL इंस्टेंस चलाएं।
  3. इसके बिना काम चलाएं – कई एप्लिकेशन्स के लिए सिमेंटिक सर्च वैकल्पिक है; यदि इसका लाभ ऑपरेशनल लागत से अधिक नहीं है, तो MySQL पर बने रहना एक व्यावहारिक विकल्प हो सकता है।

प्रत्येक विकल्प के साथ ऑपरेशनल जटिलता, लेटेंसी और मेंटेनेंस ओवरहेड के ट्रेड-ऑफ जुड़े होते हैं। निर्णय इस बात पर निर्भर करता है कि आपके प्रोडक्ट के वैल्यू प्रपोज़िशन (value proposition) के लिए वेक्टर सर्च कितना महत्वपूर्ण है।

API डिज़ाइन के लिए सबक

Laravel का यह बदलाव एक व्यापक डिज़ाइन सिद्धांत को दर्शाता है: कोर लॉजिक में डेटाबेस-विशिष्ट चेक्स को बिखेरने से बचें। जब कोई फीचर किसी विशेष इंजन की क्षमताओं पर निर्भर करता है, तो उस डिपेंडेंसी को ड्राइवर इंटरफ़ेस के पीछे एनकैप्सुलेट (encapsulate) कर दें। नया ग्रामर-आधारित दृष्टिकोण बिल्कुल यही करता है, जो कोर क्वेरी बिल्डर को दोबारा छुए बिना फ्रेमवर्क को भविष्य के विस्तार के लिए तैयार करता है।

अपने स्वयं के पैकेज बनाने वाले डेवलपर्स को इस पर ध्यान देना चाहिए। यदि आप अपने सर्विस लेयर के अंदर किसी डेटाबेस टाइप के लिए instanceof चेक पाते हैं, तो उस ज़िम्मेदारी को ड्राइवर या एक समर्पित एडॉप्टर (adapter) को सौंप दें। यह पब्लिक API को साफ रखता है और आपके कोड को फ्यूचर-प्रूफ बनाता है।