Kako združiti agente in vektorske trgovine v LangChain?

Kako Zdruziti Agente In Vektorske Trgovine V Langchain



LangChain je ogrodje, ki oblikuje jezikovne modele. Ogromne količine podatkov usposabljajo te modele v naravnem jeziku. Za upravljanje teh naborov podatkov obstaja veliko baz podatkov ali vektorskih shramb, kot je Chroma itd. S kombiniranjem agentskih in vektorskih shramb se model bolje obnese s podatki iz različnih domen. LangChain omogoča uporabo številnih vektorskih shramb za usposabljanje jezikovnega modela ali chatbota.

Hitri oris

Ta objava bo prikazala:







Kako uporabiti agenta za vrnitev strukturiranega izhoda v LangChain



1. način: Kombinacija agenta z vektorskimi trgovinami



2. način: uporaba agenta kot usmerjevalnika





3. način: Uporaba posrednika z vektorsko shrambo z več skoki

Zaključek



Kako uporabiti agenta za vrnitev strukturiranega izhoda v LangChain?

Razvijalec uporablja agente za usmerjanje med zbirkami podatkov, ki vsebujejo podatke o usposabljanju za modele. Agent ima načrt celotnega procesa, tako da shrani vse korake. Agent ima orodja za izvajanje vseh teh dejavnosti za dokončanje postopka. Uporabnik lahko uporabi tudi agenta za pridobivanje podatkov iz različnih shramb podatkov, da bo model raznolik.

Če se želite naučiti postopka združevanja agentov in vektorskih shramb v LangChain, preprosto sledite navedenim korakom:

1. korak: Namestitev ogrodij

Najprej namestite modul LangChain in njegove odvisnosti za združevanje agentov in vektorskih shramb:

pip namestite langchain

V tem priročniku uporabljamo bazo podatkov Chroma, ki lahko shranjuje podatke na različnih lokacijah ali v tabelah:

pip namestite chromadb

Če želite bolje razumeti podatke, razdelite velike datoteke na manjše dele z uporabo tiktoken tokenizerja:

pip namestite tiktoken

OpenAI je modul, ki ga je mogoče uporabiti za izdelavo velikega jezikovnega modela v ogrodju LangChain:

pip namestite openai

2. korak: okolje OpenAI

Naslednji korak tukaj je nastavite okolje z uporabo ključa API OpenAI, ki ga je mogoče ekstrahirati iz uradnega računa OpenAI:

uvoz ti
uvoz getpass

