Ako skombinovať agentov a vektorové obchody v LangChain?

Ako Skombinovat Agentov A Vektorove Obchody V Langchain



LangChain je rámec, ktorý navrhuje jazykové modely. Obrovské množstvo údajov trénuje tieto modely v prirodzenom jazyku. Existuje mnoho databáz alebo vektorových úložísk ako Chroma atď. na správu týchto súborov údajov. Kombináciou agenta a vektorových úložísk model funguje lepšie s údajmi z rôznych domén. LangChain umožňuje použitie mnohých vektorových obchodov na trénovanie jazykového modelu alebo chatbota.

Rýchly prehľad

V tomto príspevku sa zobrazí:







Ako používať agenta na vrátenie štruktúrovaného výstupu v LangChain



Metóda 1: Kombinácia agenta s vektorovými obchodmi



Metóda 2: Použitie agenta ako smerovača





Metóda 3: Použitie agenta s Multi-Hop Vector Store

Záver



Ako použiť agenta na vrátenie štruktúrovaného výstupu v LangChain?

Vývojár používa agentov na smerovanie medzi databázami obsahujúcimi tréningové údaje pre modely. Agent má plán celého procesu tým, že si ukladá všetky kroky. Agent má nástroje na vykonanie všetkých týchto činností na dokončenie procesu. Používateľ môže tiež použiť agenta na získanie údajov z rôznych úložísk údajov, aby bol model rôznorodý.

Ak sa chcete naučiť proces kombinovania agentov a vektorových obchodov v LangChain, jednoducho postupujte podľa uvedených krokov:

Krok 1: Inštalácia rámcov

Najprv nainštalujte modul LangChain a jeho závislosti na kombinovanie agentov a vektorových úložísk:

pip install langchain

V tejto príručke používame databázu Chroma, ktorá môže ukladať údaje na rôzne miesta alebo tabuľky:

pip install chromadb

Ak chcete lepšie porozumieť údajom, rozdeľte veľké súbory na menšie časti pomocou tokenizéra tiktoken:

pip nainštalovať tiktoken

OpenAI je modul, ktorý možno použiť na zostavenie veľkého jazykového modelu v rámci LangChain:

pip install openai

Krok 2: Prostredie OpenAI

Ďalším krokom je tu nastaviť prostredie pomocou kľúča API OpenAI, ktorý možno extrahovať z oficiálneho účtu OpenAI:

importovať vy
importovať getpass

vy . približne [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )

Teraz odovzdajte údaje z miestneho systému do laboratória Google, aby ste ich mohli použiť v budúcnosti:

od google. ET AL importovať súbory

nahrané = súbory. nahrať ( )

Krok 3: Vytvorenie vektorového obchodu

Tento krok nakonfiguruje prvý komponent našej úlohy, ktorým je vektorové úložisko na ukladanie nahraných údajov. Konfigurácia vektorových úložísk vyžaduje knižnice, ktoré je možné importovať z rôznych závislostí LangChain:

od langchain. vsadenia . openai importovať OpenAIEmbeddings

#Vector ukladá závislosť na získanie požadovanej databázy alebo vektora

od langchain. vectorstores importovať Chroma

#Text splitter sa používa na konverziu veľkého textu na menšie časti

od langchain. text_splitter importovať CharacterTextSplitter

od langchain. llms importovať OpenAI

od langchain. nakladače dokumentov importovať WebBaseLoader

od langchain. reťaze importovať RetrievalQA


llm = OpenAI ( teplota = 0 )

Krok 4: Nastavenie cesty

Po importovaní knižníc jednoducho nastavte cestu pre prístup k vektorovým skladom pred uložením údajov do nich:

od pathlib importovať Cesta

relevantné_časti = [ ]
pre p v Cesta ( '.' ) . absolútne ( ) . časti :
relevantné_časti. priložiť ( p )
ak relevantné_časti [ - 3 : ] == [ 'langchain' , 'dokumenty' , 'moduly' ] :
prestávka
#Podmienený príkaz vo vnútri slučky na nastavenie cesty pre každú databázu
cesta_k_dokumentu = str ( Cesta ( *relevantné_časti ) / 'state_of_the_union.txt' )

Krok 5: Načítanie a rozdelenie údajov

Teraz jednoducho načítajte údaje a rozdeľte ich na menšie časti, aby boli lepšie čitateľné a zrozumiteľné. Vytvorte vloženie údajov prevedením textu na čísla, vytvorením ich vektorových medzier a ich uložením do databázy Chorma:

od langchain. nakladače dokumentov importovať TextLoader

#Načítava sa množina údajov z jej cesty a jej menšie časti sa ukladajú do databázy

nakladač = TextLoader ( cesta_k_dokumentu )

Dokumenty = nakladač. naložiť ( )

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

texty = text_splitter. rozdeliť_dokumenty ( Dokumenty )

# Preveďte text na čísla a uložte vloženie do databázy

vsadenia = OpenAIEmbeddings ( )

docsearch = Chroma. z_dokumentov ( texty , vsadenia , názov_kolekcie = 'štát únie' )

Krok 6: Vytvorenie retrievera

Ak chcete skombinovať úložiská agentov a vektorov, je potrebné vytvoriť retriever pomocou metódy RetrievalQA() z rámca LangChain. Táto metóda vyhľadávania sa odporúča na získanie údajov z vektorových skladov pomocou agentov ako nástroja na prácu s databázami:

state_of_union = RetrievalQA. from_chain_type (

llm = llm , chain_type = 'veci' , retriever = docsearch. ako_retriever ( )

)

Načítajte ďalšiu množinu údajov na integráciu agenta s viacerými množinami údajov alebo vektorovými skladmi:

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

Uložte súbor údajov ruff v chromadb po vytvorení menších častí údajov aj s vektormi na vkladanie:

dokumenty = nakladač. naložiť ( )
ruff_texts = text_splitter. rozdeliť_dokumenty ( dokumenty )
ruff_db = Chroma. z_dokumentov ( ruff_texts , vsadenia , názov_kolekcie = 'ruch' )
ruff = RetrievalQA. from_chain_type (
llm = llm , chain_type = 'veci' , retriever = ruff_db. ako_retriever ( )
)

Metóda 1: Kombinácia agenta s vektorovými obchodmi

Prvý spôsob kombinovania agentov a vektorových úložísk na extrahovanie informácií je uvedený nižšie:

Krok 1: Nakonfigurujte nástroje

Teraz, keď sú vektorové úložiská nakonfigurované, pokračujeme v budovaní druhej zložky nášho procesu, tj agenta. Ak chcete vytvoriť agenta pre proces, importujte knižnice pomocou závislostí, ako sú agenti, nástroje atď.

od langchain. agentov importovať initialize_agent
od langchain. agentov importovať Typ agenta
#Získanie nástrojov z LangChain na zostavenie agenta
od langchain. nástrojov importovať BaseTool
od langchain. llms importovať OpenAI
#Získanie LLMMathChain z reťazcov na vytvorenie jazykového modelu
od langchain. reťaze importovať LLMMathChain
od langchain. komunálne služby importovať SerpAPIWrapper
od langchain. agentov importovať Nástroj

Nakonfigurujte nástroje, ktoré sa majú používať s agentmi, pomocou systému kontroly kvality alebo skôr nakonfigurovaného vyhľadávania s názvom a popisom nástrojov:

nástrojov = [
Nástroj (
názov = 'Systém kontroly kvality štátu Únie' ,
func = state_of_union. behať ,
popis = 'Poskytuje odpovede na otázky súvisiace s načítaným súborom údajov so vstupom ako plne vytvorenou otázkou' ,
) ,
Nástroj (
názov = 'Ruff QA systém' ,
func = ruff. behať ,
popis = 'Poskytuje odpovede na otázky o ruffovi (python linter) so vstupom ako plne vytvorenou otázkou' ,
) ,
]

Krok 2: Inicializujte agenta

Keď sú nástroje nakonfigurované, jednoducho nastavte agenta v argumente metódy initializa_agent(). Agent, ktorého tu používame, je ZERO_SHOT_REACT_DESCRIPTION spolu s nástrojmi, llm (jazykový model) a podrobný:

agent = initialize_agent (

nástrojov , llm , agent = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Pravda

)

Krok 3: Otestujte agenta

Jednoducho spustite agenta pomocou metódy run(), ktorá obsahuje otázku vo svojom argumente:

agent. behať (

'Čo povedal prezident Joe Biden o kanji brown v príhovore?'

)

Nasledujúca snímka obrazovky zobrazuje odpoveď extrahovanú z oboch dátových úložísk pomocou pozorovaní uložených v pamäti agenta:

Metóda 2: Použitie agenta ako smerovača

Ďalším spôsobom, ako skombinovať obe zložky, je použitie agenta ako smerovača a nasledujúci postup vysvetľuje:

Krok 1: Nakonfigurujte nástroje

Použitie agenta ako smerovača znamená, že systém RetrievalQA vráti výstup priamo, pretože nástroje sú nakonfigurované na priame vrátenie výstupu:

nástrojov = [
#konfigurácia nástrojov potrebných na zostavenie agenta na získavanie údajov z údajov
Nástroj (
názov = 'Systém kontroly kvality štátu Únie' ,
func = state_of_union. behať ,
popis = 'Poskytuje odpovede na otázky súvisiace s načítaným súborom údajov so vstupom ako úplnou otázkou' ,
return_direct = Pravda ,
) ,
Nástroj (
názov = 'Ruff QA systém' ,
func = ruff. behať ,
popis = 'Poskytuje odpovede na otázky o ruffovi (python linter) so vstupom ako úplnou otázkou' ,
return_direct = Pravda ,
) ,
]

Krok 2: Inicializujte a otestujte agenta

Po nastavení nástrojov jednoducho nastavte agenta, ktorý môže byť použitý iba ako smerovač pomocou metódy initialize_agent():

agent = initialize_agent (

nástrojov , llm , agent = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Pravda

)

Otestujte agenta zadaním vstupnej otázky v metóde agent.run() vykonaním nasledujúceho príkazu:

agent. behať (

'Čo povedal prezident Joe Biden o kanji brown v príhovore?'

)

Výkon

Výstupná snímka obrazovky zobrazuje, že agent jednoducho vrátil odpoveď na otázku zo súboru údajov extrahovaného systémom RetrievalQA:

Metóda 3: Použitie agenta s Multi-Hop Vector Store

Tretia metóda, v ktorej môžu vývojári kombinovať agentské aj vektorové obchody, je pre multi-hop vektorové dopyty. Nasledujúca časť vysvetľuje celý proces:

Krok 1: Nakonfigurujte nástroje

Prvým krokom je, ako obvykle, konfigurácia nástrojov používaných na zostavenie agentov na extrahovanie údajov z dátových úložísk:

nástrojov = [
Nástroj (
názov = 'Systém kontroly kvality štátu Únie' ,
func = state_of_union. behať ,
popis = 'Poskytuje odpovede na otázky súvisiace s načítaným súborom údajov so vstupom ako úplne vytvorenou otázkou, ktorá neodkazuje na žiadne zámená z predchádzajúcej konverzácie' ,
) ,
Nástroj (
názov = 'Ruff QA systém' ,
func = ruff. behať ,
popis = 'Poskytuje odpovede na otázky súvisiace s načítaným súborom údajov so vstupom ako úplne vytvorenou otázkou, ktorá neodkazuje na žiadne zámená z predchádzajúcej konverzácie' ,
) ,
]

Krok 2: Inicializujte a otestujte agenta

Potom vytvorte premennú agenta pomocou metódy initialize_agent() s názvom agenta:

agent = initialize_agent (

nástrojov , llm , agent = Typ agenta. ZERO_SHOT_REACT_DESCRIPTION , podrobný = Pravda

)

Spustite agenta pomocou otázky s viacerými skokmi, ktorá obsahuje viac ako jeden aspekt alebo funkciu, pretože takúto otázku obsahuje nasledujúci blok kódu:

agent. behať (

„Aký nástroj používa ruff na spustenie notebookov Python a spomenul niekto z rečníkov tento nástroj vo svojej adrese“

)

Výkon

Nasledujúca snímka obrazovky naznačuje, že agent musí prejsť otázkou, aby pochopil jej zložitosť. Vrátila odpoveď extrahovanú systémom kontroly kvality z viacerých dátových úložísk, ktoré sme nahrali skôr v procese:

To je všetko o tom, ako skombinovať agentov a vektorové obchody v LangChain.

Záver

Ak chcete skombinovať agentov s vektorovými skladmi v LangChain, začnite inštaláciou modulov na nastavenie prostredia a načítanie množín údajov. Nakonfigurujte vektorové úložiská na načítanie údajov tak, že ich najskôr rozdelíte na menšie časti a potom vytvoríte jazykový model pomocou metódy OpenAI(). Nakonfigurujte agenta tak, aby ho integroval s vektorovým úložiskom na extrahovanie údajov pre rôzne druhy dopytov. Tento článok rozpracoval proces kombinovania agentov a vektorových obchodov v LangChain.