Share via


Vektorok az Azure AI Searchben

A vektoros keresés az információlekérés olyan megközelítése, amely támogatja az indexelést és a lekérdezések végrehajtását a tartalom numerikus ábrázolásai alapján. Mivel a tartalom nem egyszerű, hanem numerikus, az egyeztetés a lekérdezésvektorhoz leginkább hasonló vektorokon alapul, amelyek lehetővé teszik az egyeztetést a következők között:

  • szemantikai vagy fogalmi hasonlóság ("kutya" és "kutya", fogalmilag hasonló, mégis nyelvileg eltérő)
  • többnyelvű tartalom ("kutya" angolul és "hund" német nyelven)
  • több tartalomtípus ("kutya" egyszerű szövegben és egy kutya fényképe egy képfájlban)

Ez a cikk az Azure AI Search vektorainak magas szintű bemutatását ismerteti. Emellett ismerteti a más Azure-szolgáltatásokkal való integrációt, valamint a vektorkeresés fejlesztésével kapcsolatos terminológiát és fogalmakat .

Ezt a cikket a háttérhez ajánljuk, de ha inkább az első lépéseket szeretné elvégezni, kövesse az alábbi lépéseket:

A vektoros gyorsútmutatóval vagy a GitHub kódmintáival is kezdhet.

Milyen forgatókönyvek támogathatják a vektorkeresést?

A vektorkeresés forgatókönyvei a következők:

  • Hasonlósági keresés. A szöveg kódolása beágyazási modellek, például OpenAI-beágyazások vagy nyílt forráskód modellek, például az SBERT használatával, valamint a szintén vektorként kódolt lekérdezésekkel rendelkező dokumentumok lekérése.

  • Keresés különböző tartalomtípusokban (multimodális). Képek és szövegek kódolása többmodális beágyazásokkal (például OpenAI CLIP vagy GPT-4 Turbo és Vision az Azure OpenAI-ban), és mindkét tartalomtípus vektoraiból álló beágyazási terület lekérdezése.

  • Hibrid keresés. Az Azure AI Searchben a hibrid keresés a vektor- és kulcsszó-lekérdezések végrehajtására vonatkozik ugyanabban a kérelemben. A vektortámogatás a mezőszinten valósul meg, és egy olyan indexet tartalmaz, amely vektormezőket és kereshető szövegmezőket is tartalmaz. A lekérdezések párhuzamosan futnak, és az eredmények egyetlen válaszba egyesülnek. Igény szerint a szemantikai rangsorolást is hozzáadhatja a pontosság érdekében az L2-renking funkcióval, ugyanazokkal a nyelvi modellekkel, amelyek a Binget használják.

  • Többnyelvű keresés. A keresési élmény biztosítása a felhasználók saját nyelvén több nyelven betanított modellek és csevegőmodellek beágyazásával lehetséges. Ha nagyobb mértékben szeretné szabályozni a fordítást, kiegészítheti az Azure AI Search által támogatott többnyelvű képességekkel a nem meg nem használt tartalmak esetében a hibrid keresési forgatókönyvekben.

  • Szűrt vektorkeresés. A lekérdezési kérelem tartalmazhat vektoros lekérdezést és szűrőkifejezést. A szűrők szöveg- és numerikus mezőkre vonatkoznak, és metaadatszűrők esetén hasznosak, és a keresési eredményeket szűrőfeltételek alapján is beleértve vagy kizárják. Bár egy vektormező önmagában nem szűrhető, beállíthat egy szűrhető szöveget vagy numerikus mezőt. A keresőmotor feldolgozhatja a szűrőt a vektoros lekérdezés végrehajtása előtt vagy után.

  • Vektoradatbázis. Az Azure AI Search tárolja a lekérdezett adatokat. Használd tiszta vektortárolóként, amikor hosszú távú memóriára vagy tudásbázis, illetve adatlekérési kiterjesztett generációs (RAG) architektúrára vagy vektorokat használó alkalmazásra van szüksége.

A vektortámogatás magában foglalja a keresési indexből származó vektorbeágyazások indexelését, tárolását és lekérdezését.

Az alábbi ábra a vektorkeresés indexelési és lekérdezési munkafolyamatait mutatja be.

A vektorkeresési munkafolyamat architektúrája.

Az indexelési oldalon az Azure AI Search vektoros beágyazásokat használ, és a legközelebbi szomszéd algoritmussal közel egymáshoz helyezi a hasonló vektorokat egy indexben. Belsőleg vektorindexeket hoz létre az egyes vektormezőkhöz.

