Kako kombinirati agente i vektorske trgovine u LangChainu?

Kako Kombinirati Agente I Vektorske Trgovine U Langchainu



LangChain je okvir koji dizajnira jezične modele. Ogromne količine podataka treniraju ove modele u prirodnom jeziku. Postoje mnoge baze podataka ili vektorske pohrane poput Chroma itd. za upravljanje tim skupovima podataka. Kombiniranjem pohrane agenta i vektora, model radi bolje s podacima iz različitih domena. LangChain omogućuje korištenje mnogih vektorskih pohrana za obuku jezičnog modela ili chatbota.

Brzi pregled

Ovaj će post pokazati:







Kako koristiti agenta za vraćanje strukturiranog izlaza u LangChainu



Metoda 1: Kombiniranje agenta s vektorskim pohranama



Metoda 2: Korištenje agenta kao usmjerivača





Metoda 3: Korištenje agenta s Multi-Hop Vector Store

Zaključak



Kako koristiti agenta za vraćanje strukturiranog izlaza u LangChainu?

Razvojni programer koristi agente za usmjeravanje između baza podataka koje sadrže podatke o obuci za modele. Agent ima nacrt cijelog procesa pohranjujući sve korake. Agent ima alate za obavljanje svih ovih aktivnosti kako bi dovršio proces. Korisnik također može koristiti agenta za dobivanje podataka iz različitih pohrana podataka kako bi model bio raznolik.

Kako biste naučili proces kombiniranja agenata i vektorskih pohrana u LangChainu, jednostavno slijedite navedene korake:

Korak 1: Instalacija Frameworks

Najprije instalirajte modul LangChain i njegove ovisnosti za kombiniranje agenata i vektorskih pohrana:

pip instalirati langchain

U ovom vodiču koristimo Chroma bazu podataka koja može pohraniti podatke na različitim mjestima ili u tablicama:

pip instaliraj chromadb

Da biste bolje razumjeli podatke, podijelite velike datoteke u manje dijelove pomoću tiktoken tokenizera:

pip instaliraj tiktoken

OpenAI je modul koji se može koristiti za izgradnju velikog jezičnog modela u okviru LangChain:

pip instaliraj openai

Korak 2: OpenAI okruženje

Sljedeći korak ovdje je da postaviti okruženje koristeći OpenAI API ključ koji se može ekstrahirati sa službenog OpenAI računa:

uvoz vas
uvoz getpass

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

Sada prenesite podatke iz lokalnog sustava u Googleovu suradnju kako biste ih mogli koristiti u budućnosti:

iz google. ET AL uvoz datoteke

učitano = datoteke. Učitaj ( )

Korak 3: Stvaranje vektorske trgovine

Ovaj korak konfigurira prvu komponentu našeg zadatka, a to je vektorska pohrana za pohranu učitanih podataka. Konfiguriranje vektorskih pohrana zahtijeva biblioteke koje se mogu uvesti iz različitih ovisnosti LangChaina:

iz langchain. ugradnje . openai uvoz OpenAIEembeddings

#Vector pohranjuje ovisnost za dobivanje potrebne baze podataka ili vektora

iz langchain. vektorske trgovine uvoz Chroma

#Razdjelnik teksta koristi se za pretvaranje velikog teksta u manje dijelove

iz langchain. razdjelnik_teksta uvoz CharacterTextSplitter

iz langchain. llms uvoz OpenAI

iz langchain. učitavači dokumenata uvoz WebBaseLoader

iz langchain. lanci uvoz RetrievalQA


llm = OpenAI ( temperatura = 0 )

Korak 4: Postavljanje staze

Nakon uvoza knjižnica jednostavno postavite put za pristup vektorskim pohranama prije pohranjivanja podataka u njih:

iz pathlib uvoz Staza

relevantni_dijelovi = [ ]
za str u Staza ( '.' ) . apsolutni ( ) . dijelovi :
relevantni_dijelovi. dodati ( str )
ako relevantni_dijelovi [ - 3 : ] == [ 'langchain' , 'dokumenti' , 'moduli' ] :
pauza
#Uvjetna izjava unutar petlje za postavljanje staze za svaku bazu podataka
doc_path = str ( Staza ( *relevantni_dijelovi ) / 'state_of_the_union.txt' )

Korak 5: Učitavanje i dijeljenje podataka

