Как да комбинирате агенти и векторни магазини в LangChain?

Kak Da Kombinirate Agenti I Vektorni Magazini V Langchain



LangChain е рамката, която проектира езикови модели. Огромни количества данни обучават тези модели на естествен език. Има много бази данни или векторни хранилища като Chroma и т.н. за управление на тези набори от данни. Чрез комбиниране на хранилищата на агент и вектор, моделът работи по-добре с данни от различни домейни. LangChain позволява използването на много векторни магазини за обучение на езиковия модел или chatbot.

Бързо очертание

Тази публикация ще покаже:







Как да използвате агент за връщане на структуриран изход в LangChain



Метод 1: Комбиниране на агент с векторни магазини



Метод 2: Използване на агент като рутер





Метод 3: Използване на агент с Multi-Hop Vector Store

Заключение



Как да използвате агент за връщане на структуриран изход в LangChain?

Разработчикът използва агенти за маршрутизиране между базите данни, съдържащи данни за обучение за моделите. Агентът разполага с чертежа на целия процес, като съхранява всички стъпки. Агентът разполага с инструментите за извършване на всички тези дейности, за да завърши процеса. Потребителят може също да използва агента, за да получи данни от различни хранилища на данни, за да направи модела разнообразен.

За да научите процеса на комбиниране на агенти и векторни магазини в LangChain, просто следвайте изброените стъпки:

Стъпка 1: Инсталиране на Frameworks

Първо инсталирайте модула LangChain и неговите зависимости за комбиниране на агентите и векторните хранилища:

pip инсталирайте langchain

В това ръководство използваме базата данни Chroma, която може да съхранява данни на различни места или таблици:

pip инсталирайте chromadb

За да получите по-добро разбиране на данните, разделете големите файлове на по-малки части с помощта на tiktoken tokenizer:

pip инсталирайте tiktoken

OpenAI е модулът, който може да се използва за изграждане на големия езиков модел в рамката LangChain:

pip инсталирайте openai

Стъпка 2: OpenAI среда

Следващата стъпка тук е да настройте средата използвайки API ключа на OpenAI, който може да бъде извлечен от официалния акаунт на OpenAI:

импортиране Вие
импортиране getpass

Вие . приблизително [ „OPENAI_API_KEY“ ] = getpass . getpass ( „API ключ на OpenAI:“ )

Сега качете данните от локалната система в Google Collaboratory, за да ги използвате в бъдеще:

от google. ET AL импортиране файлове

качен = файлове. качване ( )

Стъпка 3: Създаване на векторен магазин

Тази стъпка конфигурира първия компонент на нашата задача, който е векторно хранилище за съхраняване на качените данни. Конфигурирането на векторните хранилища изисква библиотеките, които могат да бъдат импортирани от различни зависимости на LangChain:

от Langchain. вграждания . openai импортиране OpenAIEmbeddings

#Vector съхранява зависимост за получаване на необходимата база данни или вектор

от Langchain. векторни магазини импортиране Chroma

#Text сплитер се използва за преобразуване на големия текст в по-малки парчета

от Langchain. текстов_разделител импортиране CharacterTextSplitter

от Langchain. llms импортиране OpenAI

от Langchain. зареждащи_документи импортиране WebBaseLoader

от Langchain. вериги импортиране RetrievalQA


llm = OpenAI ( температура = 0 )

Стъпка 4: Задаване на пътя

След като импортирате библиотеките, просто задайте пътя за достъп до векторните хранилища, преди да съхраните данните в тях:

от pathlib импортиране Пътека

съответни_части = [ ]
за стр в Пътека ( '.' ) . абсолютен ( ) . части :
съответни_части. добавям ( стр )
ако съответни_части [ - 3 : ] == [ 'langchain' , 'документи' , 'модули' ] :
прекъсвам
#Conditional Statement вътре в цикъла за задаване на пътя за всяка база данни
doc_path = ул ( Пътека ( *релевантни_части ) / 'state_of_the_union.txt' )

Стъпка 5: Зареждане и разделяне на данните

Сега просто заредете данните и ги разделете на по-малки части, за да направите тяхната четливост и разбираемост по-добри. Създайте вграждания на данните, като преобразувате текста в числа, като направите техните векторни пространства и го съхраните в базата данни Chorma:

от Langchain. зареждащи_документи импортиране TextLoader

#Зареждане на набор от данни от неговия път и съхраняване на по-малките му парчета в базата данни

товарач = TextLoader ( doc_path )

документи = товарач. натоварване ( )

текстов_разделител = CharacterTextSplitter ( chunk_size = 2000 г , част_припокриване = 0 )

текстове = текстов_разделител. split_documents ( документи )

#Преобразувайте текст в числа и съхранявайте вгражданията в базата данни

вграждания = OpenAIEmbeddings ( )

docsearch = Chroma. от_документи ( текстове , вграждания , колекция_име = 'съюзно състояние' )

Стъпка 6: Създаване на ретривър

За да комбинирате агентни и векторни хранилища, е необходимо да създадете ретривър, като използвате метода RetrievalQA() от рамката LangChain. Този метод за извличане се препоръчва за получаване на данни от векторни хранилища, като се използват агентите като инструмент за работа с базите данни:

състояние_съюз = RetrievalQA. тип_от_верига (

llm = llm , тип_верига = 'неща' , ретривър = docsearch. as_retriever ( )

)

Заредете друг набор от данни, за да интегрирате агента с множество набори от данни или векторни хранилища:

товарач = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

Съхранявайте набора от данни на ruff в chromadb, след като създадете и по-малките части от данните с векторите за вграждане:

документи = товарач. натоварване ( )
ruff_texts = текстов_разделител. split_documents ( документи )
ruff_db = Chroma. от_документи ( ruff_texts , вграждания , колекция_име = 'ръф' )
ръф = RetrievalQA. тип_от_верига (
llm = llm , тип_верига = 'неща' , ретривър = ruff_db. as_retriever ( )
)

Метод 1: Комбиниране на агент с векторни магазини

Първият метод за комбиниране на агенти и векторни хранилища за извличане на информация е споменат по-долу:

Стъпка 1: Конфигуриране на инструменти

След като векторните хранилища са конфигурирани, преминаваме към изграждането на втория компонент на нашия процес, т.е. агент. За да създадете агента за процеса, импортирайте библиотеките, като използвате зависимостите като агенти, инструменти и т.н.

от Langchain. агенти импортиране инициализиращ_агент
от Langchain. агенти импортиране AgentType
#Получаване на инструменти от LangChain за изграждане на агента
от Langchain. инструменти импортиране BaseTool
от Langchain. llms импортиране OpenAI
#Получаване на LLMMathChain от вериги за изграждане на езиковия модел
от Langchain. вериги импортиране LLMMathChain
от Langchain. комунални услуги импортиране SerpAPIWrapper
от Langchain. агенти импортиране Инструмент

Конфигурирайте инструментите, които да се използват с агентите, използващи QA система или извличане, конфигурирано по-рано, с името и описанието на инструментите:

инструменти = [
Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос“ ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. бягам ,
описание = „Предоставя отговори на въпросите за ruff (линтер на Python) с въвеждане като напълно оформен въпрос“ ,
) ,
]

Стъпка 2: Инициализиране на агент

След като инструментите са конфигурирани, просто задайте агента в аргумента на метода initializa_agent(). Агентът, който използваме тук, е ZERO_SHOT_REACT_DESCRIPTION заедно с инструментите, llm (езиков модел) и verbose:

агент = инициализиращ_агент (

инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно

)

Стъпка 3: Тествайте агента

Просто изпълнете агента, като използвате метода run(), който съдържа въпроса в своя аргумент:

агент. бягам (

„Какво каза президентът Джо Байдън за канджи браун в обръщението“

)

Следната екранна снимка показва отговора, извлечен от двете хранилища на данни, използвайки наблюдението, съхранено в паметта на агента:

Метод 2: Използване на агент като рутер

Друг начин за комбиниране на двата компонента е чрез използване на агента като рутер и следното обяснява процеса:

Стъпка 1: Конфигуриране на инструменти

Използването на агента като рутер означава, че системата RetrievalQA ще върне изхода директно, тъй като инструментите са конфигурирани да връщат изхода директно:

инструменти = [
#конфигуриране на инструментите, необходими за изграждане на агента за получаване на данни от данните
Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като пълен въпрос“ ,
връщане_директно = Вярно ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. бягам ,
описание = „Предоставя отговори на въпросите за ruff (линтер на Python) с въвеждане като пълен въпрос“ ,
връщане_директно = Вярно ,
) ,
]

Стъпка 2: Инициализиране и тестване на агента

След като зададете инструментите, просто задайте агента, който може да се използва единствено като рутер, като използвате метода initialize_agent():

агент = инициализиращ_агент (

инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно

)

Тествайте агента, като зададете въпроса за въвеждане в метода agent.run(), като изпълните следната команда:

агент. бягам (

„Какво каза президентът Джо Байдън за канджи браун в обръщението“

)

Изход

Изходната екранна снимка показва, че агентът просто е върнал отговора на въпроса от набора от данни, извлечен от системата RetrievalQA:

Метод 3: Използване на агент с Multi-Hop Vector Store

Третият метод, при който разработчиците могат да комбинират агентни и векторни хранилища, е за заявките за мулти-хоп векторни магазини. Следващият раздел обяснява целия процес:

Стъпка 1: Конфигуриране на инструменти

Първата стъпка е, както обикновено, конфигурацията на инструментите, използвани за изграждане на агенти за извличане на данни от хранилищата на данни:

инструменти = [
Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос, без препратка към местоимения от предишния разговор“ ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. тичам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос, без препратка към местоимения от предишния разговор“ ,
) ,
]

Стъпка 2: Инициализиране и тестване на агента

След това изградете променливата на агента, като използвате метода initialize_agent() с името на агента:

агент = инициализиращ_агент (

инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно

)

Стартирайте агента, като използвате въпроса с няколко прехода, който съдържа повече от един аспект или функция, тъй като следният кодов блок съдържа такъв въпрос:

агент. тичам (

„Какъв инструмент използва Ruff, за да работи над преносими компютри на Python и някой от говорителите спомена ли е инструмента в своя адрес“

)

Изход

Следната екранна снимка предполага, че агентът трябва да премине през въпроса, за да разбере неговата сложност. Той върна отговора, извлечен от QA системата от множеството хранилища за данни, които качихме по-рано в процеса:

Това е всичко за това как да комбинирате агенти и векторни магазини в LangChain.

Заключение

За да комбинирате агенти с векторните хранилища в LangChain, започнете с инсталирането на модули за настройка на средата и зареждане на набори от данни. Конфигурирайте векторните хранилища за зареждане на данни, като първо ги разделите на по-малки части и след това изградете езиковия модел с помощта на метода OpenAI(). Конфигурирайте агента, за да го интегрирате с векторното хранилище за извличане на данни за различни видове заявки. Тази статия разработи подробно процеса на комбиниране на агенти и векторни хранилища в LangChain.