Vektorové vyhľadávanie v PHP a MariaDB: AI bez cloudu, priamo na hostingu

Umelá inteligencia a moderné vyhľadávanie dnes nie sú len výsadou veľkých cloudových platforiem. Vďaka pokrokom v databázach, ako je MariaDB 11.8, si môžete vybudovať vlastné vektorové vyhľadávanie – priamo na zdieľanom hostingu, bez nutnosti využívať služby ako Pinecone alebo Weaviate.

🧠 Čo je vektorové vyhľadávanie?

Tradičné vyhľadávanie funguje tak, že hľadá presné zhody v texte – napríklad slovo pes nájde len tam, kde sa presne vyskytuje. Vektorové vyhľadávanie však ide ďalej. Porovnáva význam textov, nie len ich slová. Vďaka tomu rozumie, že „pes“ a „zviera“ spolu úzko súvisia, aj keď to nie sú rovnaké slová.

Technicky ide o to, že každý text (napr. veta, odsek alebo dokument) sa prevedie na vektor – pole čísel, ktoré popisuje jeho význam. Tento proces sa nazýva embedding.

⚙️ MariaDB a podpora vektorových indexov

Najnovšie verzie MariaDB (od 11.4 vyššie) prinášajú experimentálnu, ale veľmi užitočnú funkciu – vektorové stĺpce a indexy. To znamená, že môžete ukladať a porovnávať vektory priamo v databáze, bez potreby špeciálnych AI služieb.

Hosting, ako napríklad HostCreators.sk, už bežne poskytuje MariaDB 11.8 – takže túto technológiu si môžete vyskúšať aj v rámci bežného PHP hostingu.

📦 Príklad: vytvorenie tabuľky s vektorovým stĺpcom

CREATE TABLE documents (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255),
  embedding VECTOR(1536),
  VECTOR INDEX (embedding) M=32 DISTANCE=cosine
);

V tomto príklade vytvárame tabuľku, ktorá bude obsahovať názov dokumentu a jeho embedding. Index DISTANCE=cosine určuje, že sa budú porovnávať podobnosti medzi vektormi pomocou kosínovej vzdialenosti – ide o najčastejšie používaný spôsob merania podobnosti.

🧩 Vkladanie dát pomocou VEC_FromText()

MariaDB poskytuje praktickú funkciu VEC_FromText(), ktorá umožňuje previesť textovú reprezentáciu poľa na vektor. Vďaka tomu viete embedding jednoducho uložiť priamo z PHP skriptu.

$pdo = new PDO("mysql:host=localhost;dbname=mojadb", "user", "heslo");
$text = "Ako nasadiť WordPress na server?";
$embedding = "[0.0123, 0.0034, -0.0234, ...]"; // z OpenAI API

$stmt = $pdo->prepare("INSERT INTO documents (title, embedding) VALUES (?, VEC_FromText(?))");
$stmt->execute([$text, $embedding]);

Takto uložíte vektorový embedding priamo do databázy. Embedding môžete získať napríklad z API modelu text-embedding-3-small od OpenAI.

🔍 Vyhľadávanie podľa podobnosti – VEC_DISTANCE_COSINE()

Keď už máte dáta uložené, môžete jednoducho hľadať najpodobnejšie záznamy na základe významu:

$queryEmbedding = "[0.0102, 0.0044, -0.0187, ...]"; // embedding z novej otázky

$sql = "SELECT title,
       VEC_DISTANCE_COSINE(embedding, VEC_FromText(?)) AS distance
FROM documents
ORDER BY distance ASC
LIMIT 5;";

$stmt = $pdo->prepare($sql);
$stmt->execute([$queryEmbedding]);

foreach ($stmt as $row) {
    echo $row['title'] . " (similarity: " . round(1 - $row['distance'], 3) . ")\n";
}

Výsledky s najnižšou hodnotou distance sú najpodobnejšie hľadanému textu. V praxi sa takto dajú implementovať funkcie ako:

  • vyhľadávanie podobných článkov,
  • inteligentné odporúčania produktov,
  • prehľadávanie znalostných báz.

💡 Prečo to celé funguje aj bez cloudu

Vďaka natívnej podpore vektorov v MariaDB nepotrebujete žiadne externé služby. Stačí bežný PHP hosting s novšou verziou MariaDB – žiadne Python servery, žiadne API náklady. Všetko beží priamo v databáze, čo znamená jednoduché nasadenie a nižšie náklady.

🪄 Záver

Ak chcete svojmu webu dodať štipku umelej inteligencie, nemusíte hneď siahať po cloudových riešeniach. Vektorové vyhľadávanie môžete mať aj na klasickom hostingu – priamo v MariaDB a PHP. Moderné hostingy, ako HostCreators.sk, vám k tomu ponúkajú všetko potrebné prostredie.

V ďalšom článku sa pozrieme na to, ako využiť Redis pre vektorové vyhľadávanie priamo v pamäti – pre ešte rýchlejšie odpovede ⚡