Szemantikai keresés ismertetése

Befejeződött

Tekintsük át a szemantikai keresés alapjait:

  • Miben különbözik a hagyományos lexikális kereséstől?
  • Mi az a vektoros beágyazás?
  • Mit tesznek a vektoradatbázisok?

A szabványos lexikális keresés vagy kulcsszókeresés egyező karakterek alapján lekérdezi a dokumentumokat. Például a "fény" lekérdezés megfelel az "erős fény" szövegnek, mert a karakter light megjelenik a dokumentumban.

A lexikális keresés tetszetős egyezéssel bővíthető; Például a "fények" lekérdezés továbbra is megfelelhet a "világos fény" szövegnek vagy a hibásan írt lihgts szövegnek, mivel egy karakter ki van kapcsolva (hiányzik s, vagy felcseréli az g és h) szöveget. Bár a homályos illesztés és más technikák, mint a stemming hasznosak, ennek a technikának egyeznie kell a szinonimákkal vagy a szemantikailag hasonló kifejezésekkel: különböző megfogalmazásokkal, szlenggel, technikai szókincsekkel, stb. Ahhoz, hogy lexikális kereséssel releváns keresési eredményeket biztosítsanak, a szerzőknek kulcsszavakat kell beágyazniuk a metaadatokba vagy magába a szövegbe (ami a felhasználói élményt kényelmetlenné teheti).

Írja be a szemantikai keresést. A szemantikai keresés nem használ karakter-hasonlóságot. Ehelyett a fogalmak numerikus ábrázolását használja szavakban és kifejezésekben. Ezeket a numerikus ábrázolásokat beágyazási vektoroknak vagy egyszerűen beágyazásoknak nevezzük.

Ha két beágyazás numerikusan hasonló, akkor szemantikailag is hasonlóak. Ez a hasonlóság általánosabb, mint a kulcsszófedés tesztelése, mivel kevésbé érzékeny a kulcsszavak pontos kiválasztására vagy kifejezésére.

Szemantikai keresés végrehajtásához először hozza létre a lekérdezés beágyazási vektorát. Ezután hasonlítsa össze ezt a vektort a vektorok adatbázisával. A lekérdezés beágyazásával legközelebb eső beágyazások azok a dokumentumok, amelyek a lekérdezéssel szemantikailag leginkább hasonlóak.

A legtöbb relációs adatbázis-használati eset nem foglalja magában az n-dimenziós vektorok tárolását és a közöttük lévő numerikus távolság kiszámítását. A hatékony szemantikai kereséshez vektoradatbázis-funkciókra van szükség.

Egy, az OpenAI Beágyazások API-ját végigmutató dokumentumot és lekérdezést ábrázoló diagram, amely beágyazási vektorokká válik. Ezeket a vektorokat ezután koszinusza távolság alapján hasonlítjuk össze.

Beágyazások

A beágyazás a szemantikák numerikus ábrázolása. A beágyazások n dimenziós vektorként vannak ábrázolva: n számok tömbjei. Az egyes dimenziók a beágyazási modell által meghatározott szemantikai minőséget képviselik.

Az Azure OpenAI beágyazási API-nak küldött

Ha két beágyazási vektor hasonló irányba mutat, hasonló fogalmakat jelölnek, például a "fényes" és a "napos" fogalmakat. Ha távolodnak egymástól, ellentétes fogalmakat képviselnek, például a "szomorú" és a "boldog" fogalmakat. A beágyazási modell struktúrája és a betanítási adatok határozzák meg, hogy mi tekinthető hasonlónak és eltérőnek.

A beágyazások alkalmazhatók szövegre és bármilyen adatra, például képekre vagy hanganyagokra. A kritikus rész az adatok átalakítása n-dimenziós beágyazási vektorokká valamilyen modell vagy függvény alapján. A beágyazások numerikus hasonlósága a hozzájuk tartozó adatok szemantikai hasonlóságát tükrözi.

A két n dimenziós vektor numerikus hasonlóságát a v1 adja meg, írva v2. A pont szorzat kiszámításához szorozza össze az egyes dimenziók értékeit páronként, majd összegzi az eredményt:

dot_product(v1, v2) = SUM(
 v1[0] * v2[0],
 v1[1] * v2[1],
 ...,
 v1[n-1] * v2[n-1],
 v1[n] * v2[n]
)

Mivel a beágyazások egységvektorok (az első hossz vektorai), a pont szorzata megegyezik a vektorok koszinusz-hasonlóságával, a -1 (pontosan ellentétes irányok) és az 1 (pontosan azonos irány) közötti értékkel. A nulla koszinusz-hasonlóságú vektorok ortogonálisak: szemantikailag nem kapcsolódnak egymáshoz.

Az n dimenziós tereket úgy jelenítheti meg, hogy 3 dimenziós térbe vetíti őket főkomponens-elemzés (PCA) alkalmazásával. A PCA egy szabványos technika a vektorméretek csökkentésére. Az eredmény az n dimenziós tér egyszerűsített, de megjeleníthető vetítése. Ha így jeleníti meg a dokumentumbeágyazást, az azt mutatja, hogy a hasonló dokumentumok fürtökbe vannak csoportosítva, míg a különböző dokumentumok távolabb vannak.

Ezen definíciók alapján a lekérdezés szemantikai keresésének végrehajtása a dokumentumbeágyazások gyűjteményén egyszerű matematikailag:

  1. Hozza létre a lekérdezésbeágyazást egy nyelvi modellel.
  2. Végezze el a lekérdezési beágyazás skaláris szorzatát az egyes dokumentumok előre kiszámított beágyazásával szemben.
  3. Rendezze a pont termékeket, számokat -1 és 1 között.
  4. A legrelevánsabb (szemantikailag hasonló) dokumentumok rendelkeznek a legmagasabb pontszámmal, a legkevésbé releváns (szemantikailag eltérő) dokumentumok pedig a legalacsonyabb pontszámokkal.

Bár matematikailag egyszerű, ez nem egy egyszerű vagy végrehajtó lekérdezés egy relációs adatbázisban. Az ilyen típusú vektor-hasonlósági lekérdezés tárolásához és feldolgozásához használjon vektoradatbázist.

Vektoradatbázisok

A vektoradatbázis optimalizálja a többdimenziós vektorok, például a beágyazások tárolását és számítását. A vektoradatbázisok különösen gyors és pontos pont-termék számításokat biztosítanak a vektoros hasonlósági lekérdezések végrehajtásához.

A vektoros hasonlósági keresések több használati esetet is használnak:

  • a lekérdezési rendszerkép beágyazásához hasonló képek keresése
  • a lekérdezés szövegéhez szemantikailag hasonló dokumentumok keresése
  • hasonló funkciókkal és minősítésekkel rendelkező termékek keresése egy javaslati rendszerhez

A szemantikai keresés a vektoradatbázist lekérdezi a lekérdezés beágyazásának és az egyes tárolt beágyazásoknak a hasonlósága alapján. Az alkalmazások ezután lekérhetik a beágyazásoknak megfelelő adatokat.

Számos natív vektoradatbázis és adatbázisbővítmény közül választhat. Az alábbi Azure-szolgáltatások segíthetnek a vektoradatbázis igényeinek kielégítésében: