Carian Vektor Laravel Kini Menyokong MariaDB

Laravel 13 membolehkan pembangun menjalankan pertanyaan carian vektor asli terhadap MariaDB, menambah keupayaan carian semantik kepada ekosistem Laravel tanpa memaksa peralihan ke PostgreSQL.

Sokongan baharu ini menggantikan pelaksanaan khusus PostgreSQL sebelum ini, jadi kaedah whereVectorSimilarTo yang biasa digunakan kini berfungsi secara terus dengan sambungan MariaDB. Jika anda sedang membina enjin cadangan, alat persamaan dokumen, atau sebarang ciri yang bergantung pada logik “nearest-neighbor”, perubahan ini menghapuskan titik geseran utama.

Mengapa peralihan ini penting

Pembina pertanyaan (query builder) Laravel sebelum ini mengesan keperluan carian vektor dengan ujian instanceof yang hanya mengenali sambungan PostgreSQL. Pendekatan tersebut mengikat ciri ini kepada pemacu (driver) tunggal dan memenuhi kod sumber dengan syarat (conditionals) khusus pangkalan data.

Versi 13 memindahkan logik tersebut ke dalam lapisan tatabahasa (grammar layer) dan menambah dua kaedah khusus pemacu:

  • supportsVectorDistance() – memberitahu Laravel sama ada sambungan semasa boleh mengira jarak vektor.
  • compileVectorDistanceExpression() – membina fragmen SQL yang melakukan pengiraan tersebut.

Dengan menyerahkan tanggungjawab ini kepada setiap pemacu, rangka kerja ini meninggalkan "hack" semakan jenis (type-checking) dan membuka jalan untuk pengembangan masa hadapan. Menambah sokongan untuk pangkalan data lain kini bermakna hanya perlu melaksanakan beberapa kaedah pemacu dan bukannya menyebarkan blok syarat di merata tempat.

MariaDB mendapat fungsi asli, MySQL tidak

MariaDB disertakan dengan fungsi vektor asli. MySQL standard tidak memilikinya melainkan anda menggunakan tawaran awan khusus yang menambah sambungan AI.

Laravel sengaja mengelakkan pengiraan persamaan di bahagian PHP. Mengira vektor dalam PHP akan merosakkan pembahagian halaman (pagination) dan memperlahankan aplikasi tanpa amaran. Menghasilkan ralat apabila pemacu tidak dapat mengendalikan operasi tersebut menyediakan mod kegagalan yang lebih selamat.

Apa yang pengguna MySQL boleh lakukan sekarang

Jika stack anda menggunakan MySQL biasa, anda mempunyai tiga jalan yang realistik:

  1. Migrasi ke MariaDB – pengganti terus (drop-in replacement) untuk kebanyakan beban kerja MySQL yang memberikan anda sokongan vektor asli sambil mengekalkan ekosistem yang sama.
  2. Tambah perkhidmatan carian khusus – jalankan instans PostgreSQL yang ringan bersama MySQL semata-mata untuk pertanyaan persamaan.
  3. Teruskan tanpa ia – carian semantik adalah pilihan untuk banyak aplikasi; jika manfaatnya tidak melebihi kos operasi, kekal dengan MySQL mungkin merupakan pilihan yang pragmatik.

Setiap pilihan mempunyai pertukaran (trade-offs) dari segi kerumitan operasi, kependaman (latency), dan kos penyelenggaraan. Keputusan bergantung pada sejauh mana carian vektor menjadi teras kepada cadangan nilai (value proposition) produk anda.

Pengajaran untuk reka bentuk API

Perubahan Laravel menggambarkan prinsip reka bentuk yang lebih luas: elakkan menyebarkan semakan khusus pangkalan data di seluruh logik teras. Apabila sesuatu ciri bergantung pada keupayaan enjin tertentu, bungkus (encapsulate) kebergantungan tersebut di sebalik antara muka pemacu (driver interface). Pendekatan berasaskan tatabahasa yang baharu melakukan perkara tersebut, menyediakan rangka kerja untuk pengembangan masa hadapan tanpa perlu menyemak semula pembina pertanyaan teras.

Pembangun yang membina pakej mereka sendiri harus mengambil perhatian. Jika anda menemui semakan instanceof untuk jenis pangkalan data di dalam lapisan perkhidmatan (service layer) anda, pindahkan tanggungjawab tersebut ke pemacu atau penyesuai (adapter) khusus. Ini memastikan API awam kekal bersih dan menjadikan kod anda kalis masa hadapan.