A forrástartalomból az Azure AI Searchbe való beágyazás a megközelítésétől és az előzetes verziójú funkciók használatától függ. A beágyazásokat előzetes lépésként vektorizálhatja vagy létrehozhatja az OpenAI, az Azure OpenAI és számos szolgáltató modelljeinek használatával, a forrástartalmak széles skáláját használva, beleértve a szövegeket, képeket és a modellek által támogatott egyéb tartalomtípusokat. Ezután előre elkészített tartalmat küldhet egy vektortároló vektormezőibe . Ez az általánosan elérhető megközelítés. Ha használhat előzetes verziójú funkciókat, az Azure AI Search integrált adatrészletezést és vektorizálást kínál egy indexelő folyamatban. Továbbra is megadja az erőforrásokat (végpontokat és kapcsolatadatokat az Azure OpenAI-hoz), de az Azure AI Search minden hívást végrehajt, és kezeli az áttűnéseket.

A lekérdezési oldalon az ügyfélalkalmazásban a lekérdezési bemenetet egy felhasználótól gyűjti össze, általában egy parancssori munkafolyamaton keresztül. Ezután hozzáadhat egy kódolási lépést, amely vektorlá alakítja a bemenetet, majd elküldi a vektoros lekérdezést az indexbe az Azure AI Searchben hasonlósági keresés céljából. Az indexeléshez hasonlóan az integrált vektorizálást (előzetes verziót) is üzembe helyezheti a kérdés vektorlá alakításához. Mindkét megközelítés esetében az Azure AI Search a kért k legközelebbi szomszédokkal (kNN) rendelkező dokumentumokat adja vissza az eredményekben.

Az Azure AI Search támogatja azokat a hibrid forgatókönyveket, amelyek párhuzamosan futtatják a vektor- és kulcsszókeresést, és egységes eredményhalmazt adnak vissza, amely gyakran jobb eredményt ad, mint egyedül a vektor- vagy kulcsszókeresés. A hibrid, vektoros és nem meg nem feleltethető tartalmak ugyanabba az indexbe kerülnek, az egymás mellett futó lekérdezések esetében.

Rendelkezésre állás és díjszabás

A vektoros keresés minden régióban ingyenesen elérhető az Azure AI Search összes rétegének részeként.

A 2024. április 3. után létrehozott újabb szolgáltatások támogatják a vektorindexek magasabb kvótáit.

A vektorkeresés a következő helyen érhető el:

Feljegyzés

A 2019. január 1. előtt létrehozott régebbi keresési szolgáltatások némelyike olyan infrastruktúrán van üzembe helyezve, amely nem támogatja a vektoros számítási feladatokat. Ha vektormezőt próbál hozzáadni egy sémához, és hibaüzenetet kap, az elavult szolgáltatások eredménye. Ebben az esetben létre kell hoznia egy új keresési szolgáltatást a vektorfunkció kipróbálásához.

Az Azure AI Search mélyen integrálva van az Azure AI-platformon. Az alábbi táblázat a vektoros számítási feladatokban hasznos néhányat sorol fel.

Termék Integráció
Azure OpenAI Studio Az adat-játszótérrel folytatott csevegésben a Saját adatok hozzáadása az Azure AI Search használatával földelési adatokat és beszélgetési keresést használ. Ez a legegyszerűbb és leggyorsabb módszer az adatokkal való csevegéshez.
Azure OpenAI Az Azure OpenAI beágyazási modelleket és csevegési modelleket biztosít. A bemutatók és a minták a text-embedding-ada-002-t célják. Az Azure OpenAI használatát javasoljuk a szövegbeágyazások létrehozásához.
Azure AI Services Az Image Retrieveal Vectorize Image API (előzetes verzió) támogatja a képtartalom vektorizálását. Ezt az API-t javasoljuk a képek beágyazásának létrehozásához.
Azure-adatplatformok: Azure Blob Storage, Azure Cosmos DB Indexelőkkel automatizálhatja az adatbetöltést, majd integrált vektorizálással (előzetes verzió) hozhat létre beágyazásokat. Az Azure AI Search két adatforrásból képes automatikusan indexelni a vektoradatokat: az Azure blobindexelőket és az Azure Cosmos DB-t a NoSQL-indexelőkhöz. További információ: Vektormezők hozzáadása keresési indexhez.