Sada jednostavno učitajte podatke i podijelite ih na manje dijelove kako biste poboljšali njihovu čitljivost i razumljivost. Stvorite ugradnje podataka pretvaranjem teksta u brojeve čineći njihove vektorske prostore i pohranjujući ih u bazu podataka Chorma:

iz langchain. učitavači dokumenata uvoz TextLoader

#Učitavanje skupa podataka s njegovog puta i pohranjivanje njegovih manjih dijelova u bazu podataka

utovarivač = TextLoader ( doc_path )

dokumenata = utovarivač. opterećenje ( )

razdjelnik_teksta = CharacterTextSplitter ( veličina_komadka = 2000. godine , komad_preklapanja = 0 )

tekstovi = razdjelnik_teksta. split_documents ( dokumenata )

#Pretvorite tekst u brojeve i pohranite umetnute podatke u bazu podataka

ugradnje = OpenAIEembeddings ( )

docsearch = Chroma. iz_dokumenata ( tekstovi , ugradnje , naziv_zbirke = 'stanje-unije' )

Korak 6: Stvaranje retrivera

Za kombiniranje agentskih i vektorskih pohrana, potrebno je kreirati retriver koristeći RetrievalQA() metodu iz okvira LangChain. Ova metoda dohvaćanja preporučuje se za dobivanje podataka iz vektorskih pohrana pomoću agenata kao alata za rad s bazama podataka:

državna_zajednica = RetrievalQA. iz_vrste_lanca (

llm = llm , vrsta_lanca = 'stvari' , retriver = docsearch. kao_retriver ( )

)

Učitajte drugi skup podataka za integraciju agenta s više skupova podataka ili vektorskih pohrana:

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

Pohranite ruff skup podataka u chromadb nakon stvaranja manjih dijelova podataka također s vektorima za ugrađivanje:

dokumenti = utovarivač. opterećenje ( )
ruff_texts = razdjelnik_teksta. split_documents ( dokumenti )
ruff_db = Chroma. iz_dokumenata ( ruff_texts , ugradnje , naziv_zbirke = 'grgeč' )
grgeč = RetrievalQA. iz_vrste_lanca (
llm = llm , vrsta_lanca = 'stvari' , retriver = ruff_db. kao_retriver ( )
)

Metoda 1: Kombiniranje agenta s vektorskim pohranama

Prva metoda kombiniranja agenata i vektorskih pohrana za izdvajanje informacija navedena je u nastavku:

Korak 1: Konfigurirajte alate

Sada kada su vektorske pohrane konfigurirane, krećemo prema izgradnji druge komponente našeg procesa, tj. agenta. Da biste stvorili agenta za proces, uvezite biblioteke pomoću ovisnosti kao što su agenti, alati itd.

iz langchain. agenti uvoz inicijalizirati_agent
iz langchain. agenti uvoz AgentType
#Dobijanje alata od LangChaina za izradu agenta
iz langchain. alata uvoz Osnovni alat
iz langchain. llms uvoz OpenAI
#Dobijanje LLMMathChaina iz lanaca za izgradnju jezičnog modela
iz langchain. lanci uvoz LLMMathChain
iz langchain. komunalije uvoz SerpAPIWrapper
iz langchain. agenti uvoz Alat

Konfigurirajte alate koji će se koristiti s agentima koji koriste QA sustav ili prethodno konfigurirano dohvaćanje s nazivom i opisom alata:

alata = [
Alat (
Ime = 'State of Union QA System' ,
funk = državna_zajednica. trčanje ,
opis = 'Pruža odgovore na pitanja koja se odnose na učitani skup podataka s unosom kao potpuno oblikovanim pitanjem' ,
) ,
Alat (
Ime = 'Ruff QA sustav' ,
funk = grgeč. trčanje ,
opis = 'Pruža odgovore na pitanja o ruffu (python linter) s unosom kao potpuno oblikovanim pitanjem' ,
) ,
]

Korak 2: Inicijalizirajte agenta

Nakon što su alati konfigurirani, jednostavno postavite agenta u argumentu metode initializa_agent(). Agent koji ovdje koristimo je ZERO_SHOT_REACT_DESCRIPTION zajedno s alatima, llm (model jezika) i verbose:

agent = inicijalizirati_agent (

alata , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , opširno = Pravi

)

Korak 3: Testirajte agenta

Jednostavno pokrenite agenta pomoću metode run() koja sadrži pitanje u svom argumentu:

agent. trčanje (

'Što je predsjednik Joe Biden rekao o kanji brownu u obraćanju'

)

