Vissza a bloghoz

ProCat Solutions

Cipő, cipőt, cipőben: így keres jelentés alapján az Abisearch

Az Abisearch vektoros keresési API: embeddingek kulcsszavak helyett, magyar morfológia, JSON és Excel feltöltés, újrarangsorolás, EU adatközpont, ingyenes sáv.

ProCat Solutions abisearchvektoros-keresésembeddingsaasapi
Megosztás
Cipő, cipőt, cipőben: így keres jelentés alapján az Abisearch

Egy kulcsszavas kereső számára a „cipő”, a „cipőt”, a „cipőben” és a „cipőjükkel” négy különböző szó. Több ügyfélszolgálati és tudásbázis-projektünkben ugyanoda futottunk ki: a felhasználó más szavakkal keres, mint amilyenekkel a dokumentum íródott, és a kereső semmit sem talál. Magyarul ez különösen gyakori. Erre a tapasztalatra épül az Abisearch, a saját SaaS vektoros keresési API-nk, amely az abisearch.abigel.ai címen érhető el. Az alábbiakban a műszaki hátteret és a döntéseinket írjuk le.

Iratrendezők egy irodai archívumban

Szóegyezés és jelentés

A hagyományos kulcsszavas keresés (fordított index, BM25 rangsorolás) akkor működik, ha a keresőkifejezés és a dokumentum ugyanazokat a szóalakokat használja. A „kényelmes futócipő” kérdésre nem adja ki a „könnyű edzőcipő kocogáshoz” leírást, pedig a felhasználó pontosan ezt keresi.

A vektoros keresés másképp dolgozik. Egy embedding modell minden szövegrészletet több száz dimenziós számvektorrá alakít, és a hasonló jelentésű szövegek vektorai egymás közelébe kerülnek. A kereső ezután a vektorok távolságát méri, a szavak egyezésével nem foglalkozik. A modell többnyelvű: a magyar kérdés megtalálja az angol dokumentumot, és fordítva.

A kulcsszavas keresésre továbbra is szükség van. Azonosítóknál, cikkszámoknál és pontos kifejezéseknél az egyezés számít. Az Abisearch ezért hibrid: a vektoros találatokat kulcsszavas jelekkel egészíti ki, a végső sorrendet a kettő kombinációja adja.

Toldalékok, ékezetek, összetett szavak

A magyar agglutináló nyelv, egy szótőhöz toldalékok tucatjai kapcsolódhatnak. A szótövezés (stemming) részben segít, de gyakran túl agresszív vagy hibás, az összetett szavak („futócipő”, „edzőcipő”) pedig külön gondot okoznak.

A többnyelvű embedding modellek ebben jóval erősebbek: a tokenizálás szubszó-szinten történik, és a modell a jelentést tanulta meg, a szóalakot kevésbé. Néhány dolgot a gyakorlatban így is kezelnünk kellett:

  • a hosszú magyar mondatok több tokent használnak, mint az angol megfelelőjük, ezért a szövegdarabolás (chunking) méretét nyelvenként állítjuk,
  • az ékezetes és ékezet nélküli írásmód („cipo” és „cipő”) a kulcsszavas ágban normalizálást igényel,
  • az egy-két szavas keresések vektora „zajos”, ezeknél a kulcsszavas ág nagyobb súlyt kap.

Ezeket az ügyfélnek nem kell beállítania. Az API felismeri a nyelvet, és ahhoz igazodik.

Dokumentumokban keresés laptopon, papírokkal az asztalon

Egy táblázat és egy végpont

Az volt a cél, hogy gépi tanulási ismeret nélkül is használni lehessen. Az adatbetöltés két formátumot fogad: JSON-t (rekordok tömbje tetszőleges mezőkkel) és Excel-táblázatot (soronként egy rekord, oszloponként egy mező). Feltöltéskor megadható, mely mezők kerüljenek a keresési szövegbe, és melyek maradjanak szűrhető metaadatként.

A keresés egyetlen REST-végpont. A kérésben a természetes nyelvű keresőkifejezés és opcionális szűrők mennek, a válasz a találatok listája relevancia-pontszámmal és az eredeti rekorddal. cURL-ből, Pythonból, JavaScriptből vagy PHP-ból ugyanúgy hívható, mint bármely HTTP API. Az API-kulcs a fejlécben utazik, a válasz a hátralévő kvótát is tartalmazza.

A dokumentumok darabolása, az embeddingek kiszámítása és az index frissítése aszinkron módon, sorban fut, így egy nagy feltöltés nem lassítja a többi ügyfél keresését. Ez ugyanaz a multi-tenant minta, amelyről korábban írtunk: bérlőnkénti korlátok és sorok, közös infrastruktúra.

Második forduló: Gemini

A vektortávolság önmagában nem mindig adja a legjobb sorrendet. A jó válasz gyakran ott van az első húsz találat között, csak nem az első helyen. Ezért opcionális újrarangsorolást (re-ranking) kínálunk: a legjobb jelölteket egy nagy nyelvi modell (Gemini) a keresőkifejezés fényében újraértékeli, és a végső sorrend ebből adódik.

Ez lassabb és drágább, mint az alapkeresés, ezért kérésenként kapcsolható. Tudásbázisnál és ügyfélszolgálati cikkeknél van értelme bekapcsolni, egy termékkatalógus gyors szűrésénél többnyire elég az alap találati lista.

Napi száz kérés ingyen

Az Abisearch teljes egészében az Európai Unión belüli adatközpontban fut, a feltöltött adatok és az indexek is ott maradnak. Az adatkezelés a GDPR szerint történik. A feltöltött adathalmaz bármikor törölhető, és a törlés az indexből is eltávolítja.

Az árazás használatalapú. Minden fiók naponta 100 kérést kap ingyen, felette kérésenként 0,001 eurót számolunk. Nincs havi minimum és nincs előre megveendő csomag. Ez szándékos: a kis projektek, például egy belső dokumentumtár vagy egy néhány száz termékes webshop, költség nélkül kipróbálhatják, a nagyobbak a tényleges forgalom után fizetnek.

Aki kipróbálja az abisearch.abigel.ai címen, és tapasztalatot vagy hibát jelezne, az hello@procats.hu címen elér minket. A következő lépéseink a hangalapú rendszerek felé vezetnek, ahol a keresés a beszélgetés egyik komponense lesz.

Megosztás
Széchenyi Terv Plusz kedvezményezetti infoblokk
QR Code