Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A beolvasási kiterjesztett generáció (RAG) egy olyan architektúra, amely egy olyan nagy méretű nyelvi modell (LLM) képességeit bővíti, mint a ChatGPT, egy olyan információlekérdezési rendszer hozzáadásával, amely földelő adatokat biztosít. Az információlekérdezési rendszer hozzáadásával szabályozhatja az LLM által a válasz megfogalmazásakor használt földelési adatokat. Vállalati megoldás esetén a RAG architektúra azt jelenti, hogy a vektorizált dokumentumokból és képekből, valamint más adatformátumokból származó vállalati tartalomra korlátozhatja a generatív AI-t, ha modelleket ágyaz be az adott tartalomhoz.
A döntés, hogy melyik információlekérdezési rendszert kell használni, kritikus fontosságú, mert meghatározza az LLM bemeneteit. Az információlekérési rendszernek a következő adatokat kell biztosítania:
Olyan indexelési stratégiák, amelyek nagy léptékben töltődnek be és frissülnek az összes tartalomhoz a kívánt gyakorisággal.
Lekérdezési képességek és relevanciahangolás. A rendszernek releváns eredményeket kell visszaadnia az LLM-bemenetek tokenhossz-követelményeinek teljesítéséhez szükséges rövid formátumú formátumban.
Adatok és műveletek biztonsága, globális elérése és megbízhatósága.
Integráció az indexelési modellek beágyazási modelljeivel, valamint a lekéréshez használt csevegőmodellekkel vagy nyelvfelismerési modellekkel.
Az Azure AI Search egy bevált megoldás a RAG-architektúrában történő információlekérésre . Indexelési és lekérdezési képességeket biztosít az Azure-felhő infrastruktúrájával és biztonságával. Kóddal és más összetevőkkel átfogó RAG-megoldást tervezhet, amely magában foglalja a generatív AI összes elemét a saját tulajdonú tartalmakon keresztül.
Feljegyzés
Új a copilot és a RAG fogalmai? Tekintse meg a vektorkeresést és a Generatív AI-alkalmazások korszerű lekérését.
A RAG és az Azure AI Search megközelítései
A Microsoft számos beépített implementációval rendelkezik az Azure AI Search RAG-megoldásban való használatához.
- Azure AI Foundry, használjon vektorindexet és lekéréses kiegészítést.
- Azure OpenAI, használjon keresési indexet vektorokkal vagy anélkül.
- Azure Machine Learning, használjon keresési indexet vektortárként egy parancssori folyamatban.
A válogatott megközelítések megkönnyítik az első lépéseket, de az architektúra nagyobb mértékű szabályozásához egyéni megoldásra van szükség. Az alábbi sablonok végpontok közötti megoldásokat hoznak létre:
Ha az eszközök és sablonok nem felelnek meg az alkalmazás követelményeinek, létrehozhat egy egyéni RAG-megoldást az Azure AI Search API-kkal. A cikk további része bemutatja, hogyan illeszkedik az Azure AI Search egy egyéni RAG-megoldásba.
Egyéni RAG-minta az Azure AI Search szolgáltatáshoz
A minta magas szintű összefoglalása a következőképpen néz ki:
- Kezdje egy felhasználói kérdéssel vagy kéréssel (parancssor).
- Küldje el az Azure AI Search szolgáltatásba, hogy releváns információkat találjon.
- A legjobban rangsorolt keresési eredményeket adja vissza egy LLM-nek.
- Az LLM természetes nyelvi megértési és érvelési képességeivel választ hozhat létre a kezdeti kérdésre.
- Szükség esetén használjon ügynöki lekérést, ha egy ügynök kiértékeli a választ, és jobbat talál, ha az eredeti válasz hiányos vagy gyenge minőségű.
Az Azure AI Search bemeneteket biztosít az LLM-parancssorhoz, de nem tanítja be a modellt. A RAG architektúrában nincs további betanítás. Az LLM nyilvános adatokkal van előre betanolva, de olyan válaszokat hoz létre, amelyeket a lekérőtől származó információk egészítenek ki, ebben az esetben az Azure AI Searchben.
Az Azure AI Searcht tartalmazó RAG-minták az alábbi ábrán látható elemeket tartalmazzák.
- App UX (webalkalmazás) a felhasználói élményhez
- Alkalmazáskiszolgáló vagy vezénylő (integrációs és koordinációs réteg)
- Azure AI Search (információlekérdezési rendszer)
- Azure OpenAI (generatív AI-hez készült LLM)
A webalkalmazás biztosítja a felhasználói élményt, és biztosítja a bemutatót, a környezetet és a felhasználói interakciót. A felhasználótól érkező kérdések vagy kérdések itt kezdődnek. A bemenetek áthaladnak az integrációs rétegen, először az információk lekérésére a keresési eredmények lekéréséhez, de a környezet és a szándék beállításához az LLM-hez is eljutnak.
Az alkalmazáskiszolgáló vagy a vezénylő az az integrációs kód, amely koordinálja az információk lekérése és az LLM közötti átadást. A gyakori megoldások közé tartozik a LangChain a munkafolyamat koordinálásához. A LangChain integrálható az Azure AI Search szolgáltatással, így egyszerűbbé válik az Azure AI Search beolvasása a munkafolyamatba. A LlamaIndex és a Szemantikus kernel más lehetőségeket is kínál.
Az információlekérdezési rendszer biztosítja a kereshető indexet, a lekérdezési logikát és a hasznos adatokat (lekérdezési válasz). A keresési index tartalmazhat vektorokat vagy nem aktortartalmakat. Bár a legtöbb minta és demó vektormezőket tartalmaz, ez nem követelmény. A lekérdezés az Azure AI Search meglévő keresőmotorjának használatával lesz végrehajtva, amely képes kezelni a kulcsszóval (vagy kifejezéssel) és vektoros lekérdezésekkel. Az index előre létrejön egy ön által definiált séma alapján, és betöltődik a fájlokból, adatbázisokból vagy tárolókból származó tartalommal.
Az LLM megkapja az eredeti kérést, valamint az Azure AI Search eredményeit. Az LLM elemzi az eredményeket, és választ fogalmaz meg. Ha az LLM ChatGPT, a felhasználói interakció egy oda-vissza beszélgetés lehet. Ha Davincit használ, a kérdés egy teljesen összeállított válasz lehet. Az Azure-megoldások valószínűleg az Azure OpenAI-t használják, de nincs szigorú függőség az adott szolgáltatástól.
Az Azure AI Search nem biztosít natív LLM-integrációt a parancssori folyamatokhoz vagy a csevegések megőrzéséhez, ezért olyan kódot kell írnia, amely kezeli a vezénylést és az állapotot. A bemutató forrását (Azure-Samples/azure-search-openai-demo) áttekintheti a teljes megoldásra vonatkozó tervért. Azt is javasoljuk, hogy az Azure AI Foundry olyan RAG-alapú Azure AI Search-megoldásokat hozzon létre, amelyek integrálhatók az LLM-ekkel.
Kereshető tartalom az Azure AI Searchben
Az Azure AI Searchben az összes kereshető tartalom egy keresési indexben van tárolva, amely a keresési szolgáltatásban található. A keresési indexet ezredmásodpercnyi válaszidővel rendelkező gyors lekérdezésekhez tervezték, így a belső adatstruktúrák támogatják ezt a célkitűzést. Ennek érdekében a keresési indexek indexelt tartalmakat tárolnak, nem pedig teljes tartalomfájlokat, például teljes PDF-fájlokat vagy képeket. Belsőleg az adatstruktúrák közé tartoznak a jogkivonatos szövegek invertált indexei, a beágyazások vektorindexei és a nem módosított szövegek olyan esetekben, amikor szó szerinti egyeztetésre van szükség (például szűrőkben, homályos keresésekben, reguláris kifejezés-lekérdezésekben).
A RAG-megoldás adatainak beállításakor az indexet létrehozó és betöltő funkciókat használja az Azure AI Searchben. Az index olyan mezőket tartalmaz, amelyek a forrástartalmat duplikálják vagy jelölik. Az indexmező lehet egyszerű átvitel (egy forrásdokumentum címe vagy leírása cím vagy leírás lesz egy keresési indexben), vagy egy mező tartalmazhat egy külső folyamat kimenetét, például vektorizálást vagy képességfeldolgozást, amely egy kép ábrázolását vagy szöveges leírását hozza létre.
Mivel valószínűleg tudja, hogy milyen típusú tartalmat szeretne keresni, fontolja meg az egyes tartalomtípusokra vonatkozó indexelési funkciókat:
Tartalomtípus | Indexelt | Funkciók |
---|---|---|
szöveg | jogkivonatok, nem módosított szöveg | Az indexelők egyszerű szöveget tudnak lekérni más Azure-erőforrásokból, például az Azure Storage-ból és a Cosmos DB-ből. Bármilyen JSON-tartalmat le is küldhet egy indexbe. A szöveg repülés közbeni módosításához elemzők és normalizálók használatával adjon hozzá lexikális feldolgozást az indexelés során. A szinonimák térképei akkor hasznosak, ha a forrásdokumentumokban hiányoznak a lekérdezésekben esetleg használt terminológia. |
szöveg | vektorok 1 | A szöveg darabolható és vektorizálható egy indexelő folyamatban, vagy külsőleg kezelhető, majd indexelhető vektormezőként az indexben. |
rendszerkép | jogkivonatok, változatlan szöveg 2 | Az OCR- és képelemzési képességek képesek feldolgozni a képeket a szövegfelismeréshez vagy a kép jellemzőihez. A rendszer a képadatokat kereshető szöveggé alakítja, és hozzáadja az indexhez. A készségeknek indexelő követelményük van. |
rendszerkép | vektorok 1 | A képek vektorizálhatók egy indexelő folyamatban, vagy külsőleg kezelhetők a képtartalom matematikai ábrázolása céljából, majd vektormezőként indexelhetők az indexben. Az Azure AI Vision multimodális vagy egy nyílt forráskód modell, például az OpenAI CLIP használatával vektorizálhatja a szöveget és a képeket ugyanabban a beágyazási térben. |
1 Az Azure AI Search integrált adattömböket és vektorizálást biztosít, de függőséget kell vállalnia az indexelők és a képességkészletek között. Ha nem tud indexelőt használni, a Microsoft Szemantikus Kernelje vagy más közösségi ajánlatai segíthetnek a teljes veremmegoldásban. A mindkét megközelítést bemutató kódmintákért tekintse meg az azure-search-vectors adattárat.
2 A készségek beépített támogatást nyújtanak az alkalmazott AI-hoz. Az OCR és a képelemzés esetében az indexelési folyamat belső hívást indít az Azure AI Vision API-khoz. Ezek a képességek egy kinyert rendszerképet adnak át az Azure AI-nak feldolgozás céljából, és az Azure AI Search által indexelt szövegként kapják meg a kimenetet. A készségeket az integrált adattömbözéshez (Text Split skill) és az integrált beágyazáshoz is használják (az Azure AI Vision multimodális, az Azure OpenAI és az Azure AI Foundry modellkatalógusában szereplő modellek).
A vektorok biztosítják a legjobb elhelyezést az eltérő tartalmakhoz (több fájlformátum és nyelv), mivel a tartalom általánosan matematikai ábrázolásokban van kifejezve. A vektorok a hasonlóság keresését is támogatják: a vektoros lekérdezéshez leginkább hasonló koordináták egyeztetése. A tokenizált kifejezésekre vonatkozó kulcsszókereséssel (vagy kifejezéskereséssel) összehasonlítva a hasonlóság keresése árnyaltabb. Jobb választás, ha kétértelműségi vagy értelmezési követelmények vannak a tartalomban vagy a lekérdezésekben.
Tartalomlekérés az Azure AI Searchben
Miután az adatok keresési indexbe kerülnek, az Azure AI Search lekérdezési képességeivel lekérheti a tartalmakat.
Nem RAG-minta esetén a lekérdezések egy keresési ügyfélből végeznek oda-vissza utazást. A lekérdezés elküldve, egy keresőmotoron fut, és az ügyfélalkalmazásnak visszaadott válasz. A válasz vagy keresési eredmények kizárólag az indexben található szó szerinti tartalomból állnak.
RAG-mintában a lekérdezések és válaszok a keresőmotor és az LLM között vannak koordinálva. A rendszer kéri a felhasználó kérdését vagy lekérdezését a keresőmotornak és az LLM-nek is. A keresési eredmények a keresőmotorból származnak, és egy LLM-hez lesznek átirányítva. A felhasználónak visszaadandó válasz egy generatív AI, amely az LLM összegzése vagy válasza.
Az Azure AI Searchben nincs olyan lekérdezéstípus – még szemantikai vagy vektoros keresés sem –, amely új válaszokat állít össze. Csak az LLM biztosít generatív AI-t. Az Azure AI Search funkciói a lekérdezések megfogalmazására szolgálnak:
Lekérdezési funkció | Cél | Mire használható |
---|---|---|
Egyszerű vagy teljes Lucene szintaxis | Lekérdezés végrehajtása szövegen és nem adatfeltáró numerikus tartalomon keresztül | A teljes szöveges keresés a legjobb a pontos egyezésekhez, nem pedig a hasonló egyezésekhez. A teljes szöveges keresési lekérdezések a BM25 algoritmussal vannak rangsorolva, és támogatják a relevancia finomhangolását a pontozási profilokon keresztül. Emellett szűrőket és aspektusokat is támogat. |
Szűrők és aspektusok | Csak szöveg- vagy numerikus (nem aktor) mezőkre vonatkozik. Csökkenti a keresési felület területét a befogadási vagy kizárási feltételek alapján. | Pontosságot ad a lekérdezésekhez. |
Szemantikai rangsoroló | Egy BM25-eredménykészletet szemantikai modellek használatával rangsorol újra. Rövid formátumú feliratokat és válaszokat hoz létre, amelyek LLM-bemenetként hasznosak. | Egyszerűbb, mint a pontozási profilok, és a tartalomtól függően megbízhatóbb technika a relevanciahangoláshoz. |
Vektoros keresés | Lekérdezés végrehajtása vektormezőkön hasonlósági keresés céljából, ahol a lekérdezési sztring egy vagy több vektor. | A vektorok bármilyen típusú tartalmat képviselhetnek bármilyen nyelven. |
Hibrid keresés | A fenti lekérdezési technikák bármelyikét vagy mindegyikét egyesíti. A vektor- és nemvektor-lekérdezések párhuzamosan futnak, és egységes eredményhalmazban jelennek meg. | A pontosság és a visszahívás legjelentősebb nyeresége a hibrid lekérdezések. |
A lekérdezési válasz strukturálása
A lekérdezés válasza megadja az LLM bemenetét, így a keresési eredmények minősége kritikus fontosságú a siker szempontjából. Az eredmények táblázatos sorkészletek. Az eredmények összetétele vagy szerkezete a következőtől függ:
- Azon mezők, amelyek meghatározzák, hogy az index mely részei szerepelnek a válaszban.
- Egyezést jelző sorok az indexből.
A mezők akkor jelennek meg a keresési eredményekben, ha az attribútum "lekérdezhető". Az indexséma meződefiníciója attribútumokkal rendelkezik, és ezek határozzák meg, hogy egy mező szerepel-e a válaszban. Csak a "beolvasható" mezők lesznek visszaadva teljes szöveges vagy vektoros lekérdezési eredményekben. Alapértelmezés szerint az összes "beolvasható" mező vissza lesz adva, de a "kiválasztás" használatával megadhat egy részhalmazt. A "beolvasható" mellett nincs korlátozás a mezőre. A mezők bármilyen hosszúságúak vagy típusúak lehetnek. A hossz tekintetében az Azure AI Searchben nincs maximális mezőhossz-korlát, de az API-kérések méretére vonatkozó korlátozások vannak érvényben.
A sorok egyeznek a lekérdezéssel, relevancia, hasonlóság vagy mindkettő szerint rangsorolva. Alapértelmezés szerint a találatok a teljes szöveges keresés 50 első 50 találatára, a vektorkereséshez pedig a k-legközelebbi szomszéd találatokra vannak leképezve. Módosíthatja az alapértelmezett értékeket, hogy legfeljebb 1000 dokumentumra növelje vagy csökkentse a korlátot. A lapozóparaméterek használatával lapszámozott eredmények sorozataként is lekérheti az eredményeket.
A relevancia és a visszahívás maximalizálása
Ha összetett folyamatokkal, nagy mennyiségű adattal és az ezredmásodpercre vonatkozó várakozásokkal dolgozik, kritikus fontosságú, hogy minden lépés értéket adjon hozzá, és javítsa a végeredmény minőségét. Az információlekérési oldalon a relevancia finomhangolása olyan tevékenység, amely javítja az LLM-nek küldött eredmények minőségét. Az eredményekben csak a legrelevánsabb vagy a leginkább hasonló egyező dokumentumokat kell szerepeltetni.
Íme néhány tipp a relevancia maximalizálására és a visszahívásra:
A kulcsszókeresést és a vektorkeresést kombináló hibrid lekérdezések maximálisan visszahívják, ha a bemenetek megegyeznek. Hibrid lekérdezésekben, ha ugyanazon a bemeneten duplázódik le, a szöveges sztring és annak vektor-megfelelője párhuzamos lekérdezéseket hoz létre a kulcsszavak és a hasonlóság kereséséhez, és a legrelevánsabb egyezéseket adja vissza az egyes lekérdezéstípusokból egy egységes eredményhalmazban.
A hibrid lekérdezések kiterjedtek is lehetnek. A hasonlósági keresés részletes, darabolt tartalomon, valamint kulcsszavakon történő kereséssel is futtatható, mind ugyanabban a kérelemben.
A relevancia finomhangolása az alábbiakon keresztül támogatott:
Pontozási profilok , amelyek növelik a keresési pontszámot, ha egyezések egy adott keresőmezőben vagy más feltételekben találhatók.
A kezdeti eredményeket újra rangsoroló szemantikai rangsoroló a Bing szemantikai modelljeinek használatával átrendezi az eredményeket, hogy jobban illeszkedjen az eredeti lekérdezéshez.
Lekérdezési paraméterek a finomhangoláshoz. A vektoros lekérdezések fontossága megnőhet, vagy módosíthatja a BM25 rangsorolt eredményeinek mennyiségét egy hibrid lekérdezésben. Beállíthatja a minimális küszöbértékeket is , hogy kizárja az alacsony pontozási eredményeket egy vektoros lekérdezésből.
Az összehasonlítás és a teljesítményteszt tesztelése során a szöveg- és vektormezőkkel rendelkező hibrid lekérdezések szemantikai rangsorolással kiegészítve a legrelevánsabb eredményeket eredményezik.
Példakód RAG-munkafolyamathoz
Az alábbi Python-kód bemutatja a RAG-munkafolyamat alapvető összetevőit az Azure AI Searchben. Be kell állítania az ügyfeleket, meg kell adnia egy rendszerkérést, és meg kell adnia egy lekérdezést. Az üzenet arra utasítja az LLM-et, hogy csak a lekérdezés eredményeit használja, és hogyan adja vissza az eredményeket. A példán alapuló további lépésekért tekintse meg ezt a RAG rövid útmutatót.
Feljegyzés
Az Azure Government-felhő esetében módosítsa a jogkivonat-szolgáltató API-végpontjának a következőre "https://cognitiveservices.azure.us/.default"
: .
# Set up the query for generating responses
from azure.identity import DefaultAzureCredential
from azure.identity import get_bearer_token_provider
from azure.search.documents import SearchClient
from openai import AzureOpenAI
credential = DefaultAzureCredential()
token_provider = get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default")
openai_client = AzureOpenAI(
api_version="2024-06-01",
azure_endpoint=AZURE_OPENAI_ACCOUNT,
azure_ad_token_provider=token_provider
)
search_client = SearchClient(
endpoint=AZURE_SEARCH_SERVICE,
index_name="hotels-sample-index",
credential=credential
)
# This prompt provides instructions to the model.
# The prompt includes the query and the source, which are specified further down in the code.
GROUNDED_PROMPT="""
You are a friendly assistant that recommends hotels based on activities and amenities.
Answer the query using only the sources provided below in a friendly and concise bulleted manner.
Answer ONLY with the facts listed in the list of sources below.
If there isn't enough information below, say you don't know.
Do not generate answers that don't use the sources below.
Query: {query}
Sources:\n{sources}
"""
# The query is sent to the search engine, but it's also passed in the prompt
query="Can you recommend a few hotels near the ocean with beach access and good views"
# Retrieve the selected fields from the search index related to the question
search_results = search_client.search(
search_text=query,
top=5,
select="Description,HotelName,Tags"
)
sources_formatted = "\n".join([f'{document["HotelName"]}:{document["Description"]}:{document["Tags"]}' for document in search_results])
response = openai_client.chat.completions.create(
messages=[
{
"role": "user",
"content": GROUNDED_PROMPT.format(query=query, sources=sources_formatted)
}
],
model="gpt-35"
)
print(response.choices[0].message.content)
Integrációs kód és LLM-k
Az Azure AI Searcht tartalmazó RAG-megoldások beépített adattömbök és vektorizálási képességeket használhatnak, vagy létrehozhatnak saját platformokat, például szemantikus kernelt, LangChaint vagy LlamaIndexet.
A demóadattárban található jegyzetfüzetek nagyszerű kiindulópontok, mivel az LLM-integráció mintáit mutatják. A RAG-megoldások kódjainak nagy része az LLM-hez intézett hívásokból áll, ezért meg kell ismernie, hogyan működnek ezek az API-k, ami a jelen cikk hatókörén kívül esik.
Az első lépések
Az első lépéseknek számos módja van, beleértve a kódelső megoldásokat és a bemutatókat.
Próbálja ki ezt a RAG-rövid útmutatót a keresési indexen keresztüli csevegési modellekkel való lekérdezésintegráció bemutatásához.
Oktatóanyag: RAG-megoldás létrehozása az Azure AI Searchben a keresési indexből földelő adatokat beolvasó RAG-megoldások funkcióira és mintájára összpontosított lefedettség érdekében.
Tekintse át az indexelési fogalmakat és stratégiákat az adatok betöltésének és frissítésének módjának meghatározásához. Döntse el, hogy vektorkeresést, kulcsszókeresést vagy hibrid keresést használ-e. A keresendő tartalom típusa és a futtatni kívánt lekérdezések típusa határozza meg az indexek kialakítását.
A lekérdezések létrehozásával kapcsolatos további információkért tekintse át a keresési kérelmek szintaxisát és követelményeit.
Feljegyzés
Az Azure AI Search egyes funkciói emberi interakcióra szolgálnak, és ragmintában nem hasznosak. Konkrétan kihagyhatja az olyan funkciókat, mint az automatikus kiegészítés és a javaslatok. Más funkciók, például az aspektusok és az orderby hasznosak lehetnek, de rag forgatókönyvekben nem gyakoriak.
Lásd még
- Kiterjesztett generáció lekérése: Intelligens természetes nyelvi feldolgozási modellek létrehozásának egyszerűsítése
- Bővített generáció lekérése az Azure Machine Learning parancssori folyamatával
- Azure Cognitive Search és LangChain: A továbbfejlesztett vektorkeresési képességek zökkenőmentes integrációja