Создание чат бота для ответов на вопросы с RAG по базе документов из корпуса Lenta.ru. Основные требования:
- ответ по тексту из RAG
- обработка нерелевантных документам из RAG вопросов.
Подразумевается что данный чат бот будет использоваться в службе поддержки на предварительно сформированном корпусе данных. Предлагаю выделить роли:
- Младший менеджер (AI сущность отвечающая на вопросы на основе документов из RAG) Отвечает на основе базы данных в RAG. В случае релевантного вопроса, нахождения документов и способности дать ответ на вопрос возвращает ответ и ссылки на используемые документы. По ссылке можно перейти на портал Lenta.ru. В случае неспособности дать ответ перенаправляет запрос Старшему менеджеру.
- Старший менеджер (живой человек или как реализовано AI сущность использующая веб поиск для ответа на вопрос, если не получается ответить младшему менеджеру) Отвечает на вопрос переданный от младшего менеджера, на основании документа полученного путем веб поиска.
Для решения используется:
- Colab(Jupyter) для прототипирования и запуска чата
- основной фреймворк Langgraph
- Open AI API для доступа к генеративной LLM и модели эмбединга
- Gradio для отображения чата
- Chroma векторная база данных для построения RAG
- Tavily сервис для веб поиска
- Langsmith для трейсинга ответов
Зайти в файл T1_langgraph_rag.ipynb
щелкнуть Open in Colab
. В открывшемся колабе
в разделе Setup заполнить ключи доступа к OPENAI и TAVILY.
OPENAI_API_KEY = "" # add you OPENAI_API_KEY here
TAVILY_API_KEY = "" # add you TAVILY_API_KEY here
Далее запустить все ячейки.
Перейти в раздел UI Gradio внизу откроется чат куда можно задавать вопросы.
Ниже представлены примеры вопросов:
Q_relevant
вопросы сгенерированные к некоторым данным находящимся в RAG
Q_not_relevant
сгенерированные вопросы не относящиеся к данным находящимся в RAG
Retrivers - создание, загрузка векторной базы данных
LLMs - сущности для подготовки запросов для последующего создания графа
- Router: определение соответствия вопроса документам в БД
- Retrieval Grader: оценка документа из DB на соответствие вопросу
- Generate: Генерация ответа на вопрос на основании документов
- Hallucination Grader: Проверка основывается ли ответ на фактах
- Answer Grader: Проверка отвечает ли ответ на вопрос
- Question Re-writer: Переписывает вопрос для улучшения поиска релевантных документов
- Web Search Tool: поиск в интернете, имитация живого человека
Construct the Graph - создание графа на основе ранее определенных сущностей
Graph schema - визуальная схема графа
Use Graph - несколько тестов графа
UI Gradio - запуск чата на Gradio
link to Langsmith - ссылка на трейсинг запроса "Югославия" (есть документы в БД, но документы не дают ответ на вопрос)
- Доработать БД до гибридного поиска к примеру BM25
- Добавить реранжирование документов из БД
- Доработать Router для возможности поддержания разговора
- Улучшить промты