Susiduriate su sunkumais dirbtinio intelekto arba viso paketo kūrimo srityje? Mūsų ekspertai padės jums: teiksime pritaikytus patarimus, techninę integraciją ir dar daugiau. Kreipkitės į [email protected].

RAG: atsakymai į klausimus apie srities žinias, naudojant semantinę paiešką ir generatyvinį dirbtinį intelektą

Sudėtinga atsakyti į klausimus remiantis srities žiniomis (pvz., vidaus dokumentais, sutartimis, knygomis ir pan.). Šiame straipsnyje nagrinėjame pažangų metodą, vadinamą Retrieval-Augmented Generation (RAG), kad tai būtų pasiekta labai tiksliai, derinant semantinę paiešką ir teksto generavimą su tokiais modeliais kaip ChatDolphin, LLaMA, ChatGPT, GPT-4...

Atsakymai į klausimus

Iššūkiai atsakant į klausimus apie domeno žinias

Norint atsakyti į klausimus remiantis srities žiniomis, pirmiausia reikia dirbtinio intelekto modeliui nusiųsti tam tikrą kontekstą ir tada užduoti su juo susijusį klausimą.

Pavyzdžiui, galite siųsti tokį kontekstą:

All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.

Dabar galite užduoti tokį klausimą:

When can plans be stopped?

Dirbtinis intelektas atsakytų maždaug taip:

Anytime

Išsamesnės informacijos rasite mūsų dokumentuose apie atsakymus į klausimus čia.

Šio metodo problema yra ta, kad jūsų konteksto dydis (t. y. įvesties teksto dydis) yra ribotas. Taigi negalite siųsti visų savo srities žinių kaip konteksto.

Tarkime, norite sukurti palaikymo pokalbių robotą, kuris žinotų viską apie jūsų gaminio dokumentaciją, kad galutiniai naudotojai galėtų užduoti bet kokį su gaminiu susijusį klausimą pokalbių robotui, nesikreipdami į tikrą palaikymo agentą. Greičiausiai jūsų dokumentaciją sudarys keli šimtai ar tūkstančiai žodžių ar net milijonai žodžių...

Panagrinėkime, kaip įveikti šį apribojimą ir atsakyti į klausimus labai dideliuose dokumentuose.

Semantinė paieška ir generatyvinis dirbtinis intelektas

Atsakant į klausimus galima naudoti 2 rūšių technologijas. Teksto generavimas (generatyvinis dirbtinis intelektas) ir semantinė paieška.

Pirmasis - teksto generavimas - iš esmės yra tai, ką ką tik parodžiau pirmiau. Paprastai tam reikia pažangaus teksto generavimo modelio, pavyzdžiui, "ChatDolphin", LLaMA, ChatGPT, GPT-4... Jis gali suprasti žmogaus klausimą ir atsakyti kaip žmogus. Tačiau jis neveikia didelių dokumentų. Generatyvinio dirbtinio intelekto modelio derinimas su jūsų srities žiniomis nebūtų veiksmingas, nes derinimas nėra geras metodas modeliui papildyti žiniomis.

Semantinė paieška iš esmės reiškia, kad dokumento ieškoma taip pat, kaip ir "Google", tačiau remiantis savo srities žiniomis.

Kad tai pasiektumėte, reikia konvertuoti savo vidaus dokumentus į vektorius (dar vadinamus "įterpiniais"). Tada savo klausimą taip pat turėtumėte paversti vektoriumi, o tada atlikti vektorinę paiešką (dar vadinamą "semantiniu panašumu"), kad būtų galima rasti jūsų srities žinių dalį, kuri yra artimiausia jūsų klausimui.

Pirmasis sprendimas - saugoti įterptinius duomenis specialioje vektorių duomenų bazėje, pavyzdžiui, "PG Vector". Kitas sprendimas - užkoduoti savo semantinės paieškos modelį su savo srities žiniomis ir įdiegti jį į GPU (tokį sprendimą siūlome "NLP Cloud", nes jis užtikrina geriausią atsako laiką). Tada, kai turėsite paruoštą vektorių DB arba kai jūsų modelis bus sukurtas, galėsite užduoti klausimus natūralia kalba, o jūsų dirbtinio intelekto modelis grąžins jūsų srities žinių ištrauką, geriausiai atsakančią į jūsų klausimą.