Nyílt forráskódú keretrendszerekben, például a LangChainben is gyakran használják.

Vektorkeresési fogalmak

Ha még nem ismerkedik a vektorokkal, ez a szakasz néhány alapvető fogalmat ismertet.

A vektoros keresés olyan információlekérési módszer, amelyben a dokumentumok és lekérdezések vektorokként jelennek meg egyszerű szöveg helyett. A vektorkeresés során a gépi tanulási modellek a forrásbemenetek vektoros ábrázolását állítják elő, amelyek lehetnek szövegek, képek vagy egyéb tartalmak. A tartalom matematikai ábrázolása közös alapot biztosít a keresési forgatókönyvekhez. Ha minden vektor, a lekérdezések akkor is találnak egyezést a vektortérben, ha a társított eredeti tartalom más adathordozón vagy nyelven van, mint a lekérdezés.

Ha a kereshető tartalom vektorként jelenik meg, a lekérdezések hasonló tartalomban találnak szoros egyezéseket. A vektorgeneráláshoz használt beágyazási modell tudja, hogy mely szavak és fogalmak hasonlítanak egymáshoz, és az eredményként kapott vektorokat közelre helyezi a beágyazási térben. A "felhők" és a "köd" vektorizált forrásdokumentumai például nagyobb valószínűséggel jelennek meg a ködre vonatkozó lekérdezésekben, mert szemantikailag hasonlóak, még akkor is, ha nem lexikális egyezések.

Beágyazások és vektorizálás

A beágyazások a tartalom vagy a lekérdezések vektoros ábrázolásának egy meghatározott típusa, amelyet olyan gépi tanulási modellek hoztak létre, amelyek rögzítik a szöveg szemantikai jelentését vagy más tartalmak, például képek ábrázolását. A természetes nyelvi gépi tanulási modelleket nagy mennyiségű adaton tanítják be a szavak közötti minták és kapcsolatok azonosítására. A betanítás során megtanulnak bármilyen bemenetet valós számok vektoraként ábrázolni egy közvetítő lépésben, az úgynevezett kódolóban. A betanítás befejezése után ezek a nyelvi modellek módosíthatók, így a közvetítővektor-ábrázolás lesz a modell kimenete. Az eredményként kapott beágyazások nagy dimenziójú vektorok, amelyekben a hasonló jelentéssel rendelkező szavak közelebb kerülnek egymáshoz a vektortérben, amint azt a Beágyazások megértése (Azure OpenAI) című témakörben ismertetjük.

A vektorkeresés hatékonysága a releváns információk lekérésében attól függ, hogy a beágyazási modell milyen hatékonysággal desztillálta a dokumentumok és lekérdezések jelentését az eredményül kapott vektorba. A legjobb modellek jól be vannak tanítva az általuk képviselt adattípusokra. Kiértékelheti a meglévő modelleket, például az Azure OpenAI text-embedding-ada-002-t, közvetlenül a problémás területre betanított saját modellt, vagy finomhangolhat egy általános célú modellt. Az Azure AI Search nem ír elő korlátozásokat a választott modellre, ezért válassza ki az adatokhoz leginkább illőt.

A vektorkeresés hatékony beágyazása érdekében fontos figyelembe venni a bemeneti méret korlátozásait. Javasoljuk, hogy a beágyazások létrehozása előtt kövesse az adattömbökre vonatkozó irányelveket. Ez az ajánlott eljárás biztosítja, hogy a beágyazások pontosan rögzítsék a releváns információkat, és hatékonyabb vektorkeresést tegyenek lehetővé.

Mi a beágyazási terület?

A beágyazási terület a vektoros lekérdezések korpusza. A keresési indexben a beágyazási terület az összes olyan vektormező, amely ugyanabból a beágyazási modellből származó beágyazásokkal van feltöltve. A gépi tanulási modellek úgy hozzák létre a beágyazási területet, hogy egyes szavakat, kifejezéseket vagy dokumentumokat (természetes nyelvi feldolgozás céljából), képeket vagy más adatformákat ábrázolnak egy valós számok vektorából álló ábrázolásba, amely egy koordinátát jelöl egy nagy dimenziós térben. Ebben a beágyazási térben a hasonló elemek egymás közelében találhatók, az eltérő elemek pedig távolabb találhatók egymástól.

