
Одним из самых мощных применений LLMS является создание сложных чат-ботов с ответом на вопросы (Q & A и A), способные предоставлять точные ответы на основе конкретной информации источника. Этот проект фокусируется на разработке виртуального помощника для библиотеки сделки. Набор данных получен из 90 учебных шагов, доступных в официальной документации Deal.ii, к которой можно получить доступ здесь. Двигатель большой языковой модели (LLM) предоставляется COURE, который известен тем, что предоставляется высококачественными моделями LLM для встраивания и служб чата. Для векторной базы данных мы выбрали Chroma из-за ее природы, скорости и эффективности с открытым исходным кодом в поиске и извлечении векторов. Структура Langchain используется для эффективного управления взаимодействием между входом пользователя, обработкой запросов и поиском соответствующей информации из векторной базы данных, обеспечивая бесшовную интеграцию между различными компонентами модели.
Процесс подготовки базы данных заключается в следующем: во -первых, учебные страницы извлекаются с сайта в виде объектов документа Langchain. Чтобы улучшить скорость доступа (во время тестирования), эти объекты документа сохраняются в виде файлов JSON на локальном диске. Затем документы разделены на куски соответствующего размера (около 400 токенов на кусок с перекрытием 40 токенов). В общей сложности набор данных включает 2,3 миллиона токенов. Наконец, эти разделенные документы встроены в векторную базу данных.
Модель построена с использованием четырех цепей и трех шаблонов быстрого приглашения.
Цепочка переформулирования : эта цепочка получает вопрос пользователя и историю разговоров, а затем переформулирует вопрос, основанный на предыдущем диалоге. Например, если первый вопрос: «Что такое fe_nothing?» И второй вопрос: «Где я могу его использовать?», Цепочка переформулирования изменит второй вопрос на «Где я могу использовать fe_nothing?» Этот шаг по сути добавляет память в разговор, обеспечивая непрерывность контекста.
Многочисленная цепочка : эта цепочка принимает переформулированный вопрос и генерирует пять аналогичных вопросов, предоставляя несколько перспектив. Он выводит список вопросов Python с использованием простой функции Lambda, и любые пустые строки удаляются с использованием функции remove_empty_string в качестве последнего шага.
Поиск цепочки : эта цепь берет пять вопросов из предыдущей цепочки и запрашивает векторную базу данных. Векторная база данных ищет аналогичные векторы и получает соответствующие документы. Поскольку один и тот же документ может быть получен несколько раз для разных вопросов, уникальный набор документов создается с использованием функции get_unique_union в качестве последнего шага.
Цепочка RAG : Эта цепочка использует вопрос, историю разговоров и полученные документы из предыдущей цепочки в качестве контекста для создания окончательного ответа.
Передняя часть приложения создается с использованием ChatInterface от Gradio, с функцией отклика, предназначенной для потоковой передачи вывода в режиме реального времени. Приложение развернуто в пространствах для обнимающихся лиц и можно получить здесь.