Vektoradatbázis
Tipp.
Látogasson el új mintagyűjteményünkbe a vector database és a RAG mintaalkalmazások legújabb mintáihoz
A vektoradatbázisokat számos tartományban és helyzetben használják elemzési és generatív AI-ben, beleértve többek között a természetes nyelvi feldolgozást, a videó- és képfelismerést, a javaslati rendszert és a keresést.
2023-ban a szoftverek jelentős trendje az AI-fejlesztések integrálása volt, amelyet gyakran úgy értek el, hogy speciális önálló vektoradatbázisokat építettek be a meglévő technológiai vermekbe. Ez a cikk bemutatja, hogy mik a vektoradatbázisok, és egy alternatív architektúrát mutat be, amelyet érdemes megfontolni: integrált vektoradatbázis használata a már használt NoSQL-ben vagy relációs adatbázisban, különösen a több modális adatok használata esetén. Ez a megközelítés nem csak a költségek csökkentését teszi lehetővé, hanem nagyobb adatkonzisztenciát, méretezhetőséget és teljesítményt is biztosít.
Tipp.
Az adatkonzisztencia, a méretezhetőség és a teljesítmény kritikus fontosságú az adatigényes alkalmazások esetében, ezért az OpenAI úgy döntött, hogy a ChatGPT szolgáltatást az Azure Cosmos DB fölé építi. Ön is kihasználhatja az integrált vektoradatbázist, valamint az egy számjegyből álló ezredmásodpercnyi válaszidőt, az automatikus és azonnali méretezhetőséget, valamint a garantált sebességet bármilyen léptékben. Tekintse meg a megvalósítási mintákat , és próbálja ki ingyenesen.
Mi az a vektoradatbázis?
A vektoradatbázis egy vektoros beágyazások tárolására és kezelésére szolgáló adatbázis, amely nagy dimenziójú térben lévő adatok matematikai ábrázolása. Ebben a térben minden dimenzió megfelel az adatok egy funkciójának, és több tízezer dimenzió használható kifinomult adatok megjelenítésére. A vektor pozíciója ebben a térben annak jellemzőit jelöli. Szavak, kifejezések vagy teljes dokumentumok, képek, hang és más típusú adatok mind vektorizálhatók. Ezeket a vektoros beágyazásokat a hasonlóság keresésében, a több modális keresésben, a javaslatok motorjaiban, a nagy nyelvi modellekben (LLM-ek) stb. használják.
A vektoradatbázisokban a beágyazásokat a vektorkeresési algoritmusok indexelik és kérdezik le a vektorok távolsága vagy hasonlósága alapján. A legrelevánsabb adatok azonosításához robusztus mechanizmusra van szükség. Néhány jól ismert vektorkeresési algoritmus a hierarchikus Navigable Small World (HNSW), az Inverted File (IVF), a DiskANN stb.
Integrált vektoradatbázis és tiszta vektoradatbázis
A vektoradatbázis-implementációknak két gyakori típusa van: a tiszta vektoradatbázis és az integrált vektoradatbázis a NoSQL-ben vagy a relációs adatbázisban.
A tiszta vektoradatbázist úgy tervezték, hogy hatékonyan tárolja és kezelje a vektoros beágyazásokat, valamint kis mennyiségű metaadatot; nem az adatforrás, amelyből a beágyazások származnak.
A nagy teljesítményű NoSQL-ben vagy relációs adatbázisban integrálható vektoradatbázis további képességeket biztosít. A NoSQL-ben vagy relációs adatbázisban lévő integrált vektoradatbázis a megfelelő eredeti adatok mellett tárolhatja, indexelheti és lekérdezésbeágyazhatja őket. Ez a módszer kiküszöböli az adatok egy különálló, tiszta vektoradatbázisban való replikálásának többletköltségét. Emellett a vektoros beágyazások és az eredeti adatok együttes megtartása jobban megkönnyíti a többmódos adatműveleteket, és nagyobb adatkonzisztenciát, skálázást és teljesítményt tesz lehetővé. A sémarugalmasságú és integrált vektoradatbázisokkal rendelkező, nagy teljesítményű adatbázisok különösen optimálisak az AI-ügynökök számára.
Vektoradatbázis használati esetei
A vektoradatbázisokat számos tartományban és helyzetben használják az elemzési és generatív AI-ben, beleértve a természetes nyelvi feldolgozást, a videó- és képfelismerést, a javaslati rendszert, a keresést stb. Egy vektoradatbázis például a következő célokra használható:
- azonosítsa a hasonló képeket, dokumentumokat és dalokat azok tartalma, témái, hangulatai és stílusai alapján
- hasonló termékek azonosítása jellemzőik, jellemzőik és felhasználói csoportjaik alapján
- tartalom, termékek vagy szolgáltatások ajánlása egyéni beállítások alapján
- tartalom, termékek vagy szolgáltatások ajánlása a felhasználói csoportok hasonlóságai alapján
- a nagy választási lehetőségek közül a legjobban illeszkedő lehetőségek azonosítása az összetett követelményeknek való megfelelés érdekében
- olyan adatanomáliák vagy csalárd tevékenységek azonosítása, amelyek eltérnek az elsődleges vagy a normál mintáktól
- állandó memória implementálása AI-ügynökök számára
Tipp.
A vektoradatbázisok tipikus használati esetei mellett az integrált vektoradatbázis az alacsony késésnek, a magas méretezhetőségnek és a magas rendelkezésre állásnak köszönhetően ideális megoldás az éles szintű LLM-gyorsítótárazáshoz is.
Különösen népszerű a vektoradatbázisok használata az LLM-eket és egyéni adatokat vagy tartományspecifikus információkat hasznosító lekéréses-bővített generáció (RAG) engedélyezéséhez. Ez a megközelítés lehetővé teszi, hogy:
- Környezetileg releváns és pontos válaszok létrehozása a felhasználói kérésekre az AI-modellekből
- Az LLM-jogkivonatok korlátainak leküzdése
- A frissített adatok gyakori finomhangolásával járó költségek csökkentése
Ez a folyamat magában foglalja a vonatkozó információk kinyerését egy egyéni adatforrásból, és integrálja őket a modellkérelembe gyors tervezéssel. Mielőtt kérést küldene az LLM-nek, a felhasználói bemenet/lekérdezés/kérés beágyazássá is alakul, és vektorkeresési technikákat alkalmazunk a leginkább hasonló beágyazások megkeresésére az adatbázisban. Ez a technika lehetővé teszi az adatbázis legrelevánsabb adatrekordjainak azonosítását. Ezeket a lekért rekordokat a rendszer a parancssori tervezés használatával adja meg az LLM-kérelem bemeneteként.
Vektoradatbázissal kapcsolatos fogalmak
Beágyazások
A beágyazás az adatmegjelenítés speciális formátuma, amelyet a gépi tanulási modellek és algoritmusok könnyen használhatnak. A beágyazás egy szöveg szemantikai jelentésének információdús ábrázolása. Minden beágyazás lebegőpontos számok vektora, így a két beágyazás közötti távolság a vektortérben korrelál két bemenet szemantikai hasonlóságával az eredeti formátumban. Ha például két szöveg hasonló, akkor a vektoros ábrázolásuknak is hasonlónak kell lennie. Egy vektoradatbázis-bővítmény, amely lehetővé teszi a beágyazások eredeti adatokkal való tárolását, biztosítja az adatok konzisztenciáját, skálázását és teljesítményét. [Vissza]
Vektoros keresés
A vektoros keresés egy olyan módszer, amely segít megtalálni a hasonló elemeket az adattulajdonságuk alapján, nem pedig egy tulajdonságmező pontos egyezései alapján. Ez a technika olyan alkalmazásokban hasznos, mint a hasonló szövegek keresése, a kapcsolódó képek keresése, javaslatok készítése vagy akár a rendellenességek észlelése. Úgy működik, hogy a gépi tanulási modellel létrehozott adatok vektoros ábrázolásait (számlistáit) egy beágyazási API-val, például az Azure OpenAI-beágyazásokkal vagy az Azure-beli Arc ölelésével hozza létre. Ezután méri az adatvektorok és a lekérdezésvektorok közötti távolságot. A lekérdezésvektorhoz legközelebb eső adatvektorok azok, amelyek szemantikailag a leginkább hasonlítanak. A natív vektorkeresési funkcióval hatékonyan tárolhatja, indexelheti és keresheti a nagy dimenziójú vektoradatokat közvetlenül más alkalmazásadatok mellett. Ez a megközelítés megszünteti az adatok költségesebb alternatív vektoradatbázisokra való migrálásának szükségességét, és zökkenőmentes integrációt biztosít az AI-alapú alkalmazásokba. [Vissza]
Kérik és kérik a tervezést
A parancssor egy adott szövegre vagy információra utal, amely utasításként szolgálhat egy LLM-nek, vagy olyan környezetfüggő adatokra, amelyekre az LLM építhet. A kérdések különböző űrlapokat, például kérdéseket, állításokat vagy akár kódrészleteket is tartalmazhatnak. A parancssorok a következőkként szolgálhatnak:
- Utasítások az LLM-nek szóló irányelvek
- Elsődleges tartalom: információt ad az LLM-nek feldolgozásra
- Példák: segítség a modell adott tevékenységhez vagy folyamathoz való kondicionálásához
- Cues: irányítsa az LLM kimenetét a megfelelő irányba
- Támogató tartalom: olyan kiegészítő információkat jelöl, amelyekkel az LLM kimenetet hozhat létre
A forgatókönyvre vonatkozó jó kérések létrehozásának folyamatát parancssori tervezésnek nevezzük. Az azonnali tervezésre vonatkozó kérésekkel és ajánlott eljárásokkal kapcsolatos további információkért tekintse meg az Azure OpenAI service parancssori mérnöki technikáit. [Vissza]
Tokenek
A jogkivonatok a bemeneti szöveg kisebb szegmensekre való felosztásával létrehozott kis méretű szövegrészek. Ezek a szegmensek lehetnek szavak vagy karaktercsoportok, egy karaktertől a teljes szóig változó hosszúságúak. A hamburger szó például olyan jogkivonatokra oszlik, mint a sonka, a bur és a ger, míg egy rövid és gyakori szó, mint a körte, egyetlen jogkivonatnak számít. Az olyan LLM-ek, mint a ChatGPT, a GPT-3.5 vagy a GPT-4, a szavakat tokenekké bontják feldolgozásra. [Vissza]
Lekéréses kiegészítésű generáció
A retrieveal-augmentated generation (RAG) egy olyan architektúra, amely kibővíti az olyan LLM-ek képességeit, mint a ChatGPT, a GPT-3.5 vagy a GPT-4 egy olyan információlekérdezési rendszer hozzáadásával, mint a vektorkeresés, amely földelési adatokat biztosít, például a vektoradatbázisban tároltakat. Ez a módszer lehetővé teszi, hogy az LLM környezetfüggő és pontos válaszokat hozzon létre a vektorizált dokumentumokból, képekből, hangból, videóból stb. származó egyéni adatforrások alapján.
A NoSQL-hez készült Azure Cosmos DB-t használó egyszerű RAG-minta a következő lehet:
- Regisztráció az Azure Cosmos DB NoSQL Vector Index előzetes verziójában
- Adatbázis és tároló beállítása tárolóvektor-szabályzattal és vektorindexkel.
- Adatok beszúrása egy Azure Cosmos DB for NoSQL-adatbázisba és -tárolóba
- Beágyazások létrehozása adattulajdonságokból az Azure OpenAI-beágyazások használatával
- Kapcsolja össze az Azure Cosmos DB for NoSQL-t.
- Vektorindex létrehozása a beágyazási tulajdonságokon
- Függvény létrehozása vektoros hasonlóság kereséséhez felhasználói kérés alapján
- Kérdések megválaszolása az adatok felett egy Azure OpenAI-kiegészítési modellel
A RAG-minta gyors tervezéssel a válaszminőség növelését szolgálja azáltal, hogy több környezeti információt kínál a modellnek. A RAG lehetővé teszi, hogy a modell szélesebb körű tudásbázis alkalmazzon azáltal, hogy releváns külső forrásokat épít be a létrehozási folyamatba, így átfogóbb és tájékozottabb válaszokat eredményez. A "földelés" LLM-ekről további információt az LLM-eknek a földeléséről szóló cikkben talál. [Vissza]
Az integrált vektoradatbázis funkcióival az alábbi módokon valósíthatja meg a RAG-t az adatokon:
Integrált vektoradatbázis-funkciók implementálása
Integrált vektoradatbázis-funkciókat a következő Azure Cosmos DB API-khoz implementálhat:
NoSQL API
Az Azure Cosmos DB for NoSQL a világ első kiszolgáló nélküli NoSQL-vektoradatbázisa. A vektorokat és az adatokat együtt tárolhatja az Azure Cosmos DB for NoSQL-ben integrált vektoradatbázis-képességekkel, ahol létrehozhat egy vektorindexet a DiskANN alapján, amely a Microsoft Research által kifejlesztett nagy teljesítményű vektorindexelési algoritmusok készlete.
A DiskANN lehetővé teszi a nagy pontosságú, alacsony késésű lekérdezők bármilyen szintű végrehajtását, miközben kihasználja az Azure Cosmos DB for NoSQL összes előnyét, például a 99,999%-os SLA-t (HA-kompatibilis), a georeplikálást, a kiszolgáló nélküliről a kiosztott átviteli sebességre (RU) való zökkenőmentes áttérést egy adattárban.
Hivatkozások és minták
- Mi az adatbázis a ChatGPT mögött? - Microsoft Mechanics
- Vektorindexelés az Azure Cosmos DB for NoSQL-ben
- VectorDistance rendszerfüggvény NoSQL-lekérdezések
- Vektoradatbázis-képességek beállítása az Azure Cosmos DB NoSQL-ben
- Python – Jegyzetfüzet-oktatóanyag
- C# – Saját Copilot Complete Solution Accelerator létrehozása AKS-sel és szemantikai kernellel
- C# – Saját Copilot-mintaalkalmazás és gyakorlati tesztkörnyezet létrehozása
- Python – Movie Chatbot
Azure Cosmos DB a MongoDB-hez
Használja a natívan integrált vektoradatbázist az Azure Cosmos DB for MongoDB-ben (vCore-architektúra), amely hatékony módot kínál a nagy dimenziójú vektoradatok tárolására, indexelésére és keresésére közvetlenül más alkalmazásadatok mellett. Ez a megközelítés megszünteti az adatok költségesebb alternatív vektoradatbázisokra való migrálásának szükségességét, és zökkenőmentes integrációt biztosít az AI-alapú alkalmazásokba.
Kódminták
- Saját Copilot létrehozása a MongoDB-hez készült Azure Cosmos DB-hez c# nyelven szemantikus kernellel
- .NET-oktatóanyag – recept csevegőrobot
- C# RAG-minta – OpenAI-szolgáltatások integrálása a Cosmossal
- Python RAG-minta – Azure-termék csevegőrobotja
- Python Notebook – Vektoradatbázis-integráció LangChain-oktatóanyagon keresztül
- Python Notebook – LLM-gyorsítótárazási integráció a LangChain-oktatóanyagon keresztül
- Python – LlamaIndex-integráció
- Python – Szemantikus kernelmemória-integráció
- Python-jegyzetfüzet – Movie Chatbot
API for PostgreSQL
Használja a natívan integrált vektoradatbázist az Azure Cosmos DB for PostgreSQL-ben, amely hatékony módot kínál a magas dimenziójú vektoradatok tárolására, indexelésére és keresésére közvetlenül más alkalmazásadatok mellett. Ez a megközelítés megszünteti az adatok költségesebb alternatív vektoradatbázisokra való migrálásának szükségességét, és zökkenőmentes integrációt biztosít az AI-alapú alkalmazásokba.
Kódminta
Vektoradatbázis-megoldások
Kapcsolódó tartalom
- 30 napos ingyenes próbaverzió Azure-előfizetés nélkül
- 90 napos ingyenes próbaidőszak és akár 6000 usd átviteli sebességű kredit az Azure AI Advantage használatával