Manustuste kasutamine LangChainis

Manustuste Kasutamine Langchainis



Manused on tekstistringide seotuse indeks ja neid väljendatakse ujukoma täisarvude vektori (loendi) abil. Kahe vektori vaheline kaugus mõõdab nende omavahelist seost; mida väiksem on vahemaa, seda tihedam on seos. Klass LangChain Embedding on mõeldud liidesena manustamisteenustele, nagu OpenAI, HuggingFace ja teised.

Põhiklass pakub kahte meetodit, embed_query() ja embed_documents(). Esimene neist töötab ühe dokumendiga, teine ​​aga paljude dokumentidega.

See artikkel hõlmab praktilist tutvustamist LangChainis, kasutades OpenAI teksti manustamist.







Näide: ühe sisendteksti saamine OpenAI teksti manustamise abil

Esimese illustratsiooni jaoks sisestame ühe tekstistringi ja hangime selle jaoks OpenAI teksti manustamise. Programm algab vajalike teekide installimisega.



Esimene raamatukogu, mille peame oma projekti installima, on LangChain. See ei ole Pythoni standardteegiga kaasas, seega peame selle eraldi installima. Kuna langchain on PyPi-s saadaval, saame selle hõlpsalt installida, kasutades terminalis käsku pip. Seega käivitame LangChaini teegi installimiseks järgmise käsu:



$ pip installige langchain

Raamatukogu paigaldatakse kohe, kui nõuded on täidetud.





Samuti on meil vaja OpenAI teeki installimist meie projekti, et saaksime OpenAI mudelitele juurde pääseda. Selle teegi saab avada, kirjutades käsu pip:

$ pip install openai

Nüüd on mõlemad vajalikud teegid meie projektifaili installitud. Peame importima vajalikud moodulid.



alates langchain. manused . openai importida OpenAIEembeddings

importida sina

sina . umbes [ 'OPENAI_API_KEY' ] = „sk-YOUR_API_KEY”

OpenAI manustamiste saamiseks peame importima OpenAIEmbeddingsi klassi paketist 'langchain.embeddings.openai'. Seejärel määrame keskkonnamuutujaks API võtme. Erinevatele OpenAI mudelitele juurdepääsuks vajame salajast API-võtit. Selle võtme saab genereerida OpenAI platvormilt. Lihtsalt registreeruge ja hankige salajane võti oma profiili jaotisest „Kuva salajane võti”. Seda võtit saab kasutada konkreetse kliendi jaoks erinevates projektides.

Keskkonnamuutujaid kasutatakse konkreetse keskkonna API-võtmete salvestamiseks, selle asemel, et neid funktsioonidesse kõvasti kodeerida. Seega peame API võtme määramiseks keskkonnamuutujaks importima mooduli 'os'. API võtme määramiseks keskkonnamuutujaks kasutatakse meetodit os.environ(). See sisaldab nime ja väärtust. Meie määratud nimi on 'OPENAI_API_KEY' ja salajaseks võtmeks on seatud 'väärtus'.

mudel = OpenAIEembeddings ( )

sisend_tekst = 'See on demonstreerimiseks.'

tulemus = mudel. embed_query ( sisend_tekst )

printida ( tulemus )

printida ( ainult ( tulemus ) )

Oleme juba liidestanud OpenAI manustamisümbrisega. Seejärel kutsume OpenAIEMbeddingi klassi konstruktorit. OpenAI pakub mitmesuguseid manustamismudeleid, kuid nende eest peate maksma. Siin kasutame OpenAI vaikemanustusmudelit, st text-embedding-ada-002, mis on tasuta. Kui te ei esita parameetrina mudelinime, kasutatakse vaikemudelit.