ti . približno [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Ključ API OpenAI:' )

Zdaj naložite podatke iz lokalnega sistema v Googlovo sodelovanje, da jih boste lahko uporabili v prihodnje:

od google. ET AL uvoz datoteke

naloženo = datoteke. nalaganje ( )

3. korak: Ustvarjanje vektorske trgovine

Ta korak konfigurira prvo komponento naše naloge, ki je vektorska shramba za shranjevanje naloženih podatkov. Konfiguriranje vektorskih shramb zahteva knjižnice, ki jih je mogoče uvoziti iz različnih odvisnosti LangChaina:

od Langchain. vdelave . openai uvoz OpenAIEmbeddings

#Vector shrani odvisnost za pridobitev zahtevane baze podatkov ali vektorja

od Langchain. vektorske trgovine uvoz Chroma

#Text splitter se uporablja za pretvorbo velikega besedila v manjše dele

od Langchain. razdelilnik besedila uvoz CharacterTextSplitter

od Langchain. llms uvoz OpenAI

od Langchain. nalagalci_dokumentov uvoz WebBaseLoader

od Langchain. verige uvoz RetrievalQA


llm = OpenAI ( temperaturo = 0 )

4. korak: Nastavitev poti

Po uvozu knjižnic preprosto nastavite pot za dostop do vektorskih shramb, preden vanjo shranite podatke:

od pathlib uvoz Pot

ustrezni_deli = [ ]
za str v Pot ( '.' ) . absolutno ( ) . deli :
ustrezni_deli. priložiti ( str )
če ustrezni_deli [ - 3 : ] == [ 'langchain' , 'dokumenti' , 'moduli' ] :
odmor
#Pogojni stavek znotraj zanke za nastavitev poti za vsako bazo podatkov
doc_path = str ( Pot ( *relevantni_deli ) / 'state_of_the_union.txt' )

5. korak: Nalaganje in razdelitev podatkov

Zdaj preprosto naložite podatke in jih razdelite na manjše dele, da bosta boljša berljivost in razumljivost. Ustvarite vdelave podatkov tako, da pretvorite besedilo v številke, naredite njihove vektorske prostore in jih shranite v zbirko podatkov Chorma:

od Langchain. nalagalci_dokumentov uvoz TextLoader

#Nalaganje nabora podatkov z njegove poti in shranjevanje njegovih manjših kosov v bazo podatkov

nakladalec = TextLoader ( doc_path )

dokumenti = nakladalec. obremenitev ( )

razdelilnik besedila = CharacterTextSplitter ( velikost_kosa = 2000 , chunk_overlap = 0 )

besedila = razdelilnik besedila. split_documents ( dokumenti )

#Pretvorite besedilo v številke in shranite vdelave v zbirko podatkov

vdelave = OpenAIEmbeddings ( )

docsearch = Chroma. iz_dokumentov ( besedila , vdelave , ime_zbirke = 'stanje-unije' )

6. korak: Ustvarjanje Retrieverja

Če želite združiti agentske in vektorske shrambe, je potrebno ustvariti retriever z uporabo metode RetrievalQA() iz ogrodja LangChain. Ta način pridobivanja je priporočljiv za pridobivanje podatkov iz vektorskih shramb z uporabo agentov kot orodja za delo z bazami podatkov:

država_unije = RetrievalQA. iz_vrste_verige (

llm = llm , vrsta_verige = 'stvari' , prinašalec = docsearch. kot_prinašalec ( )

)

Naložite drug nabor podatkov, da agenta integrirate z več nabori podatkov ali vektorskimi shrambami:

nakladalec = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

Shranite nabor podatkov ruff v chromadb, potem ko ustvarite manjše dele podatkov tudi z vdelanimi vektorji:

dokumenti = nakladalec. obremenitev ( )
ruff_texts = razdelilnik besedila. split_documents ( dokumenti )
ruff_db = Chroma. iz_dokumentov ( ruff_texts , vdelave , ime_zbirke = 'ruff' )
ruff = RetrievalQA. iz_vrste_verige (
llm = llm , vrsta_verige = 'stvari' , prinašalec = ruff_db. kot_prinašalec ( )
)

1. način: Kombinacija agenta z vektorskimi trgovinami

Prva metoda združevanja agentov in vektorskih shramb za pridobivanje informacij je omenjena spodaj:

1. korak: Konfigurirajte orodja

Zdaj, ko so vektorske shrambe konfigurirane, nadaljujemo z gradnjo druge komponente našega procesa, tj. Če želite ustvariti agenta za proces, uvozite knjižnice z uporabo odvisnosti, kot so agenti, orodja itd.

od Langchain. zastopniki uvoz inicializiraj_agent
od Langchain. zastopniki uvoz AgentType
#Pridobivanje orodij iz LangChaina za izdelavo agenta
od Langchain. orodja uvoz BaseTool
od Langchain. llms uvoz OpenAI
#Pridobivanje LLMMathChain iz verig za izdelavo jezikovnega modela
od Langchain. verige uvoz LLMMathChain
od Langchain. pripomočki uvoz SerpAPIWrapper
od Langchain. zastopniki uvoz Orodje

Konfigurirajte orodja, ki jih boste uporabljali z agenti, ki uporabljajo sistem za zagotavljanje kakovosti ali predhodno konfigurirano iskanje z imenom in opisom orodij:

orodja = [
Orodje (
ime = 'State of Union QA System' ,
funk = država_unije. teči ,
opis = »Zagotavlja odgovore na vprašanja v zvezi z naloženim naborom podatkov z vnosom kot popolnoma oblikovano vprašanje« ,
) ,
Orodje (
ime = 'Ruff QA sistem' ,
funk = ruff. teči ,
opis = 'Zagotavlja odgovore na vprašanja o ruffu (python linter) z vnosom kot popolnoma oblikovanim vprašanjem' ,
) ,
]

2. korak: Inicializirajte agenta

Ko so orodja konfigurirana, preprosto nastavite agenta v argumentu metode initializa_agent(). Agent, ki ga tukaj uporabljamo, je ZERO_SHOT_REACT_DESCRIPTION skupaj z orodji, llm (jezikovni model) in verbose:

agent = inicializiraj_agent (

orodja , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verbose = Prav

)

3. korak: preizkusite agenta

Preprosto izvedite agenta z uporabo metode run(), ki vsebuje vprašanje v argumentu:

agent. teči (

'Kaj je predsednik Joe Biden rekel o kanji brown v nagovoru'

)

Naslednji posnetek zaslona prikazuje odgovor, pridobljen iz obeh podatkovnih shramb z uporabo opazovanja, shranjenega v pomnilniku agenta:

2. način: uporaba agenta kot usmerjevalnika

Drug način združevanja obeh komponent je uporaba posrednika kot usmerjevalnika, postopek pa je razložen v nadaljevanju:

1. korak: Konfigurirajte orodja

Uporaba agenta kot usmerjevalnika pomeni, da bo sistem RetrievalQA neposredno vrnil izhod, saj so orodja konfigurirana za neposredno vračanje izhoda:

orodja = [
#konfiguriranje orodij, potrebnih za izdelavo agenta za pridobivanje podatkov iz podatkov
Orodje (
ime = 'State of Union QA System' ,
funk = država_unije. teči ,
opis = »Zagotavlja odgovore na vprašanja v zvezi z naloženim naborom podatkov z vnosom kot popolnim vprašanjem« ,
return_direct = Prav ,
) ,
Orodje (
ime = 'Ruff QA sistem' ,
funk = ruff. teči ,
opis = 'Zagotavlja odgovore na vprašanja o ruffu (python linter) z vnosom kot popolnim vprašanjem' ,
return_direct = Prav ,
) ,
]

2. korak: Inicializirajte in preizkusite agenta

Po nastavitvi orodij preprosto nastavite agenta, ki se lahko uporablja izključno kot usmerjevalnik z uporabo metode initialize_agent():

agent = inicializiraj_agent (

orodja , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verbose = Prav

)

Preizkusite agenta tako, da podate vhodno vprašanje v metodi agent.run(), tako da izvedete naslednji ukaz:

agent. teči (

'Kaj je predsednik Joe Biden rekel o kanji brown v nagovoru'

)

Izhod

Izhodni posnetek zaslona prikazuje, da je agent preprosto vrnil odgovor na vprašanje iz nabora podatkov, ki ga je pridobil sistem RetrievalQA:

3. način: Uporaba posrednika z vektorsko shrambo z več skoki

Tretja metoda, pri kateri lahko razvijalci združijo agentsko in vektorsko shrambo, je za poizvedbe v vektorski shrambi z več skoki. Naslednji razdelek pojasnjuje celoten postopek:

1. korak: Konfigurirajte orodja

Prvi korak je, kot običajno, konfiguracija orodij, ki se uporabljajo za izdelavo agentov za pridobivanje podatkov iz podatkovnih shramb:

orodja = [
Orodje (
ime = 'State of Union QA System' ,
funk = država_unije. teči ,
opis = »Zagotavlja odgovore na vprašanja v zvezi z naloženim naborom podatkov z vnosom kot popolnoma oblikovanim vprašanjem, ki se ne nanaša na zaimke iz prejšnjega pogovora« ,
) ,
Orodje (
ime = 'Ruff QA sistem' ,
funk = ruff. teči ,
opis = »Zagotavlja odgovore na vprašanja v zvezi z naloženim naborom podatkov z vnosom kot popolnoma oblikovanim vprašanjem, ki se ne nanaša na zaimke iz prejšnjega pogovora« ,
) ,
]

2. korak: Inicializirajte in preizkusite agenta

Po tem zgradite spremenljivko agenta z uporabo metode initialize_agent() z imenom agenta:

agent = inicializiraj_agent (

orodja , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verbose = Prav

)

Zaženite agenta z uporabo vprašanja z več skoki, ki vsebuje več kot en vidik ali funkcijo, saj naslednji blok kode vsebuje takšno vprašanje:

agent. teči (

'Katero orodje uporablja ruff za poganjanje prenosnikov Python in ali je kdo od govornikov omenil orodje v svojem nagovoru'

)

Izhod

Naslednji posnetek zaslona nakazuje, da mora agent preučiti vprašanje, da bi razumel njegovo kompleksnost. Vrnil je odgovor, ki ga je sistem za zagotavljanje kakovosti pridobil iz več shramb podatkov, ki smo jih naložili prej med postopkom:

To je vse o tem, kako združiti agente in vektorske trgovine v LangChain.

Zaključek

Če želite združiti agente z vektorskimi shrambami v LangChainu, začnite z namestitvijo modulov za nastavitev okolja in nalaganje naborov podatkov. Konfigurirajte vektorske shrambe za nalaganje podatkov tako, da jih najprej razdelite na manjše dele in nato zgradite jezikovni model z uporabo metode OpenAI(). Konfigurirajte agenta, da ga integrirate z vektorsko shrambo za ekstrahiranje podatkov za različne vrste poizvedb. Ta članek je podrobneje razložil postopek združevanja agentov in vektorskih shramb v LangChain.