Kā apvienot aģentus un vektoru veikalus LangChain?

Ka Apvienot Agentus Un Vektoru Veikalus Langchain



LangChain ir ietvars, kas izstrādā valodu modeļus. Milzīgs datu apjoms apmāca šos modeļus dabiskā valodā. Ir daudz datu bāzu vai vektoru veikalu, piemēram, Chroma utt., lai pārvaldītu šīs datu kopas. Apvienojot aģentu un vektoru veikalus, modelis darbojas labāk ar datiem no dažādiem domēniem. LangChain ļauj izmantot daudzus vektoru veikalus, lai apmācītu valodas modeli vai tērzēšanas robotu.

Ātrā kontūra

Šajā ziņojumā tiks rādīts:







Kā izmantot aģentu, lai atgrieztu strukturētu izvadi programmā LangChain



1. metode: aģenta apvienošana ar vektoru veikaliem



2. metode: aģenta kā maršrutētāja izmantošana





3. metode: Aģenta izmantošana ar Multi-Hop Vector Store

Secinājums



Kā izmantot aģentu, lai atgrieztu strukturētu izvadi LangChain?

Izstrādātājs izmanto aģentus, lai maršrutētu starp datu bāzēm, kas satur modeļu apmācības datus. Aģentam ir visa procesa plāns, saglabājot visas darbības. Aģentam ir instrumenti, lai veiktu visas šīs darbības, lai pabeigtu procesu. Lietotājs var arī izmantot aģentu, lai iegūtu datus no dažādiem datu krātuvēm, lai padarītu modeli daudzveidīgu.

Lai uzzinātu aģentu un vektoru veikalu apvienošanas procesu programmā LangChain, vienkārši izpildiet norādītās darbības:

1. darbība: ietvaru instalēšana

Vispirms instalējiet LangChain moduli un tā atkarības aģentu un vektoru krātuvju apvienošanai:

pip instalēt langchain

Šajā rokasgrāmatā mēs izmantojam Chroma datu bāzi, kas var uzglabāt datus dažādās vietās vai tabulās:

pip instalēt chromadb

Lai labāk izprastu datus, sadaliet lielos failus mazākos gabalos, izmantojot tikttoken marķieri:

pip instalēt tiktoken

OpenAI ir modulis, ko var izmantot, lai izveidotu lielu valodas modeli LangChain sistēmā:

pip install openai

2. darbība: OpenAI vide

Nākamais solis šeit ir iekārtot vidi izmantojot OpenAI API atslēgu, ko var iegūt no OpenAI oficiālā konta:

imports tu
imports getpass

tu . aptuveni [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API atslēga:' )

Tagad augšupielādējiet datus no vietējās sistēmas Google sadarbības programmā, lai tos izmantotu turpmāk.

no google. UN CITI imports failus

augšupielādēts = failus. augšupielādēt ( )

3. darbība: izveidojiet vektoru veikalu

Šī darbība konfigurē mūsu uzdevuma pirmo komponentu, kas ir vektoru krātuve augšupielādēto datu glabāšanai. Lai konfigurētu vektoru veikalus, ir nepieciešamas bibliotēkas, kuras var importēt no dažādām LangChain atkarībām:

no langchain. iegulšanas . openai imports OpenAIEmbeddings

#Vector saglabā atkarību, lai iegūtu nepieciešamo datu bāzi vai vektoru

no langchain. vektoru veikali imports Chroma

#Teksta sadalītājs tiek izmantots, lai lielu tekstu pārvērstu mazākos gabalos

no langchain. text_splitter imports Rakstzīmju teksta sadalītājs

no langchain. llms imports OpenAI

no langchain. document_loaders imports WebBaseLoader

no langchain. ķēdes imports RetrievalQA


llm = OpenAI ( temperatūra = 0 )

4. darbība: ceļa iestatīšana

Pēc bibliotēku importēšanas vienkārši iestatiet ceļu, lai piekļūtu vektoru krātuvēm, pirms tajā saglabājat datus:

no pathlib imports Ceļš

attiecīgās_daļas = [ ]
priekš lpp iekšā Ceļš ( '.' ) . absolūts ( ) . daļas :
attiecīgās_daļas. pievienot ( lpp )
ja attiecīgās_daļas [ - 3 : ] == [ 'langchain' , 'dokumenti' , 'moduļi' ] :
pārtraukums
#Nosacījuma paziņojums cilpas iekšpusē, lai iestatītu ceļu katrai datubāzei
doc_path = str ( Ceļš ( *attiecīgās_daļas ) / 'state_of_the_union.txt' )

5. darbība: datu ielāde un sadalīšana

Tagad vienkārši ielādējiet datus un sadaliet tos mazākos gabalos, lai uzlabotu to lasāmību un saprotamību. Izveidojiet datu iegulšanu, pārvēršot tekstu skaitļos, izveidojot to vektoru atstarpes un saglabājot tos Chorma datubāzē:

no langchain. document_loaders imports TextLoader

#Notiek datu kopas ielāde no tās ceļa un tās mazākās daļas tiek saglabātas datu bāzē

iekrāvējs = TextLoader ( doc_path )

dokumentus = iekrāvējs. slodze ( )

text_splitter = Rakstzīmju teksta sadalītājs ( chunk_size = 2000. gads , chunk_overlap = 0 )

tekstiem = text_splitter. sadalīti_dokumenti ( dokumentus )

#Konvertējiet tekstu skaitļos un saglabājiet iegulšanas datu bāzē

iegulšanas = OpenAIEmbeddings ( )

docsearch = Chroma. no_dokumentiem ( tekstiem , iegulšanas , kolekcijas_nosaukums = 'arodbiedrības valsts' )

6. darbība: retrīvera izveide

Lai apvienotu aģentu un vektoru krātuves, ir jāizveido retrīvers, izmantojot RetrievalQA() metodi no LangChain ietvara. Šī izguves metode ir ieteicama, lai iegūtu datus no vektoru veikaliem, izmantojot aģentus kā rīku darbam ar datu bāzēm:

arodbiedrības_stāvoklis = RetrievalQA. from_chain_type (

llm = llm , ķēdes_veids = 'lietas' , retrīvers = docsearch. kā_retrīvers ( )

)

Ielādējiet citu datu kopu, lai integrētu aģentu ar vairākām datu kopām vai vektoru krātuvēm:

iekrāvējs = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

Saglabājiet ruff datu kopu chromadb pēc mazāku datu gabalu izveides ar iegulšanas vektoriem:

dok = iekrāvējs. slodze ( )
ruff_texts = text_splitter. sadalīti_dokumenti ( dok )
ruff_db = Chroma. no_dokumentiem ( ruff_texts , iegulšanas , kolekcijas_nosaukums = 'ruff' )
ruff = RetrievalQA. from_chain_type (
llm = llm , ķēdes_veids = 'lietas' , retrīvers = ruff_db. kā_retrīvers ( )
)

1. metode: aģenta apvienošana ar vektoru veikaliem

Pirmā metode, kā apvienot aģentus un vektoru krātuves, lai iegūtu informāciju, ir minēta zemāk:

1. darbība: konfigurējiet rīkus

Tagad, kad vektoru krātuves ir konfigurētas, mēs virzāmies uz mūsu procesa otrā komponenta, t.i., aģenta, izveidi. Lai izveidotu procesa aģentu, importējiet bibliotēkas, izmantojot tādas atkarības kā aģenti, rīki utt.

no langchain. aģenti imports inicializēt_aģents
no langchain. aģenti imports Aģenta veids
#Rīku iegūšana no LangChain aģenta izveidei
no langchain. instrumenti imports BaseTool
no langchain. llms imports OpenAI
#LLMMathChain iegūšana no ķēdēm, lai izveidotu valodas modeli
no langchain. ķēdes imports LLMMathChain
no langchain. komunālie pakalpojumi imports SerpAPIWrapper
no langchain. aģenti imports Rīks

Konfigurējiet rīkus, kas jāizmanto ar aģentiem, izmantojot QA sistēmu vai izguvi, kas konfigurēta iepriekš, norādot rīku nosaukumu un aprakstu:

instrumenti = [
Rīks (
nosaukums = 'Savienības valsts kvalitātes nodrošināšanas sistēma' ,
func = arodbiedrības_stāvoklis. palaist ,
apraksts = 'Nodrošina atbildes uz jautājumiem, kas saistīti ar ielādēto datu kopu, ievadot kā pilnībā izveidotu jautājumu' ,
) ,
Rīks (
nosaukums = 'Ruff QA sistēma' ,
func = ruff. palaist ,
apraksts = 'Sniedz atbildes uz jautājumiem par ruff (pitona linteri) ar ievadi kā pilnībā izveidoto jautājumu' ,
) ,
]

2. darbība: inicializējiet aģentu

Kad rīki ir konfigurēti, vienkārši iestatiet aģentu inicializācijas_agent() metodes argumentā. Aģents, ko mēs šeit izmantojam, ir ZERO_SHOT_REACT_DESCRIPTION kopā ar rīkiem llm (valodas modelis) un detalizēti:

aģents = inicializēt_aģents (

instrumenti , llm , aģents = Aģenta veids. ZERO_SHOT_REACT_DESCRIPTION , runīgs = Taisnība

)

3. darbība: pārbaudiet aģentu

Vienkārši izpildiet aģentu, izmantojot metodi run (), kuras argumentā ir ietverts jautājums:

aģents. palaist (

'Ko prezidents Džo Baidens uzrunā teica par kanji brown'

)

Nākamajā ekrānuzņēmumā tiek parādīta atbilde, kas iegūta no abiem datu krātuvēm, izmantojot aģenta atmiņā saglabāto novērojumu:

2. metode: aģenta kā maršrutētāja izmantošana

Vēl viens veids, kā apvienot abus komponentus, ir izmantot aģentu kā maršrutētāju, un tālāk ir izskaidrots process:

1. darbība: konfigurējiet rīkus

Aģenta izmantošana kā maršrutētājs nozīmē, ka RetrievalQA sistēma atgriezīs izvadi tieši, jo rīki ir konfigurēti, lai tiešā veidā atgrieztu izvadi:

instrumenti = [
#rīku konfigurēšana, kas nepieciešami, lai izveidotu aģentu datu iegūšanai no datiem
Rīks (
nosaukums = 'Savienības valsts kvalitātes nodrošināšanas sistēma' ,
func = arodbiedrības_stāvoklis. palaist ,
apraksts = 'Nodrošina atbildes uz jautājumiem, kas saistīti ar ielādēto datu kopu, ievadot kā pilnīgu jautājumu' ,
return_direct = Taisnība ,
) ,
Rīks (
nosaukums = 'Ruff QA sistēma' ,
func = ruff. palaist ,
apraksts = 'Sniedz atbildes uz jautājumiem par ruff (pitona linteri) ar ievadi kā pilnīgu jautājumu' ,
return_direct = Taisnība ,
) ,
]

2. darbība. Inicializējiet un pārbaudiet aģentu

Pēc rīku iestatīšanas vienkārši iestatiet aģentu, kuru var izmantot tikai kā maršrutētāju, izmantojot inicializācijas_agent() metodi:

aģents = inicializēt_aģents (

instrumenti , llm , aģents = Aģenta veids. ZERO_SHOT_REACT_DESCRIPTION , runīgs = Taisnība

)

Pārbaudiet aģentu, dodot ievades jautājumu aģent.run() metodē, izpildot šādu komandu:

aģents. palaist (

'Ko prezidents Džo Baidens uzrunā teica par kanji brown'

)

Izvade

Izvades ekrānuzņēmumā tiek parādīts, ka aģents vienkārši ir atgriezis atbildi uz jautājumu no RetrievalQA sistēmas iegūtās datu kopas:

3. metode: Aģenta izmantošana ar Multi-Hop Vector Store

Trešā metode, kurā izstrādātāji var apvienot gan aģentu, gan vektoru krātuves, ir vairāku apiņu vektoru krātuves vaicājumi. Nākamajā sadaļā ir izskaidrots viss process:

1. darbība: konfigurējiet rīkus

Pirmais solis, kā parasti, ir to rīku konfigurācija, kas tiek izmantoti aģentu izveidei, lai iegūtu datus no datu krātuvēm:

instrumenti = [
Rīks (
nosaukums = 'Savienības valsts kvalitātes nodrošināšanas sistēma' ,
func = arodbiedrības_stāvoklis. palaist ,
apraksts = 'Sniedz atbildes uz jautājumiem, kas saistīti ar ielādēto datu kopu, ievadot kā pilnībā izveidotu jautājumu, neatsaucoties uz vietniekvārdiem no iepriekšējās sarunas' ,
) ,
Rīks (
nosaukums = 'Ruff QA sistēma' ,
func = ruff. palaist ,
apraksts = 'Nodrošina atbildes uz jautājumiem, kas saistīti ar ielādēto datu kopu, ievadot kā pilnībā izveidotu jautājumu, neatsaucoties uz iepriekšējās sarunas vietniekvārdiem' ,
) ,
]

2. darbība. Inicializējiet un pārbaudiet aģentu

Pēc tam izveidojiet aģenta mainīgo, izmantojot inicializācijas_agent() metodi ar aģenta nosaukumu:

aģents = inicializēt_aģents (

instrumenti , llm , aģents = Aģenta veids. ZERO_SHOT_REACT_DESCRIPTION , runīgs = Taisnība

)

Palaidiet aģentu, izmantojot vairāku apgriezienu jautājumu, kas satur vairāk nekā vienu aspektu vai līdzekli, jo šāds jautājums ir ietverts šajā koda blokā:

aģents. palaist (

'Kādu rīku Ruff izmanto, lai palaistu pāri Python piezīmjdatoriem, un vai kāds no runātājiem pieminēja rīku savā adresē?'

)

Izvade

Nākamajā ekrānuzņēmumā ir norādīts, ka aģentam ir jārisina jautājums, lai saprastu tā sarežģītību. Tā ir atgriezusi atbildi, ko QA sistēma izvilka no vairākiem datu krātuvēm, kuras mēs augšupielādējām iepriekš šajā procesā:

Tas viss ir par to, kā apvienot aģentus un vektoru veikalus LangChain.

Secinājums

Lai apvienotu aģentus ar vektoru krātuvēm LangChain, sāciet ar moduļu instalēšanu, lai iestatītu vidi un ielādētu datu kopas. Konfigurējiet vektoru krātuves, lai ielādētu datus, vispirms sadalot tos mazākos gabalos un pēc tam izveidojiet valodas modeli, izmantojot OpenAI() metodi. Konfigurējiet aģentu, lai to integrētu vektoru krātuvē, lai iegūtu datus dažāda veida vaicājumiem. Šajā rakstā ir aprakstīts aģentu un vektoru veikalu apvienošanas process programmā LangChain.