В этом посте будет продемонстрирован процесс использования средства извлечения родительских документов в 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.