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.
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 ⚡