Semantinė paieška paprastai yra labai greita ir palyginti pigi. Be to, ji patikimesnė nei teksto generavimo tikslinimo strategija, todėl nesusidursite su dirbtinio intelekto haliucinacijų problema. Tačiau ji negali tinkamai "atsakyti" į klausimą. Ji paprasčiausiai grąžina teksto fragmentą, kuriame yra atsakymas į jūsų klausimą. Tuomet naudotojas turi perskaityti visą teksto fragmentą, kad rastų atsakymą į savo klausimą.

Daugiau informacijos rasite mūsų dokumentuose apie semantinę paiešką čia.

Gera žinia ta, kad norint pasiekti pažangių rezultatų galima derinti semantinę paiešką ir generatyvinį dirbtinį intelektą!

Atsakymai į klausimus, derinant semantinę paiešką ir generatyvinį dirbtinį intelektą

Norint atsakyti į klausimus, susijusius su srities žiniomis, "NLP Cloud" pasirenkame tokią strategiją: pirmiausia pateikite užklausą naudodami semantinę paiešką, kad gautumėte išteklius, kurie geriausiai atsako į jūsų klausimą, o tada naudokite teksto generavimą, kad atsakytumėte į klausimą remdamiesi šiais ištekliais kaip žmogus.

Tarkime, kad esame HP spausdintuvų perpardavinėtojai ir norime atsakyti į klientų klausimus savo svetainėje.

Pirmiausia turėsime apskaičiuoti įterpinius ir saugoti juos vektorių duomenų bazėje arba sukurti savo semantinės paieškos modelį. Čia jis bus sudarytas tik iš 3 pavyzdžių, tačiau realiame gyvenime, naudojant semantinę paiešką NLP debesyje, galima įtraukti iki 1 mln. pavyzdžių. Paprasčiausiai sukuriame CSV failą ir įdedame į jį toliau nurodytus pavyzdžius:

HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online.
Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert.
HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00.

Tada į "NLP Cloud" įkeliame savo CSV duomenų rinkinį ir spusteliame "Sukurti modelį". Po kurio laiko bus paruoštas mūsų semantinės paieškos modelis su mūsų srities žiniomis ir gausime privatų API URL, kad galėtume juo naudotis.

Užduokime klausimą savo naujam modeliui naudodami "NLP Cloud Python" klientą:

import nlpcloud

# We use a fake model name and a fake API key for illustration reasons.
client = nlpcloud.Client("custom-model/5d8e6s8w5", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.semantic_search("How long is the warranty on the HP Color LaserJet Pro?")

Modelis greitai grąžina šiuos duomenis per trumpą atsakymo laiką:

{
"search_results": [
    {
        "score": 0.99,
        "text": "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
    },
    {
        "score": 0.74,
        "text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
    },
    {
        "score": 0.68,
        "text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
    },
    ]
}

Dabar išrenkame atsakymą, kuris surinko daugiausiai balų (puikiai galėtume išrinkti ir kelis atsakymus): "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."

Šis atsakymas yra teisingas, tačiau jis nėra labai patogus, nes vartotojui reikia perskaityti gana ilgą tekstą, kad gautų atsakymą. Taigi dabar tą patį klausimą vėl užduosime savo klausimų atsakymo galutiniam taškui, naudodami "ChatDolphin" modelį. Kaip kontekstą naudosime semantinės paieškos atsakymą:

import nlpcloud

client = nlpcloud.Client("chatdolphin", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.question(
    """How long is the warranty on the HP Color LaserJet Pro?""",
    context="""Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."""
)

Pateikiamas toks atsakymas:

{
    "answer": "The warranty lasts for three years."
}

Gana gerai, ar ne?

Išvada

Nepaisant neseniai padarytos pažangos kuriant generatyvinius dirbtinio intelekto modelius, tokius kaip ChatDolphin, LLaMA, ChatGPT, GPT-4 ir t. t., dėl riboto užklausos dydžio šių puikių modelių neįmanoma panaudoti konkrečios srities žinioms atsakant į klausimus. Tikslus šių modelių derinimas tokiam naudojimo atvejui, deja, nelabai tinka...

Gera strategija - įdiegti RAG sistemą. Pirmiausia atsakykite į klausimą konvertuodami dokumentus į įterpinius ir saugodami juos vektorinėje duomenų bazėje arba sukurdami savo semantinės paieškos modelį iš dokumentų, o tada naudokite įprastą atsakymo į klausimus modelį, pagrįstą generatyviniu dirbtiniu intelektu, kad grąžintumėte žmogaus atsakymą į pradinį klausimą.

Jei norite įgyvendinti šią strategiją, nedvejodami sukurkite savo semantinės paieškos modelį "NLP Cloud": žiūrėkite susijusią dokumentaciją čia!

Mark
NLP Cloud taikomųjų programų inžinierius