Как объединить агенты и векторные хранилища в LangChain?

Kak Ob Edinit Agenty I Vektornye Hranilisa V Langchain



LangChain — это платформа, которая разрабатывает языковые модели. Огромные объемы данных обучают эти модели на естественном языке. Для управления этими наборами данных существует множество баз данных или хранилищ векторов, таких как Chroma и т. д. Объединив хранилища агентов и векторов, модель лучше работает с данными из разных доменов. LangChain позволяет использовать множество векторных хранилищ для обучения языковой модели или чат-бота.

Краткое описание

В этом посте будет показано:







Как использовать агент для возврата структурированного вывода в LangChain



Метод 1: объединение агента с векторными хранилищами



Способ 2: использование агента в качестве маршрутизатора





Способ 3. Использование агента с многопереходным векторным хранилищем

Заключение



Как использовать агент для возврата структурированного вывода в LangChain?

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

Чтобы изучить процесс объединения агентов и векторных хранилищ в LangChain, просто выполните перечисленные шаги:

Шаг 1: Установка фреймворков

Сначала установите модуль LangChain и его зависимости для объединения агентов и векторных хранилищ:

pip установить langchain

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

pip установить хромадб

Чтобы лучше понять данные, разделите большие файлы на более мелкие фрагменты с помощью токенизатора tiktoken:

pip установить тиктокен

OpenAI — это модуль, который можно использовать для построения большой языковой модели в рамках LangChain:

pip установить openai

Шаг 2: Среда OpenAI

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

Импортировать ты
Импортировать получить пропуск

ты . примерно [ 'ОПЕНАЙ_API_KEY' ] '=' получить пропуск . получить пропуск ( «Ключ API OpenAI:» )

Теперь загрузите данные из локальной системы в коллабораторию Google, чтобы использовать их в будущем:

от Google. И ДРУГИЕ Импортировать файлы

загружено '=' файлы. загрузить ( )

Шаг 3. Создание хранилища векторов

На этом шаге настраивается первый компонент нашей задачи — векторное хранилище для хранения загруженных данных. Для настройки векторных хранилищ требуются библиотеки, которые можно импортировать из различных зависимостей LangChain:

от лангчейн. вложения . опенай Импортировать OpenAIEmbeddings

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

от лангчейн. вектормагазины Импортировать Цветность

#Разделитель текста используется для преобразования большого текста в более мелкие фрагменты.

от лангчейн. text_splitter Импортировать СимволТекстСплиттер

от лангчейн. llms Импортировать ОпенАИ

от лангчейн. document_loaders Импортировать Веббаселоадер

от лангчейн. цепи Импортировать ПоискQA


лм '=' ОпенАИ ( температура '=' 0 )

Шаг 4: Установка пути

После импорта библиотек просто задайте путь доступа к векторным хранилищам перед сохранением в них данных:

от библиотека пути Импортировать Путь

соответствующие_части '=' [ ]
для п в Путь ( '.' ) . абсолютный ( ) . части :
соответствующие_части. добавить ( п )
если соответствующие_части [ - 3 : ] == [ 'ланчейн' , 'документы' , 'модули' ] :
перерыв
#Условный оператор внутри цикла для установки пути для каждой базы данных
путь_документа '=' ул. ( Путь ( *релевантные_части ) / 'state_of_the_union.txt' )

Шаг 5. Загрузка и разделение данных

Теперь просто загрузите данные и разделите их на более мелкие фрагменты, чтобы улучшить их читаемость и понятность. Создайте встраивания данных, преобразовав текст в числа, создав их векторные пространства и сохранив их в базе данных Chorma:

от лангчейн. document_loaders Импортировать Текстовый загрузчик

#Загрузка набора данных по его пути и сохранение его меньших фрагментов в базе данных

погрузчик '=' Текстовый загрузчик ( путь_документа )

документы '=' погрузчик. нагрузка ( )

text_splitter '=' СимволТекстСплиттер ( размер_куска '=' 2000 г. , chunk_overlap '=' 0 )

тексты '=' text_splitter. Split_Documents ( документы )

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

вложения '=' OpenAIEmbeddings ( )

поиск документации '=' Цветность. from_documents ( тексты , вложения , название_коллекции '=' «союзное государство» )

Шаг 6: Создание ретривера

Для объединения агентского и векторного хранилищ необходимо создать ретривер с помощью метода RetrievalQA() из фреймворка LangChain. Этот метод поиска рекомендуется использовать для получения данных из векторных хранилищ с использованием агентов в качестве инструмента работы с базами данных:

штат_союза '=' ПоискQA. from_chain_type (

лм '=' лм , цепочка_тип '=' 'вещи' , ретривер '=' поиск документов. as_retriever ( )

)

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

погрузчик '=' Веббаселоадер ( 'https://beta.ruff.rs/docs/faq/' )

Сохраните набор данных ruff в chromadb после создания меньших фрагментов данных с векторами внедрения:

документы '=' погрузчик. нагрузка ( )
ruff_texts '=' text_splitter. Split_Documents ( документы )
ruff_db '=' Цветность. from_documents ( ruff_texts , вложения , название_коллекции '=' 'ерш' )
ерш '=' ПоискQA. from_chain_type (
лм '=' лм , цепочка_тип '=' 'вещи' , ретривер '=' ruff_db. as_retriever ( )
)

Метод 1: объединение агента с векторными хранилищами

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

Шаг 1. Настройте инструменты

Теперь, когда хранилища векторов настроены, переходим к созданию второго компонента нашего процесса, то есть агента. Чтобы создать агент для процесса, импортируйте библиотеки, используя зависимости, такие как агенты, инструменты и т. д.

от лангчейн. агенты Импортировать инициализировать_агент
от лангчейн. агенты Импортировать Тип агента
#Получение инструментов из LangChain для создания агента
от лангчейн. инструменты Импортировать Базовый инструмент
от лангчейн. llms Импортировать ОпенАИ
#Получение LLMMathChain из цепочек для построения языковой модели
от лангчейн. цепи Импортировать LLMMathChain
от лангчейн. коммунальные услуги Импортировать СерпAPIWrapper
от лангчейн. агенты Импортировать Инструмент

Настройте инструменты, которые будут использоваться с агентами, используя систему контроля качества или поиск, настроенный ранее, с указанием имени и описания инструментов:

инструменты '=' [
Инструмент (
имя '=' «Система обеспечения качества Союза» ,
функция '=' состояние_союза. бегать ,
описание '=' «Предоставляет ответы на вопросы, связанные с загруженным набором данных, с вводом в виде полностью сформированного вопроса» ,
) ,
Инструмент (
имя '=' «Система контроля качества Ерш» ,
функция '=' ерш. бегать ,
описание '=' «Предоставляет ответы на вопросы о ерше (линтере Python) с вводом в виде полностью сформированного вопроса» ,
) ,
]

Шаг 2. Инициализация агента

После настройки инструментов просто установите агент в аргументе метода Initializa_agent(). Агент, который мы здесь используем, ZERO_SHOT_REACT_DESCRIPTION вместе с инструментами, llm (языковая модель) и подробный текст:

агент '=' инициализировать_агент (

инструменты , лм , агент '=' Тип Агента. ZERO_SHOT_REACT_DESCRIPTION , подробный '=' Истинный

)

Шаг 3. Проверьте агент

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

агент. бегать (

«Что сказал в своем обращении президент Джо Байден о кандзи коричневом»

)

На следующем снимке экрана показан ответ, извлеченный из обоих хранилищ данных с использованием наблюдения, хранящегося в памяти агента:

Способ 2: использование агента в качестве маршрутизатора

Другой способ объединить оба компонента — использовать агент в качестве маршрутизатора. Ниже объясняется этот процесс:

Шаг 1. Настройте инструменты

Использование агента в качестве маршрутизатора означает, что система RetrivalQA будет возвращать выходные данные напрямую, поскольку инструменты настроены на прямой возврат выходных данных:

инструменты '=' [
#настройка инструментов, необходимых для создания агента для получения данных из данных
Инструмент (
имя '=' «Система обеспечения качества Союза» ,
функция '=' состояние_союза. бегать ,
описание '=' «Предоставляет ответы на вопросы, связанные с загруженным набором данных, с вводом в виде полного вопроса» ,
return_direct '=' Истинный ,
) ,
Инструмент (
имя '=' «Система контроля качества Ерш» ,
функция '=' ерш. бегать ,
описание '=' «Предоставляет ответы на вопросы о ерше (линтере Python) с вводом в виде полного вопроса» ,
return_direct '=' Истинный ,
) ,
]

Шаг 2. Инициализируйте и протестируйте агент

После настройки инструментов просто установите агент, который можно использовать исключительно в качестве маршрутизатора, используя метод Initialize_agent():

агент '=' инициализировать_агент (

инструменты , лм , агент '=' Тип Агента. ZERO_SHOT_REACT_DESCRIPTION , подробный '=' Истинный

)

Протестируйте агент, задав входной вопрос в методе Agent.run(), выполнив следующую команду:

агент. бегать (

«Что сказал в своем обращении президент Джо Байден о кандзи коричневом»

)

Выход

На снимке экрана вывода видно, что агент просто вернул ответ на вопрос из набора данных, извлеченного системой RetrivalQA:

Способ 3. Использование агента с многопереходным векторным хранилищем

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

Шаг 1. Настройте инструменты

Первым шагом, как обычно, является настройка инструментов, используемых для создания агентов для извлечения данных из хранилищ данных:

инструменты '=' [
Инструмент (
имя '=' «Система обеспечения качества Союза» ,
функция '=' состояние_союза. бегать ,
описание '=' «Предоставляет ответы на вопросы, связанные с загруженным набором данных, с вводом в виде полностью сформированного вопроса, без ссылки на местоимения из предыдущего разговора» ,
) ,
Инструмент (
имя '=' «Система контроля качества Ерш» ,
функция '=' ерш. бегать ,
описание '=' «Предоставляет ответы на вопросы, связанные с загруженным набором данных, с вводом в виде полностью сформированного вопроса, без ссылки на местоимения из предыдущего разговора» ,
) ,
]

Шаг 2. Инициализируйте и протестируйте агент

После этого создайте переменную агента с помощью метода инициализации_агента() с именем агента:

агент '=' инициализировать_агент (

инструменты , лм , агент '=' Тип Агента. ZERO_SHOT_REACT_DESCRIPTION , подробный '=' Истинный

)

Запустите агент, используя вопрос с несколькими переходами, который содержит более одного аспекта или функции, поскольку следующий блок кода содержит такой вопрос:

агент. бегать (

«Какой инструмент использует Рафф для работы с блокнотами Python, и упоминал ли кто-нибудь из выступавших об этом инструменте в своем выступлении»

)

Выход

На следующем снимке экрана показано, что агенту необходимо проработать вопрос, чтобы понять его сложность. Он вернул ответ, извлеченный системой контроля качества из нескольких хранилищ данных, которые мы загрузили ранее:

Вот и все о том, как объединить агентов и векторные магазины в LangChain.

Заключение

Чтобы совместить агенты с векторными хранилищами в LangChain, начните с установки модулей для настройки среды и загрузки наборов данных. Настройте векторные хранилища для загрузки данных, сначала разделив их на более мелкие фрагменты, а затем построив языковую модель с помощью метода OpenAI(). Настройте агент для его интеграции с векторным хранилищем для извлечения данных для различных типов запросов. В этой статье подробно описан процесс объединения агентов и векторных хранилищ в LangChain.