Kuidas ühendada agente ja vektorpoode LangChainis?

Kuidas Uhendada Agente Ja Vektorpoode Langchainis



LangChain on raamistik, mis kujundab keelemudeleid. Suured andmemahud treenivad neid mudeleid loomulikus keeles. Nende andmekogumite haldamiseks on palju andmebaase või vektorpoode, nagu Chroma jne. Kombineerides agendi- ja vektormälu, toimib mudel paremini erinevate domeenide andmetega. LangChain võimaldab keelemudeli või vestlusroboti koolitamiseks kasutada paljusid vektoripoode.

Kiire ülevaade

See postitus näitab:







Kuidas kasutada agenti LangChainis struktureeritud väljundi tagastamiseks



1. meetod: Agensi kombineerimine vektorpoodidega



2. meetod: agendi kasutamine ruuterina





3. meetod: agendi kasutamine Multi-Hop Vector Store'iga

Järeldus



Kuidas kasutada agenti LangChainis struktureeritud väljundi tagastamiseks?

Arendaja kasutab agente, et marsruutida mudelite koolitusandmeid sisaldavate andmebaaside vahel. Agendil on kogu protsessi plaan, salvestades kõik sammud. Agendil on tööriistad kõigi nende toimingute tegemiseks protsessi lõpuleviimiseks. Kasutaja saab agenti kasutada ka andmete hankimiseks erinevatest andmesalvedest, et mudel oleks mitmekesine.

Agentide ja vektoripoodide ühendamise protsessi õppimiseks LangChainis järgige lihtsalt loetletud samme.

1. samm: raamistike installimine

Esmalt installige moodul LangChain ja selle sõltuvused agentide ja vektorisalvede kombineerimiseks:

pip install langchain

Selles juhendis kasutame Chroma andmebaasi, mis võib salvestada andmeid erinevatesse asukohtadesse või tabelitesse.

pip install chromadb

Andmete paremaks mõistmiseks jagage suured failid tiktokeni tokenisaatori abil väiksemateks tükkideks:

pip install tiktoken

OpenAI on moodul, mida saab kasutada suure keelemudeli loomiseks LangChaini raamistikus:

pip install openai

2. samm: OpenAI keskkond

Järgmine samm on siin seada keskkonda kasutades OpenAI API-võtit, mille saab välja võtta OpenAI ametlikult kontolt:

importida sina
importida saada pass

sina . umbes [ 'OPENAI_API_KEY' ] = saada pass . saada pass ( 'OpenAI API võti:' )

Nüüd laadige andmed kohalikust süsteemist üles Google'i koostöös, et neid edaspidi kasutada:

alates google. ET AL importida failid

üles laaditud = failid. Laadi üles ( )

3. samm: vektorpoe loomine

See samm konfigureerib meie ülesande esimese komponendi, mis on üleslaaditud andmete salvestamiseks vektorihoidla. Vektorihoidlate konfigureerimiseks on vaja teeke, mida saab importida LangChaini erinevatest sõltuvustest:

alates langchain. manused . openai importida OpenAIEembeddings

#Vector salvestab sõltuvuse vajaliku andmebaasi või vektori hankimiseks

alates langchain. vektorpoed importida Chroma

#Tekstijaoturit kasutatakse suure teksti teisendamiseks väiksemateks tükkideks

alates langchain. teksti_jagaja importida CharacterTextSplitter

alates langchain. llms importida OpenAI

alates langchain. document_loaders importida WebBaseLoader

alates langchain. ketid importida RetrievalQA


llm = OpenAI ( temperatuuri = 0 )

4. samm: tee määramine

Pärast teekide importimist määrake lihtsalt enne andmete salvestamist vektormäludele juurdepääsu tee:

alates pathlib importida Tee

asjakohased_osad = [ ]
jaoks lk sisse Tee ( '.' ) . absoluutne ( ) . osad :
asjakohased_osad. lisama ( lk )
kui asjakohased_osad [ - 3 : ] == [ 'langchain' , 'dokumendid' , 'moodulid' ] :
murda
#Tingimuslik lause tsükli sees, et määrata iga andmebaasi tee
doc_path = str ( Tee ( *asjakohased_osad ) / 'liit_riik.txt' )