A különböző kutyafajtákról szóló dokumentumokat például közel egymáshoz csoportosítják a beágyazási térben. A macskákról szóló dokumentumok közel lennének egymáshoz, de távolabb a kutyafürttől, miközben még mindig az állatok szomszédságában találhatók. Az olyan eltérő fogalmak, mint a felhőalapú számítástechnika, sokkal távolabb lennének. A gyakorlatban ezek a beágyazási terek absztraktak, és nem rendelkeznek jól definiált, ember által értelmezhető jelentéssel, de az alapötlet változatlan marad.

A vektorkeresés során a keresőmotor a beágyazási területen belül megvizsgálja a vektorokat, hogy azonosítsa a lekérdezésvektorhoz legközelebbi vektorokat. Ezt a technikát legközelebbi szomszédkeresésnek nevezik. A legközelebbi szomszédok segítenek számszerűsíteni az elemek közötti hasonlóságot. A vektorok nagy fokú hasonlósága azt jelzi, hogy az eredeti adatok is hasonlóak. A legközelebbi szomszédkeresés megkönnyítése érdekében a keresőmotor optimalizálást végez, vagy adatstruktúrákat és adatparticionálást alkalmaz a keresési terület csökkentése érdekében. Minden vektorkeresési algoritmus különböző módokon oldja meg a legközelebbi szomszéd problémákat, mivel optimalizálják a minimális késést, a maximális átviteli sebességet, a visszahívást és a memóriát. A hasonlóság kiszámításához a hasonlósági metrikák biztosítják a számítási távolság mechanizmusát.

Az Azure AI Search jelenleg a következő algoritmusokat támogatja:

  • Hierarchikus navigálható kisvilág (HNSW): A HNSW egy vezető ANN algoritmus, amely nagy visszahívású, alacsony késésű alkalmazásokhoz van optimalizálva, ahol az adateloszlás ismeretlen vagy gyakran változhat. A magas dimenziójú adatpontokat hierarchikus gráfstruktúrába rendezi, amely lehetővé teszi a gyors és méretezhető hasonlóság keresését, ugyanakkor lehetővé teszi a keresési pontosság és a számítási költségek közötti kompromisszumot. Mivel az algoritmus megköveteli, hogy az összes adatpont a memóriában legyen a gyors véletlenszerű hozzáféréshez, ez az algoritmus vektorindex-méretkvótát használ fel.

  • Teljes K-legközelebbi szomszédok (KNN): Kiszámítja a lekérdezésvektor és az összes adatpont közötti távolságot. Számításigényes, ezért kisebb adathalmazok esetén működik a legjobban. Mivel az algoritmus nem igényel gyors véletlenszerű hozzáférést az adatpontokhoz, ez az algoritmus nem használ vektorindex-méretkvótát. Ez az algoritmus azonban a legközelebbi szomszédok globális készletét biztosítja.

Egy indexdefiníción belül megadhat egy vagy több algoritmust, majd minden vektormezőhöz megadhatja, hogy melyik algoritmust használja:

Az index létrehozása során az index inicializálásához használt algoritmusparaméterek nem módosíthatók, és nem módosíthatók az index létrehozása után. A lekérdezési idő jellemzőit (efSearch) befolyásoló paraméterek azonban módosíthatók.

Emellett a HNSW algoritmust meghatározó mezők támogatják a teljes KNN-keresést is a lekérdezéskérési paraméterrel "exhaustive": true. Az ellenkezője azonban nem igaz. Ha egy mező indexelve exhaustiveKnnvan, a lekérdezésben nem használhatja a HNSW-t, mert a hatékony keresést lehetővé tevő további adatstruktúrák nem léteznek.

Közelítő legközelebbi szomszédok

A közelítő szomszédkeresés (ANN) algoritmusok osztálya a vektortérben található egyezések kereséséhez. Az algoritmusok ezen osztálya különböző adatstruktúrákat vagy adatparticionálási módszereket alkalmaz a keresési terület jelentős csökkentése érdekében a lekérdezésfeldolgozás felgyorsítása érdekében.

Az ANN algoritmusok bizonyos pontosságot feláldoznak, de skálázható és gyorsabb lekérést biztosítanak a legközelebbi szomszédokhoz, ami ideálissá teszi őket a pontosság és a modern információlekérési alkalmazások hatékonyságának kiegyensúlyozásához. Az algoritmus paramétereit úgy módosíthatja, hogy finomhangolja a keresési alkalmazás visszahívási, késési, memória- és lemezigényét.

Az Azure AI Search a HNSW-t használja ann algoritmusához.

Következő lépések