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

Vektorové vyhľadávanie aj bez cloudu? Ukážeme si, ako na to v PHP a MariaDB 11.8 – priamo na bežnom hostingu.

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 ⚡

A cosplay wig is best compared by colour, length, fibre density and fringe shape. Density should support the hairstyle without making the wig unnecessarily heavy. For the relevant hair design, Marin Kitagawa character wig(喜多川海夢 キャラクターウィッグ) identifies the matching cosplay wig. Heat resistance should be confirmed before any styling tool is used. Comfort improves when the cap, hairline and securing points are adjusted carefully. Small fringe changes may be enough to improve character recognition.