Seejärel täpsustame teksti, mille manustamise peame hankima. Tekst on määratud kui 'See on demonstreerimiseks'. ja salvestage see muutujas input_text. Pärast seda kutsutakse välja pakutud teksti manustamiseks meetod embed_query() koos kasutatava mudeli ja sisendi_tekstiga, millel on tekstistring parameetrina esitatud manustamise hankimiseks. Laaditud manustused määratakse tulemusobjektile.

Lõpuks, et tulemus oleks näha, on meil Pythoni print() meetod. Peame lihtsalt objekti, mis salvestab kuvatava väärtuse, edastama meetodile print(). Seetõttu käivitame selle funktsiooni kaks korda; esiteks ujuvarvude loendi kuvamiseks ja teiseks nende väärtuste pikkuse printimiseks, kasutades selleks meetodit len().

Ujuvate väärtuste loendit saab näha järgmises hetkepildis nende väärtuste pikkusega:

Näide: mitme sisendiga teksti/dokumendi hankimine OpenAI teksti manustamise abil

Lisaks ühe sisendteksti manustamise hankimisele saame selle hankida ka mitme sisendstringi jaoks. Rakendame seda selles illustratsioonis.

Paigaldasime juba eelmisel joonisel olevad teegid. Teine teek, mille peame siia installima, on Pythoni tiktokeni teek. Selle installimiseks kirjutage terminali käsk:

$ pip installi tiktoken

Tiktokeni pakett on baitipaari kodeeringu tokenisaator. Seda kasutatakse OpenAI mudelitega ja see jagab teksti märkideks. Seda kasutatakse, kuna pakutud stringid on määratud OpenAI mudeli jaoks mõnikord pisut pikad. Niisiis, see poolitab teksti ja kodeerib need märkideks. Nüüd töötame põhiprojekti kallal.

alates langchain. manused . openai importida OpenAIEembeddings

mudel = OpenAIEembeddings ( openai_api_key = „sk-YOUR_API_KEY”

strings = ['
See on jaoks demonstratsioon. ', ' See string on samuti jaoks demonstratsioon. ', ' See on veel üks demo string . ', ' See on viimane string . ']

tulemus = model.embed_documents(strings)

print (tulemus)

print(len(tulemus))

OpenAIEMbeddingsi klass imporditakse paketist 'langchain.embeddings.openai'. Eelmises näites määrasime keskkonnamuutujaks API võtme. Kuid selle puhul edastame selle otse konstruktorile. Seega ei pea me os-moodulit siia importima.

Pärast OpenAI mudeli käivitamist, mis on OpenAIEMbeddings, edastame sellele salajase API võtme. Järgmisel real määratakse tekstistringid. Siin salvestame objektistringidesse neli tekstistringi. Need stringid on 'See on demonstreerimiseks', 'See string on ka demonstreerimiseks', 'See on veel üks demostring' ja 'See on viimane string'.

Saate määrata mitu stringi, eraldades need lihtsalt komaga. Eelmisel juhul kutsuti meetod embed_text(), kuid me ei saa seda siin kasutada, kuna see töötab ainult ühe tekstistringi puhul. Mitme stringi manustamiseks on meil meetod embed_document(). Seega nimetame seda määratud OpenAI mudeli ja argumendina tekstistringidega. Väljundit hoitakse tulemusobjektis. Lõpuks kasutatakse väljundi kuvamiseks Pythoni print() meetodit, mille parameetriks on objekti tulemus. Samuti tahame näha nende ujuvväärtuste pikkust. Seega kutsume me välja print() meetodi raames meetodi len().

Laaditud väljund on esitatud järgmisel pildil:

Järeldus

Selles postituses käsitleti LangChaini manustamise kontseptsiooni. Saime teada, mis on manustamine ja kuidas see toimib. Siin on näidatud tekstistringide manustamise praktiline rakendus. Tegime kaks illustratsiooni. Esimene näide käsitles ühe tekstistringi manustatud otsimist ja teine ​​​​näide mõistis, kuidas saada OpenAI manustamismudeli abil mitme sisendstringi manustamist.