Ta vodnik bo prikazal postopek dodajanja pomnilnika v verigo z več vhodi v LangChain.
Kako dodati pomnilnik v verigo z več vhodi v LangChain?
Pomnilnik je mogoče dodati LLM-jem ali chatbotom za shranjevanje najnovejših sporočil ali podatkov, tako da lahko model razume kontekst ukaza. Če se želite naučiti postopka dodajanja pomnilnika v verigo z več vhodi v LangChain, preprosto pojdite skozi naslednje korake:
1. korak: Namestite module
Najprej namestite ogrodje LangChain, saj ima različne odvisnosti za gradnjo jezikovnih modelov:
pip namestite langchain
Namestite chromadb za shranjevanje podatkov, ki jih uporablja pomnilnik v vektorski shrambi Chroma:
pip namestite chromadb
Tiktoken je tokenizer, ki se uporablja za ustvarjanje majhnih kosov velikih dokumentov, tako da jih je mogoče enostavno upravljati:
pip namestite tiktoken
OpenAI je modul, ki ga je mogoče uporabiti za gradnjo verig in LLM z uporabo metode OpenAI():
pip namestite openai
2. korak: Nastavite okolje in naložite podatke
Naslednji korak po namestitvi vseh potrebnih modulov za ta postopek je postavitev okolja z uporabo ključa API iz računa OpenAI:
uvoz tiuvoz getpass
ti . približno [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Ključ API OpenAI:' )
Naložite dokumente z uporabo knjižnice datotek za izgradnjo verig v ogrodju LangChain:
od google. ET AL uvoz datotekenaloženo = datoteke. nalaganje ( )
3. korak: Uvozite knjižnice
Ko je dokument uspešno naložen, preprosto uvozite zahtevane knjižnice iz modula Langchain:
od Langchain. vdelave . openai uvoz OpenAIEmbeddingsod Langchain. vdelave . povezovati uvoz CohereEmbeddings
od Langchain. razdelilnik besedila uvoz CharacterTextSplitter
od Langchain. vektorske trgovine . elastično_vektorsko_iskanje uvoz ElasticVectorSearch
od Langchain. vektorske trgovine uvoz Chroma
od Langchain. docstore . dokument uvoz Dokument
4. korak: Gradnja pomnilnika z uporabo Chroma Database
Zdaj začnite graditi vektorski prostor za shranjevanje vdelav in žetonov prej naloženega dokumenta:
z odprto ( 'state_of_the_union.txt' ) kot f:stanje_unije = f. prebrati ( )
razdelilnik besedila = CharacterTextSplitter ( velikost_kosa = 1000 , chunk_overlap = 0 )
besedila = razdelilnik besedila. split_text ( stanje_unije )
vdelave = OpenAIEmbeddings ( )
Konfigurirajte podatkovno bazo Chroma za shranjevanje besedila in vdelav iz dokumenta:
docsearch = Chroma. iz_besedil (besedila , vdelave , metapodatki = [ { 'vir' : jaz } za jaz v obseg ( samo ( besedila ) ) ]
)
Preizkusite pomnilnik tako, da vprašate ukaz v spremenljivki poizvedbe in nato izvedete metodo similarity_search():
poizvedbo = 'Kdaj je bil Nato ustanovljen'dokumenti = docsearch. podobnost_iskanje ( poizvedbo )
5. korak: Konfiguriranje predloge poziva
Ta korak pojasnjuje postopek konfiguriranja predloge za pozive z uvozom naslednjih knjižnic:
od Langchain. verige . vprašanje_odgovarjanje uvoz load_qa_chainod Langchain. llms uvoz OpenAI
od Langchain. pozive uvoz PromptTemplate
od Langchain. spomin uvoz ConversationBufferMemory
Po tem preprosto konfigurirajte predlogo ali strukturo za poizvedbo in zaženite verigo, ko je pomnilnik dodan modelu:
predlogo = '''Vi ste model, ki klepeta s človekomGlede na dele, izvlečene iz dolgega dokumenta in vprašanja, ustvarite končni odgovor
{kontekst}
{hist}
Človek: {input}
Klepetalni robot:'''
poziv = PromptTemplate (
vhodne_spremenljivke = [ 'zgodovina' , 'vnos' , 'kontekst' ] , predlogo = predlogo
)
spomin = ConversationBufferMemory ( pomnilniški_ključ = 'zgodovina' , vhodna_ključ = 'vnos' )
veriga = load_qa_chain (
OpenAI ( temperatura = 0 ) , vrsta_verige = 'stvari' , spomin = spomin , poziv = poziv
)
6. korak: Testiranje pomnilnika
Tukaj je čas, da preizkusite model tako, da postavite vprašanje z uporabo poizvedbene spremenljivke in nato izvedete metodo chain() z njenimi parametri:
poizvedbo = 'Kdaj je bil Nato ustanovljen'veriga ( { 'vhodni_dokumenti' : dokumenti , 'vnos' : poizvedba } , povratni_samo_izhodi = Prav )
Natisnite podatke, shranjene v vmesnem pomnilniku, saj je bil odgovor, ki ga je dal model, nedavno shranjen v pomnilniku:
tiskanje ( veriga. spomin . medpomnilnik )
To je vse o dodajanju pomnilnika v verigo z več vhodi v LangChain.
Zaključek
Če želite dodati pomnilnik v verigo z več vhodi v LangChain, preprosto namestite module in vektorsko shrambo za shranjevanje besedila in vdelav. Po tem naložite podatke/dokument iz lokalnega sistema in nato uvozite zahtevane knjižnice za shranjevanje podatkov za izgradnjo pomnilnika za LLM. Konfigurirajte predlogo poziva za shranjevanje najnovejših sporočil v vmesni pomnilnik in nato pošljite besedilo verigi. Ta priročnik podrobneje opisuje postopek dodajanja pomnilnika v verigo z več vhodi v LangChain.