Sljedeća snimka zaslona prikazuje odgovor izvađen iz obje pohrane podataka korištenjem opažanja pohranjenih u memoriji agenta:

Metoda 2: Korištenje agenta kao usmjerivača

Drugi način kombiniranja obje komponente je korištenje agenta kao usmjerivača, a sljedeće objašnjava postupak:

Korak 1: Konfigurirajte alate

Korištenje agenta kao usmjerivača znači da će sustav RetrievalQA izravno vratiti izlaz jer su alati konfigurirani za izravno vraćanje izlaza:

alata = [
#konfiguriranje alata potrebnih za izradu agenta za dobivanje podataka iz podataka
Alat (
Ime = 'State of Union QA System' ,
funk = državna_zajednica. trčanje ,
opis = 'Pruža odgovore na pitanja koja se odnose na učitani skup podataka s unosom kao potpuno pitanje' ,
return_direct = Pravi ,
) ,
Alat (
Ime = 'Ruff QA sustav' ,
funk = grgeč. trčanje ,
opis = 'Pruža odgovore na pitanja o ruffu (python linter) s unosom kao cjelovitim pitanjem' ,
return_direct = Pravi ,
) ,
]

Korak 2: Inicijalizirajte i testirajte agenta

Nakon postavljanja alata jednostavno postavite agenta koji se može koristiti isključivo kao usmjerivač pomoću metode initialize_agent():

agent = inicijalizirati_agent (

alata , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , opširno = Pravi

)

Testirajte agenta zadavanjem ulaznog pitanja u metodi agent.run() izvršavanjem sljedeće naredbe:

agent. trčanje (

'Što je predsjednik Joe Biden rekao o kanji brownu u obraćanju'

)

Izlaz

Izlazna snimka zaslona prikazuje da je agent jednostavno vratio odgovor na pitanje iz skupa podataka koje je izdvojio sustav RetrievalQA:

Metoda 3: Korištenje agenta s Multi-Hop Vector Store

Treća metoda u kojoj programeri mogu kombinirati agentske i vektorske pohrane odnosi se na upite za pohranu vektora s više skokova. Sljedeći odjeljak objašnjava cijeli postupak:

Korak 1: Konfigurirajte alate

Prvi korak je, kao i obično, konfiguracija alata koji se koriste za izgradnju agenata za izdvajanje podataka iz pohrane podataka:

alata = [
Alat (
Ime = 'State of Union QA System' ,
funk = državna_zajednica. trčanje ,
opis = 'Pruža odgovore na pitanja koja se odnose na učitani skup podataka s unosom kao potpuno oblikovanim pitanjem, ne pozivajući se na zamjenice iz prethodnog razgovora' ,
) ,
Alat (
Ime = 'Ruff QA sustav' ,
funk = grgeč. trčanje ,
opis = 'Pruža odgovore na pitanja koja se odnose na učitani skup podataka s unosom kao potpuno oblikovanim pitanjem, ne pozivajući se na zamjenice iz prethodnog razgovora' ,
) ,
]

Korak 2: Inicijalizirajte i testirajte agenta

Nakon toga izgradite varijablu agenta pomoću metode initialize_agent() s imenom agenta:

agent = inicijalizirati_agent (

alata , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , opširno = Pravi

)

Pokrenite agenta pomoću pitanja s više skokova koje sadrži više od jednog aspekta ili značajke budući da sljedeći blok koda sadrži takvo pitanje:

agent. trčanje (

'Koji alat koristi Ruff za prelazak preko Python prijenosnih računala i je li itko od govornika spomenuo alat u svom obraćanju'

)

Izlaz

Sljedeća snimka zaslona sugerira da agent mora proći kroz pitanje kako bi razumio njegovu složenost. Vratio je odgovor koji je izdvojio QA sustav iz više pohrana podataka koje smo učitali ranije u procesu:

To je sve o tome kako kombinirati agente i vektorske trgovine u LangChainu.

Zaključak

Za kombiniranje agenata s vektorskim pohranama u LangChainu, počnite s instalacijom modula za postavljanje okruženja i učitavanje skupova podataka. Konfigurirajte vektorske pohrane za učitavanje podataka tako da ih prvo podijelite na manje dijelove, a zatim izgradite jezični model pomoću metode OpenAI(). Konfigurirajte agenta da ga integrira s vektorskom pohranom za izdvajanje podataka za različite vrste upita. Ovaj članak razradio je proces kombiniranja agenata i vektorskih pohrana u LangChainu.