5. samm: andmete laadimine ja tükeldamine

Nüüd lihtsalt laadige andmed ja jagage need väiksemateks tükkideks, et muuta need loetavuse ja arusaadavuse paremaks. Looge andmete manuseid, teisendades teksti numbriteks, muutes nende vektorruumid ja salvestades need Chorma andmebaasi:

alates langchain. document_loaders importida TextLoader

#Andmestiku laadimise teelt ja selle väiksemate osade salvestamiseks andmebaasi

laadur = TextLoader ( doc_path )

dokumente = laadur. koormus ( )

teksti_jagaja = CharacterTextSplitter ( tüki_suurus = 2000 , chunk_overlap = 0 )

tekstid = text_splitter. jagatud_dokumendid ( dokumente )

#Teisenda tekst numbriteks ja salvestage manustused andmebaasi

manused = OpenAIEembeddings ( )

docsearch = Chroma. from_documents ( tekstid , manused , kollektsiooni_nimi = 'liidu riik' )

6. samm: retriiveri loomine

Agendi- ja vektorpoodide ühendamiseks on vaja luua retriiver, kasutades LangChaini raamistikust meetodit RetrievalQA(). Seda otsingumeetodit soovitatakse vektorpoodidest andmete hankimiseks, kasutades agente andmebaasidega töötamiseks:

liidu_riik = RetrievalQA. from_chain_type (

llm = llm , ahela_tüüp = 'kraam' , retriiver = docsearch. retriiverina ( )

)

Laadige teine ​​andmestik, et integreerida agent mitme andmekogumi või vektorsalvega:

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

Salvestage ruffi andmestik chromadb-s pärast väiksemate andmetükkide loomist ka manustamisvektoritega:

dok = laadur. koormus ( )
ruff_texts = text_splitter. jagatud_dokumendid ( dok )
ruff_db = Chroma. from_documents ( ruff_texts , manused , kollektsiooni_nimi = 'ruff' )
ruff = RetrievalQA. from_chain_type (
llm = llm , ahela_tüüp = 'kraam' , retriiver = ruff_db. retriiverina ( )
)

1. meetod: Agensi kombineerimine vektorpoodidega

Esimest meetodit nii agentide kui ka vektormälude ühendamiseks teabe eraldamiseks mainitakse allpool:

1. samm: tööriistade konfigureerimine

Nüüd, kui vektorite poed on konfigureeritud, liigume edasi meie protsessi teise komponendi, st agendi loomise poole. Protsessi agendi loomiseks importige teegid, kasutades selliseid sõltuvusi nagu agendid, tööriistad jne.

alates langchain. agendid importida initsialiseeri_agent
alates langchain. agendid importida Agendi tüüp
#Agendi koostamiseks tööriistade hankimine LangChainist
alates langchain. tööriistad importida BaseTool
alates langchain. llms importida OpenAI
#LLMMathChaini hankimine kettidest keelemudeli koostamiseks
alates langchain. ketid importida LLMMathChain
alates langchain. kommunaalteenused importida SerpAPIWrapper
alates langchain. agendid importida Tööriist

Konfigureerige tööriistad, mida kasutatakse koos agentidega, kasutades QA süsteemi või varem konfigureeritud otsingut koos tööriistade nime ja kirjeldusega:

tööriistad = [
Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastuseid laaditud andmekogumiga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena' ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastuseid küsimustele ruffi (püütoni linteri) kohta, sisestades täielikult vormistatud küsimuse' ,
) ,
]

2. samm: lähtestage agent

Kui tööriistad on konfigureeritud, määrake agent lihtsalt meetodi inicializa_agent() argumendis. Agent, mida me siin kasutame, on ZERO_SHOT_REACT_DESCRIPTION koos tööriistadega llm (keelemudel) ja paljusõnaline:

agent = initsialiseeri_agent (

tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi

)

3. samm: testige agenti

Lihtsalt käivitage agent, kasutades meetodit run(), mis sisaldab argumendis küsimust:

agent. jooksma (

Mida ütles president Joe Biden kõnes kanji browni kohta?

)

Järgmisel ekraanipildil kuvatakse vastus, mis on eraldatud mõlemast andmesalvest, kasutades agendi mällu salvestatud vaatlust:

2. meetod: agendi kasutamine ruuterina

Teine võimalus mõlema komponendi kombineerimiseks on agendi kasutamine ruuterina ja järgmine selgitab protsessi:

1. samm: tööriistade konfigureerimine

Agendi kasutamine ruuterina tähendab, et RetrievalQA süsteem tagastab väljundi otse, kuna tööriistad on konfigureeritud väljundit otse tagastama:

tööriistad = [
#Agendi loomiseks vajalike tööriistade seadistamine andmetest andmete hankimiseks
Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastuseid laaditud andmekogumiga seotud küsimustele koos sisendiga täieliku küsimusena' ,
return_direct = Tõsi ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastuseid küsimustele ruffi (püütoni linteri) kohta, sisestades täieliku küsimuse' ,
return_direct = Tõsi ,
) ,
]

2. samm: lähtestage ja testige agenti

Pärast tööriistade seadistamist määrake lihtsalt agent, mida saab kasutada ainult ruuterina, kasutades meetodit inicialiseeritud_agent():

agent = initsialiseeri_agent (

tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi

)

Testige agenti, esitades meetodis agent.run() sisendküsimuse, käivitades järgmise käsu:

agent. jooksma (

Mida ütles president Joe Biden kõnes kanji browni kohta?

)

Väljund

Väljundi ekraanipilt näitab, et agent on lihtsalt tagastanud vastuse küsimusele RetrievalQA süsteemi ekstraktitud andmekogumist:

3. meetod: agendi kasutamine Multi-Hop Vector Store'iga

Kolmas meetod, mille abil arendajad saavad kombineerida nii agendi- kui ka vektorisalve, on mitme hüppega vektormälu päringute jaoks. Järgmine jaotis selgitab kogu protsessi:

1. samm: tööriistade konfigureerimine

Esimene samm on, nagu tavaliselt, tööriistade konfigureerimine, mida kasutatakse agentide loomiseks, et andmesalvedest andmeid ekstraheerida:

tööriistad = [
Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastused laaditud andmestikuga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena, viitamata eelmise vestluse asesõnadele' ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastused laaditud andmestikuga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena, viitamata eelmise vestluse asesõnadele' ,
) ,
]

2. samm: lähtestage ja testige agenti

Pärast seda koostage agendi muutuja, kasutades meetodit inicialize_agent() koos agendi nimega:

agent = initsialiseeri_agent (

tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi

)

Käivitage agent, kasutades mitme hüppega küsimust, mis sisaldab rohkem kui ühte aspekti või funktsiooni, kuna järgmine koodiplokk sisaldab sellist küsimust:

agent. jooksma (

'Millist tööriista kasutab ruff Pythoni märkmike üle jooksmiseks ja kas keegi kõnelejatest mainis seda tööriista oma aadressil?'

)

Väljund

Järgmine ekraanipilt viitab sellele, et agent peab küsimuse keerukuse mõistmiseks läbi töötama. See on tagastanud vastuse, mille QA süsteem eraldas mitmest andmesalvest, mille me protsessi käigus varem üles laadisime:

See kõik puudutab agentide ja vektorpoodide ühendamist LangChainis.

Järeldus

Agentide ühendamiseks vektorihoidlatega LangChainis alustage keskkonna seadistamiseks ja andmekogumite laadimiseks moodulite installimisega. Konfigureerige vektorpoed andmete laadimiseks, jagades need esmalt väiksemateks tükkideks ja seejärel koostage keelemudel OpenAI() meetodi abil. Konfigureerige agent integreerima seda vektorite salvestamisega, et ekstraheerida andmeid erinevat tüüpi päringute jaoks. Selles artiklis on käsitletud LangChainis agentide ja vektorpoodide kombineerimise protsessi.