Cum să combinați agenții și magazinele de vectori în LangChain?

Cum Sa Combinati Agentii Si Magazinele De Vectori In Langchain



LangChain este cadrul care proiectează modele de limbaj. Cantități masive de date antrenează aceste modele în limbaj natural. Există multe baze de date sau magazine de vectori, cum ar fi Chroma etc., pentru a gestiona aceste seturi de date. Prin combinarea depozitelor de agent și vector, modelul are performanțe mai bune cu date din diferite domenii. LangChain permite utilizarea multor magazine de vectori pentru a antrena modelul de limbaj sau chatbot.

Schiță rapidă

Această postare va arăta:







Cum să utilizați un agent pentru a returna o ieșire structurată în LangChain



Metoda 1: Combinarea agentului cu Vector Stores



Metoda 2: Utilizarea agentului ca router





Metoda 3: Utilizarea agentului cu Multi-Hop Vector Store

Concluzie



Cum să utilizați un agent pentru a returna o ieșire structurată în LangChain?

Dezvoltatorul folosește agenți pentru a ruta între bazele de date care conțin date de antrenament pentru modele. Un agent are planul întregului proces prin stocarea tuturor pașilor. Agentul are instrumentele necesare pentru a efectua toate aceste activități pentru a finaliza procesul. De asemenea, utilizatorul poate folosi agentul pentru a obține date din diferite depozite de date pentru a diversifica modelul.

Pentru a învăța procesul de combinare a agenților și a magazinelor de vectori în LangChain, pur și simplu urmați pașii enumerați:

Pasul 1: Instalarea cadrelor

Mai întâi, instalați modulul LangChain și dependențele acestuia pentru a combina agenții și magazinele de vectori:

pip install langchain

În acest ghid, folosim baza de date Chroma care poate stoca date în diferite locații sau tabele:

pip install chromadb

Pentru o mai bună înțelegere a datelor, împărțiți fișierele mari în bucăți mai mici utilizând tokenizerul tiktoken:

pip install tiktoken

OpenAI este modulul care poate fi folosit pentru a construi modelul de limbaj mare în cadrul LangChain:

pip install openai

Pasul 2: Mediul OpenAI

Următorul pas aici este să configura mediul folosind cheia API a OpenAI, care poate fi extrasă din contul oficial OpenAI:

import tu
import getpass

tu . aproximativ [ „OPENAI_API_KEY” ] = getpass . getpass ( „Cheie API OpenAI:” )

Acum, încărcați datele din sistemul local în colaboratorul Google pentru a le utiliza în viitor:

din Google. colab import fişiere

încărcat = fișiere. încărcați ( )

Pasul 3: Crearea unui magazin de vectori

Acest pas configurează prima componentă a sarcinii noastre, care este un magazin de vectori pentru stocarea datelor încărcate. Configurarea depozitelor de vectori necesită biblioteci care pot fi importate din diferite dependențe ale LangChain:

din langchain. înglobări . openai import OpenAIEmbeddings

#Vector stochează dependența pentru a obține baza de date sau vectorul necesar

din langchain. vectorstores import Chroma

#Text Splitter este folosit pentru a converti textul mare în bucăți mai mici

din langchain. text_splitter import CharacterTextSplitter

din langchain. llms import OpenAI

din langchain. document_loaders import WebBaseLoader

din langchain. lanţuri import RecuperareQA


llm = OpenAI ( temperatura = 0 )

Pasul 4: Stabilirea căii

După importarea bibliotecilor, pur și simplu setați calea pentru accesarea depozitelor de vectori înainte de a stoca datele în ele:

din calea lib import cale

părţi_relevante = [ ]
pentru p în cale ( '.' ) . absolut ( ) . părți :
părţi_relevante. adăuga ( p )
dacă părţi_relevante [ - 3 : ] == [ 'langchain' , 'docs' , 'module' ] :
pauză
#Conditional Statement în interiorul buclei pentru a seta calea pentru fiecare bază de date
doc_path = str ( cale ( *părți_relevante ) / „state_of_the_union.txt” )

Pasul 5: Încărcarea și împărțirea datelor

Acum, pur și simplu încărcați datele și împărțiți-le în bucăți mai mici pentru a le îmbunătăți lizibilitatea și înțelegerea. Creați înglobări ale datelor prin conversia textului în numere, făcându-și spațiile vectoriale și stocându-le în baza de date Chorma:

din langchain. document_loaders import TextLoader

#Încărcarea setului de date din calea acestuia și stocarea bucăților sale mai mici în baza de date

încărcător = TextLoader ( doc_path )

documente = încărcător. sarcină ( )

text_splitter = CharacterTextSplitter ( chunk_size = 2000 , chunk_overlap = 0 )

textele = text_splitter. split_documents ( documente )

#Convertiți textul în numere și stocați înglobările în baza de date

înglobări = OpenAIEmbeddings ( )

docsearch = Chroma. din_documente ( textele , înglobări , nume_colecție = 'starea-uniunii' )

Pasul 6: Crearea unui Retriever

Pentru a combina depozitele de agenți și vectori, este necesar să creați un retriever folosind metoda RetrievalQA() din cadrul LangChain. Această metodă de recuperare este recomandată pentru a obține date din magazinele de vectori folosind agenții ca instrument de lucru cu bazele de date:

stare_de_unire = RecuperareQA. din_tip_lanț (

llm = llm , tip_lanț = 'chestie' , copoi = docsearch. ca_retriever ( )

)

Încărcați un alt set de date pentru a integra agentul cu mai multe seturi de date sau magazine de vectori:

încărcător = WebBaseLoader ( „https://beta.ruff.rs/docs/faq/” )

Stocați setul de date ruff în chromadb după ce ați creat bucățile mai mici de date cu vectorii de încorporare:

docs = încărcător. sarcină ( )
ruff_texts = text_splitter. split_documents ( docs )
ruff_db = Chroma. din_documente ( ruff_texts , înglobări , nume_colecție = 'ruf' )
ruf = RecuperareQA. din_tip_lanț (
llm = llm , tip_lanț = 'chestie' , copoi = ruff_db. ca_retriever ( )
)

Metoda 1: Combinarea agentului cu Vector Stores

Prima metodă de a combina atât agenții, cât și depozitele de vectori pentru a extrage informații este menționată mai jos:

Pasul 1: Configurați instrumentele

Acum că stocurile de vectori sunt configurate, trecem spre construirea celei de-a doua componente a procesului nostru, adică agentul. Pentru a crea agentul pentru proces, importați bibliotecile folosind dependențe precum agenți, instrumente etc.

din langchain. agenţi import initialize_agent
din langchain. agenţi import AgentType
#Obținerea de instrumente de la LangChain pentru a construi agentul
din langchain. unelte import BaseTool
din langchain. llms import OpenAI
#Obținerea LLMMathChain din lanțuri pentru a construi modelul de limbaj
din langchain. lanţuri import LLMathChain
din langchain. utilitati import SerpAPIWrapper
din langchain. agenţi import Instrument

Configurați instrumentele care vor fi utilizate cu agenții utilizând sistemul QA sau recuperarea configurată mai devreme cu numele și descrierea instrumentelor:

unelte = [
Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată” ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările despre ruff (un linter python) cu intrare ca o întrebare complet formată” ,
) ,
]

Pasul 2: Inițializați agentul

Odată ce instrumentele sunt configurate, pur și simplu setați agentul în argumentul metodei initializa_agent(). Agentul pe care îl folosim aici este ZERO_SHOT_REACT_DESCRIPTION împreună cu instrumentele, llm (model de limbaj) și verbose:

agent = initialize_agent (

unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat

)

Pasul 3: Testați agentul

Pur și simplu executați agentul folosind metoda run() care conține întrebarea în argumentul său:

agent. alerga (

„Ce a spus președintele Joe Biden despre kanji maro în adresă”

)

Următoarea captură de ecran afișează răspunsul extras din ambele depozite de date folosind observația stocată în memoria agentului:

Metoda 2: Utilizarea agentului ca router

O altă modalitate de a combina ambele componente este prin utilizarea agentului ca router și următoarele explică procesul:

Pasul 1: Configurați instrumentele

Utilizarea agentului ca router înseamnă că sistemul RetrievalQA va returna rezultatul direct, deoarece instrumentele sunt configurate pentru a returna rezultatul direct:

unelte = [
#configurarea instrumentelor necesare pentru a construi agentul pentru obținerea datelor din date
Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca întrebare completă” ,
return_direct = Adevărat ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările despre ruff (un linter python) cu intrare ca întrebare completă” ,
return_direct = Adevărat ,
) ,
]

Pasul 2: Inițializați și testați agentul

După setarea instrumentelor, pur și simplu setați agentul care poate fi folosit doar ca router folosind metoda initialize_agent():

agent = initialize_agent (

unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat

)

Testați agentul dând întrebarea de intrare în metoda agent.run() executând următoarea comandă:

agent. alerga (

„Ce a spus președintele Joe Biden despre kanji maro în adresă”

)

Ieșire

Captura de ecran de ieșire arată că agentul a returnat pur și simplu răspunsul la întrebare din setul de date extras de sistemul RetrievalQA:

Metoda 3: Utilizarea agentului cu Multi-Hop Vector Store

A treia metodă în care dezvoltatorii pot combina ambele depozite de agenți și vectori este pentru interogările de stocare de vectori multi-hop. Următoarea secțiune explică procesul complet:

Pasul 1: Configurați instrumentele

Primul pas este, ca de obicei, configurarea instrumentelor utilizate pentru construirea agenților pentru extragerea datelor din depozitele de date:

unelte = [
Instrument (
Nume = „Sistemul QA al statului Uniunii” ,
func = stare_de_unire. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată, fără referire la niciun pronume din conversația anterioară” ,
) ,
Instrument (
Nume = „Sistemul Ruff QA” ,
func = ruf. alerga ,
Descriere = „Oferă răspunsuri la întrebările legate de setul de date încărcat cu intrare ca o întrebare complet formată, fără referire la niciun pronume din conversația anterioară” ,
) ,
]

Pasul 2: Inițializați și testați agentul

După aceea, construiți variabila agent folosind metoda initialize_agent() cu numele agentului:

agent = initialize_agent (

unelte , llm , agent = AgentType. ZERO_SHOT_REACT_DESCRIPTION , verboroasă = Adevărat

)

Rulați agentul folosind întrebarea multi-hop care conține mai multe aspecte sau caracteristici, deoarece următorul bloc de cod conține o astfel de întrebare:

agent. alerga (

„Ce instrument folosește Ruff pentru a rula notebook-urile Python și a menționat vreunul dintre vorbitori instrumentul în adresa lor”

)

Ieșire

Următoarea captură de ecran sugerează că agentul trebuie să rezolve întrebarea pentru a înțelege complexitatea acesteia. A returnat răspunsul extras de sistemul QA din multiplele depozite de date pe care le-am încărcat mai devreme în proces:

Acesta este totul despre cum să combinați agenții și magazinele de vectori în LangChain.

Concluzie

Pentru a combina agenții cu magazinele de vectori din LangChain, începeți cu instalarea modulelor pentru a configura mediul și a încărca seturile de date. Configurați depozitele de vectori pentru a încărca datele împărțindu-le mai întâi în bucăți mai mici și apoi construiți modelul de limbaj folosind metoda OpenAI(). Configurați agentul pentru a-l integra cu magazinul de vectori pentru a extrage date pentru diferite tipuri de interogări. Acest articol a elaborat procesul de combinare a agenților și a magazinelor de vectori în LangChain.