Laravel Vector Search હવે MariaDB ને સપોર્ટ કરે છે

Laravel 13 ડેવલપર્સને MariaDB સામે નેટિવ વેક્ટર-સર્ચ ક્વેરીઝ ચલાવવાની મંજૂરી આપે છે, જે PostgreSQL પર સ્વિચ કરવા માટે દબાણ કર્યા વિના Laravel ઇકોસિસ્ટમમાં સેમેન્ટિક-સર્ચ ક્ષમતાઓ ઉમેરે છે.

આ નવો સપોર્ટ ફ્રેમવર્કની અગાઉની PostgreSQL-માત્ર અમલીકરણ (implementation) ને બદલે આવે છે, તેથી હવે પરિચિત whereVectorSimilarTo મેથડ સીધી MariaDB કનેક્શન સાથે કામ કરે છે. જો તમે રેકમેન્ડેશન એન્જિન, ડોક્યુમેન્ટ-સિમિલારિટી ટૂલ્સ અથવા "nearest-neighbor" લોજિક પર આધારિત કોઈપણ ફીચર બનાવી રહ્યા હોવ, તો આ ફેરફાર એક મુખ્ય અવરોધ દૂર કરે છે.

આ ફેરફાર શા માટે મહત્વનો છે

Laravel નું ક્વેરી બિલ્ડર અગાઉ instanceof ટેસ્ટ દ્વારા વેક્ટર-સર્ચની જરૂરિયાતો શોધી કાઢતું હતું જે ફક્ત PostgreSQL કનેક્શનને જ ઓળખી શકતું હતું. તે અભિગમ આ ફીચરને સિંગલ ડ્રાઇવર સાથે બાંધી દેતો હતો અને કોડબેઝમાં ડેટાબેઝ-વિશિષ્ટ કન્ડિશનલ્સ (conditionals) ભરી દેતો હતો.

13 રિલીઝ આ લોજિકને ગ્રામર લેયરમાં ખસેડે છે અને બે ડ્રાઇવર-વિશિષ્ટ મેથડ્સ ઉમેરે છે:

  • supportsVectorDistance() – Laravel ને જણાવે છે કે વર્તમાન કનેક્શન વેક્ટર અંતરની ગણતરી કરી શકે છે કે નહીં.
  • compileVectorDistanceExpression() – એ SQL ફ્રેગમેન્ટ બનાવે છે જે ગણતરી કરે છે.

દરેક ડ્રાઇવરને આ જવાબદારીઓ સોંપવાથી, ફ્રેમવર્ક "type-checking" હેક દૂર કરે છે અને ભવિષ્યના વિસ્તરણો (extensions) માટે માર્ગ મોકળો કરે છે. હવે અન્ય ડેટાબેઝ માટે સપોર્ટ ઉમેરવાનો અર્થ કન્ડિશનલ બ્લોક્સ ફેલાવવાને બદલે ડ્રાઇવરની કેટલીક મેથડ્સ અમલમાં મૂકવાનો છે.

MariaDB ને નેટિવ ફંક્શન્સ મળે છે, MySQL ને નહીં

MariaDB નેટિવ વેક્ટર ફંક્શન્સ સાથે આવે છે. સ્ટાન્ડર્ડ MySQL માં તેની ઉણપ છે, સિવાય કે તમે કોઈ ખાસ ક્લાઉડ ઓફરિંગનો ઉપયોગ કરો જે AI એક્સટેન્શન ઉમેરે છે.

Laravel જાણીજોઈને PHP-સાઇડ પર સિમિલારિટી કેલ્ક્યુલેશન ટાળે છે. PHP માં વેક્ટર્સની ગણતરી કરવાથી પેજીનેશન તૂટી શકે છે અને એપને ચેતવણી આપ્યા વિના ધીમી કરી શકે છે. જ્યારે ડ્રાઇવર ઓપરેશન હેન્ડલ ન કરી શકે ત્યારે એરર (error) આપવી એ વધુ સુરક્ષિત ફેલ્યોર મોડ પૂરો પાડે છે.

MySQL યુઝર્સ હવે શું કરી શકે છે

જો તમારું સ્ટેક સાદું MySQL ચલાવે છે, તો તમારી પાસે ત્રણ વાસ્તવિક રસ્તાઓ છે:

  1. MariaDB પર માઇગ્રેટ કરો – મોટાભાગના MySQL વર્કલોડ માટે આ એક ડ્રોપ-ઇન રિપ્લેસમેન્ટ છે જે તમને સમાન ઇકોસિસ્ટમ જાળવી રાખીને નેટિવ વેક્ટર સપોર્ટ આપે છે.
  2. એક ડેડિકેટેડ સર્ચ સર્વિસ ઉમેરો – માત્ર સિમિલારિટી ક્વેરીઝ માટે MySQL ની સાથે એક લાઇટવેઇટ PostgreSQL ઇન્સ્ટન્સ ચલાવો.
  3. તે વગર રહો – ઘણા એપ્લિકેશન્સ માટે સેમેન્ટિક સર્ચ વૈકલ્પિક છે; જો તેનો ફાયદો ઓપરેશનલ ખર્ચ કરતા વધુ ન હોય, તો MySQL પર રહેવું એ વ્યવહારુ પસંદગી હોઈ શકે છે.

દરેક વિકલ્પ ઓપરેશનલ જટિલતા, લેટન્સી (latency) અને મેન્ટેનન્સ ઓવરહેડમાં સમજૂતી (trade-offs) લાવે છે. નિર્ણય એ વાત પર નિર્ભર છે કે તમારા પ્રોડક્ટના વેલ્યુ પ્રપોઝિશન માટે વેક્ટર સર્ચ કેટલું કેન્દ્રીય છે.

API ડિઝાઇન માટેના પાઠ

Laravel નો ફેરફાર એક વ્યાપક ડિઝાઇન સિદ્ધાંત દર્શાવે છે: કોર લોજિકમાં ડેટાબેઝ-વિશિષ્ટ ચેક્સ ફેલાવવાનું ટાળો. જ્યારે કોઈ ફીચર ચોક્કસ એન્જિનની ક્ષમતાઓ પર આધારિત હોય, ત્યારે તે નિર્ભરતાને ડ્રાઇવર ઇન્ટરફેસ પાછળ કેપ્સ્યુલેટ (encapsulate) કરો. નવો ગ્રામર-આધારિત અભિગમ બરાબર તે જ કરે છે, જે કોર ક્વેરી બિલ્ડરને ફરીથી જોયા વિના ફ્રેમવર્કને ભવિષ્યના વિસ્તરણો માટે તૈયાર કરે છે.

પોતાના પેકેજ બનાવતા ડેવલપર્સે આ નોંધ લેવી જોઈએ. જો તમને તમારા સર્વિસ લેયરની અંદર ડેટાબેઝ પ્રકાર માટે instanceof ચેક્સ મળે છે, તો તે જવાબદારી ડ્રાઇવર અથવા ડેડિકેટેડ એડેપ્ટરને સોંપો. તે પબ્લિક API ને સ્વચ્છ રાખે છે અને તમારા કોડને ફ્યુચર-પ્રૂફ બનાવે છે.