Kas yra RAG? Generavimas su paieškos papildymu paprastai paaiškintas
RAG (retrieval-augmented generation, generavimas su paieškos papildymu) – būdas padaryti, kad AI modelis atsakytų naudodamas jūsų pačių informaciją. Kai kas nors užduoda klausimą, jūsų programa pirmiausia ieško dokumentuose labiausiai tinkamų ištraukų, tada jas perduoda modeliui kartu su klausimu. Modelis atsakymą rašo remdamasis tuo tekstu, o ne vien tuo, ką sužinojo mokymo metu.
Kodėl RAG svarbi kuriant su AI
Didelis kalbos modelis gerai išmano pasaulį apskritai, bet nieko nežino apie jūsų verslą: kainas, taisykles, produkto instrukciją, praėjusios savaitės palaikymo užklausas. Be to, jo mokymo duomenys turi pabaigos datą, todėl jis nežino nieko naujo. Jei vis tiek paklausite, gali gauti įtikinamai skambantį, bet klaidingą atsakymą.
Yra trys pagrindiniai būdai tai išspręsti:
| Būdas | Ką daro | Tinka |
|---|---|---|
| Įdėti viską į užklausą | Siųsti visus dokumentus su kiekvienu klausimu | Nedidelis tekstas – keli puslapiai |
| RAG | Ieškoti dokumentuose ir siųsti tik reikiamas dalis | Didesni arba kintantys rinkiniai: pagalbos centrai, instrukcijos, užrašai |
| Fine-tuning | Papildomai mokyti modelį pavyzdžiais | Tonas, formatas ir pasikartojančios užduotys – ne kintantys faktai |
Šiuolaikiniai modeliai priima ilgas užklausas, todėl trumpam DUK dažnai tinka pirmasis būdas. RAG pateisina save, kai teksto yra daugiau, nei norite siųsti kiekvieną kartą – nes kiekvienas siunčiamas žodis kainuoja pinigus ir laiką (žr. kaip mokama už LLM API).
Jei kuriate funkciją „pokalbis su mūsų dokumentais“, palaikymo asistentą ar vidinį žinių įrankį, beveik tikrai kuriate kažkokią RAG formą.
Kasdienė analogija
Įsivaizduokite atvirų knygų egzaminą. Studentas, kuris turi atsakyti iš atminties, gali ką nors supainioti ar tiesiog pramanyti. Studentas, kuris gali pirmiausia atsiversti reikiamus puslapius, perskaityti ir tik tada atsakyti, yra gerokai patikimesnis – jei tik randa reikiamus puslapius.
- Studentas – kalbos modelis.
- Vadovėlis – jūsų dokumentai.
- Reikiamų puslapių paieška – retrieval (gavimas).
- Atsakymo rašymas remiantis tais puslapiais – generation (generavimas).
RAG – tai atvirų knygų versija. Ir kaip egzamine, atsakymo kokybė labai priklauso nuo to, ar rasti teisingi puslapiai.
Kaip veikia RAG, žingsnis po žingsnio
Tipinė RAG sistema turi dvi dalis.
Dokumentų paruošimas (atliekamas iš anksto):
- Surinkti šaltinių medžiagą – pagalbos straipsnius, PDF failus, taisykles, produktų duomenis.
- Suskaldyti (chunk) – ilgus dokumentus padalinti į mažesnes dalis, dažnai po kelias pastraipas, kad paieška galėtų grąžinti tik reikiamą dalį.
- Sukurti embedding kiekvienai daliai – siųsti ją embedding modeliui, kuris tekstą paverčia embedding'u: ilgu skaičių sąrašu, perteikiančiu jo prasmę. Panašiomis temomis tekstai turi panašius skaičius.
- Išsaugoti dalis ir jų embedding'us duomenų bazėje, kurioje galima ieškoti pagal panašumą (dažnai vadinama vektorine duomenų baze arba vektoriniu indeksu).
Atsakymas į klausimą (atliekamas kiekvieną kartą):
- Paversti klausimą embedding'u tuo pačiu embedding modeliu.
- Surasti dalis, kurių embedding'ai artimiausi klausimo embedding'ui – pavyzdžiui, penkias geriausias.
- Sudaryti užklausą: instrukcijas, rastas dalis ir klausimą.
- Generuoti: kalbos modelis parašo atsakymą remdamasis tomis dalimis, idealiu atveju nurodydamas, kurias naudojo.
Būtent paieška pagal prasmę daro tai veikiančiu: klausimas apie „pinigų grąžinimą“ gali rasti dalį, pavadintą „Grąžinimo politika“, nors jose nėra nė vieno bendro žodžio.
Darbo pavyzdys: sporto klubo pagalbos asistentas
Tarkime, sporto klubas turi 40 pagalbos straipsnių ir nori pokalbio asistento savo svetainėje. Narys klausia: „Ar galiu sustabdyti narystę, kol keliauju?“
Programa sukuria klausimo embedding'ą ir suranda tris artimiausias dalis. Viena iš jų skamba taip:
Narystės sustabdymas: Nariai su mėnesiniais planais gali sustabdyti
narystę iki 2 mėnesių per metus. Prašymą pateikite registratūroje arba
programėlėje bent 7 dienas prieš sustabdymo pradžią.
Tada modeliui siunčiama užklausa atrodo maždaug taip:
Jūs esate Northside Gym pagalbos asistentas.
Atsakykite tik remdamasis žemiau pateiktais šaltiniais. Jei atsakymo
juose nėra, pasakykite, kad nežinote, ir pasiūlykite kreiptis į registratūrą.
Nurodykite, kurį šaltinį naudojote.
[Šaltinis 1: Narystės sustabdymas] Nariai su mėnesiniais planais gali...
[Šaltinis 2: Narystės nutraukimas] ...
[Šaltinis 3: Svečių bilietai] ...
Klausimas: Ar galiu sustabdyti narystę, kol keliauju?
Modelis atsako: „Taip – su mėnesiniu planu narystę galite sustabdyti iki dviejų mėnesių per metus. Prašymą pateikite registratūroje arba programėlėje bent 7 dienas prieš (šaltinis: Narystės sustabdymas).“
Klubas nieko iš naujo nemokė. Pakeitus sustabdymo taisykles, jis atnaujina straipsnį, programa perskaičiuoja tą dalį embedding'u, ir kitas atsakymas atspindi pakeitimą.
Pagrindiniai terminai
| Terminas | Reikšmė |
|---|---|
| LLM | Didelis kalbos modelis – AI, kuris parašo atsakymą. Žr. kas yra LLM. |
| Embedding | Skaičių sąrašas, atspindintis teksto prasmę. |
| Embedding modelis | Modelis, kuris kuria embedding'us. Paprastai atskiras nuo pokalbio modelio ir gerokai pigesnis. |
| Dalis (chunk) | Dokumento dalis, suformuota taip, kad ją būtų galima surasti atskirai. |
| Vektorinė duomenų bazė / vektorinė paieška | Saugykla, randanti elementus su panašiais embedding'ais. Kai kurios įprastos duomenų bazės tai siūlo taip pat – pavyzdžiui, Postgres per pgvector plėtinį. |
| Top-k | Kiek dalių grąžinama kiekvienam klausimui. |
| Hibridinė paieška | Paieškos pagal prasmę derinimas su įprasta raktažodžių paieška, kuri padeda su tiksliais terminais, pavyzdžiui produktų kodais. |
| Konteksto langas | Didžiausias teksto kiekis, kurį modelis gali priimti vienoje užklausoje. |
| Pagrindimas / citatos | Atsakymo susiejimas su konkrečiais rastais šaltiniais ir jų parodymas. |
Dažnos klaidingos nuomonės
- „RAG apmoko modelį su mano duomenimis.“ Ne. Modelis nesikeičia; jis tiesiog skaito papildomą tekstą užduodamas klausimas.
- „RAG reiškia, kad haliucinacijų nebebus.“ Reiškia, kad jų bus mažiau. Jei paieška praleidžia reikiamą dalį arba atsakymo nėra jūsų dokumentuose, modelis vis tiek gali spėti. Nurodykite jam sakyti „nežinau“ ir testuokite klausimais, kurių atsakymus jau žinote.
- „Man reikia specialios vektorinės duomenų bazės.“ Dažnai ne. Esant nedidelei duomenų apimčiai, vektorinis plėtinys jau turimoje duomenų bazėje ar net paprasta raktažodžių paieška gali pakakti.
- „Kuo didesnės dalys, tuo geriau.“ Per didelės dalys siunčia daug nereikalingo teksto (daugiau kaštų, daugiau painiavos); per mažos praranda kontekstą, dėl kurio dalis buvo prasminga. Reikės derinti.
- „Tiesiog įkelkime viską.“ Pasenę, pasikartojantys ar prieštaringi dokumentai duoda prieštaringus atsakymus. Šaltinių medžiagos tvarkymas dažnai yra didžiausias patobulinimas.
- „Bet kas gali matyti bet kurį dokumentą.“ Tik jei taip sukursite. Jei kai kurie dokumentai privatūs tam tikriems vartotojams, pati paieška turi filtruoti pagal tai, kas klausia – kitaip asistentas gali cituoti vieno kliento duomenis kitam.
Kiek tai kainuoja
RAG funkcija paprastai turi tris nuolatines išlaidas: dokumentų embedding'ų kūrimą (nedidelis ir daugiausia vienkartinis), kiekvieno klausimo embedding'ą (labai mažas) ir kalbos modelio iškvietimą (pagrindinė išlaida, augančią su siunčiamų dalių skaičiumi). Prie to dar pridedama saugykla jūsų duomenų bazėje. AI teikėjas šias išlaidas skaičiuoja jūsų paskyroje, todėl ten nustatykite išlaidų limitą.
Ką paklausti savo AI kūrimo įrankio
- „Prieš kurdami RAG patikrink: ar mūsų turinys pakankamai mažas, kad tiesiog įdėtume jį į užklausą?“
- „Suskaldyk pagalbos straipsnius į kelių pastraipų dalis, išsaugok kiekvienos dalies pavadinimą ir šaltinio nuorodą, o embedding'us laikyk mūsų duomenų bazėje.“
- „Naudok hibridinę paiešką – pagal prasmę ir pagal raktažodžius, kad produktų kodai vis tiek sutaptų.“
- „Nurodyk modeliui atsakyti tik remiantis rastais šaltiniais, sakyti, kai nežino, ir rodyti šaltinius po kiekvienu atsakymu.“
- „Ieškok tik tų dokumentų, kuriuos prisijungęs vartotojas gali matyti.“
- „Automatiškai perskaičiuok dokumento embedding'us, kai jis redaguojamas.“
- „Laikyk AI teikėjo raktą serveryje paslaptyje, niekada naršyklėje.“
- „Įrašyk kiekvieną klausimą, rastas dalis ir atsakymą, kad galėčiau peržiūrėti blogus atsakymus.“
RAG Mythex platformoje
Mythex neturi paruošto žinių bazės ar RAG produkto. Jis rašo šios funkcijos kodą jūsų programoje: jūs pateikiate savo dokumentus ir savo AI teikėjo raktą, saugomą kaip projekto paslaptis, o agentas sukuria paieškos ir pokalbio dalis, saugodamas duomenis projekto Postgres duomenų bazėje. AI naudojimas apmokestinamas jūsų teikėjo paskyroje, o ne Mythex kreditais. Dokumentacijoje siūloma pradėti nuo vienos paprastos AI funkcijos ir pridėti RAG, kai ji veikia – žr. AI programos kūrimą ir mūsų vadovus apie AI pokalbių roboto programos kūrimą bei AI funkcijų pridėjimą.
Klausimai
Kas yra RAG paprastais žodžiais?
RAG (retrieval-augmented generation, generavimas su paieškos papildymu) – būdas padaryti, kad AI modelis atsakytų remdamasis jūsų pačių informacija. Prieš atsakydamas modelis jūsų programa ieško dokumentuose ištraukų, susijusių su klausimu, ir prideda jas prie užklausos, todėl atsakymas remiasi tuo tekstu, o ne vien tuo, ką modelis sužinojo mokymo metu.
Ar RAG apmoko AI su mano duomenimis?
Ne. RAG visai nekeičia modelio. Jis ieško atitinkamo teksto tuo metu, kai užduodamas klausimas, ir perduoda jį modeliui kartu su klausimu. Pakeitus dokumentą, kitas atsakymas gali iš karto naudoti naują versiją.
Ar RAG yra tas pats, kas fine-tuning?
Ne. Fine-tuning keičia modelio elgesį papildomai mokant jį pavyzdžiais – tai lėčiau ir geriau tinka stiliui ar formatui. RAG modeliui suteikia faktus, kuriuos jis perskaito užduodant klausimą, todėl tai geriau tinka kintančioms žinioms ar tiksliai cituojamai informacijai.
Ar RAG panaikina AI haliucinacijas?
Jas sumažina, bet ne panaikina. Jei paieška suranda netinkamas ištraukas arba atsakymo nėra jūsų dokumentuose, modelis vis tiek gali spėti. Geros RAG programos nurodo modeliui sakyti, kai jis nežino, ir rodo naudotus šaltinius.