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

Kak Ispol Zovat Sredstvo Vosstanovlenia Roditel Skih Dokumentov V Langchain



Платформа LangChain позволяет разработчикам создавать большие языковые модели, которые могут понимать и генерировать текст на естественном языке. Модели LangChain обучаются на огромном объеме данных, поэтому модель может понимать язык, сохраняя данные в векторных хранилищах. Это также позволяет пользователю создавать средства извлечения, которые могут извлекать данные из базы данных или векторных хранилищ со всеми данными, хранящимися для модели.

В этом посте будет продемонстрирован процесс использования средства извлечения родительских документов в LangChain.

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

Средство извлечения родительских документов в LangChain можно использовать, разбивая документы на более мелкие фрагменты, чтобы они не теряли своего смысла в моменты встраивания. Можно сказать, что родительским документом является весь документ или более крупный фрагмент, из которого извлекаются более мелкие фрагменты.







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



Шаг 1. Установите модули



Сначала начните использовать средство извлечения родительских документов, установив инфраструктуру LangChain с помощью команды pip:





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

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



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

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

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

Получите модуль OpenAI, выполнив следующую команду в блокноте Python, чтобы получить его зависимости и библиотеки:

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

Шаг 2. Настройка среды и загрузка данных

Следующий шаг – настроить среду используя ключ API от учетной записи OpenAI:

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

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

Теперь загрузите документы из локальной системы после импорта библиотеки файлов, а затем вызовите метод upload():

от Google. И ДРУГИЕ Импортировать файлы
загружено '=' файлы. загрузить ( )

Шаг 3. Импортируйте библиотеки

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

от лангчейн. ретриверы Импортировать РодительскийДокументРетривер
от лангчейн. вектормагазины Импортировать цветность
от лангчейн. вложения Импортировать OpenAIEmbeddings
от лангчейн. text_splitter Импортировать РекурсивныйCharacterTextSplitter
от лангчейн. хранилище Импортировать InMemoryStore
от лангчейн. document_loaders Импортировать Текстовый загрузчик

Загрузите документ для создания ретривера с помощью методов TextLoader(), указав путь к файлам:

погрузчики '=' [
Текстовый загрузчик ( «Данные.txt» ) ,
Текстовый загрузчик ( 'state_of_the_union.txt' ) ,
]
документы '=' [ ]
для л в погрузчики:

Шаг 4: Получение полных документов

После загрузки документов/файлов в модель просто создайте вложения документов и сохраните их в векторных хранилищах:

child_splitter '=' РекурсивныйCharacterTextSplitter ( размер_куска '=' 400 )

векторный магазин '=' цветность (
название_коллекции '=' 'полные_документы' ,
встраивание_функции '=' OpenAIEmbeddings ( )
)

магазин '=' InMemoryStore ( )
ретривер '=' РодительскийДокументРетривер (
векторный магазин '=' векторный магазин ,
врачебный магазин '=' магазин ,
child_splitter '=' child_splitter ,
)

Теперь вызовите метод add_documents() с помощью средства извлечения, чтобы получить средство извлечения документов:

ретривер. add_documents ( документы , идентификаторы '=' Никто )

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

список ( магазин. доход_ключи ( ) )

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

суб_документы '=' векторный магазин. сходство_поиск ( 'Справедливость Брейер' )

Вызовите метод print(), чтобы отобразить фрагменты, вызванные в предыдущем коде на основе запроса:

Распечатать ( суб_документы [ 0 ] . страница_контент )

Вызовите полную функцию извлекателя(), чтобы получить все токены, хранящиеся в базе данных, используя следующий код:

извлеченные_документы '=' ретривер. get_relevant_documents ( 'Справедливость Брейер' )

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

только ( извлеченные_документы [ 0 ] . страница_контент )

Шаг 5: Получение больших фрагментов

Этот шаг не затронет весь документ; однако из документа потребуется взять бурундук побольше и получить из него фрагмент поменьше:

родительский_разделитель '=' РекурсивныйCharacterTextSplitter ( размер_куска '=' 2000 г. )
child_splitter '=' РекурсивныйCharacterTextSplitter ( размер_куска '=' 400 )
векторный магазин '=' цветность ( название_коллекции '=' 'split_parents' , встраивание_функции '=' OpenAIEmbeddings ( ) )
магазин '=' InMemoryStore ( )

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

ретривер '=' РодительскийДокументРетривер (
векторный магазин '=' векторный магазин ,
врачебный магазин '=' магазин ,
child_splitter '=' child_splitter ,
родительский_разделитель '=' родительский_разделитель ,
)

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

ретривер. add_documents ( документы )

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

только ( список ( магазин. доход_ключи ( ) ) )

Просто возьмите меньший фрагмент из большего, поскольку на предыдущем снимке экрана показано, что в векторном хранилище хранится 23 документа. Запрос используется для получения соответствующих данных с помощью сходство_поиск() метод получения данных из векторного хранилища:

суб_документы '=' векторный магазин. сходство_поиск ( 'Справедливость Брейер' )

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

Распечатать ( суб_документы [ 0 ] . страница_контент )

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

извлеченные_документы '=' ретривер. get_relevant_documents ( 'Справедливость Брейер' )

Получите длину полных кусков, созданных и сохраненных в базе данных:

только ( извлеченные_документы [ 0 ] . страница_контент )

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

Распечатать ( извлеченные_документы [ 0 ] . страница_контент

Вот и все, что касается процесса использования средства извлечения родительских документов в LangChain.

Заключение

Чтобы использовать средство извлечения родительских документов в LangChain, просто установите модули и настройте среду OpenAI, используя ее ключ API. После этого импортируйте необходимые библиотеки из LangChain для использования средства извлечения родительских документов, а затем загрузите документы для модели. Пользователь может использовать родительские документы как весь документ или большую часть и получить меньшую часть с помощью запроса. В этом посте подробно описан процесс использования средства извлечения родительских документов в LangChain.