LLM with RAG
Project description
Чат-бот РУДН на основе языковой модели GigaChat и RAG
Росcийский университет дружбы народов (РУДН) — это международный университет, объединяющий студентов и специалистов из множества стран мира. Мы стремимся продемонстрировать технологические возможности РУДН и облегчить для будущих студентов процесс погружения в учебные процессы. Для этого мы разработали интеллектуального помощника на основе искусственного интеллекта, который поможет новым студентам быстро находить ответы на интересующие их вопросы и адаптироваться к жизни в университете.
RAG система
В проекте используется RAG (Retrieval-Augmented Generation) — подход, который сочетает поиск информации и генерацию ответов.
Это пример простой RAG системы для задач вопроса-ответной формы. Однако эта модель не умела вещей, которые для нас были важны:
- Помнить контекст
- Давать релевантный ответ на вопрос, которого нет в базе данных
- Не отвечать на вопросы не связанные с РУДН
И для реализации вышеперечисленных пунктов мы использовали усовершенствованную RAG систему
RAG система с агентами
1. Routing (Агент релевантности запроса)
В проекте используется агент релевантности, который классифицирует вопросы, связанные с РУДН, и отсекает нерелевантные запросы. Если вопрос относится к университету, он передаётся на следующую стадию обработки. Если нет — помощник должен сгенерировать вежливый ответ: "Извините, я отвечаю только на вопросы, связанные с РУДН. src/graph/chains/router.py
2. Retriever Node (Поиск по базе)
В системе RAG Retriever Node отвечает за поиск релевантной информации в базе данных, обеспечивая основу для точных ответов. Когда пользователь задаёт вопрос, Retriever Node просматривает документы и выбирает наиболее подходящие фрагменты. Эти данные затем передаются генератору, который на их основе формирует более точный ответ. src/graph/nodes/retrieve.py
3. Grading Documents Node (Оценка релевантности документов)
Компонент Grading Documents Node оценивает релевантность найденных документов, определяя, насколько каждый из них соответствует запросу пользователя. Он присваивает документам оценки, отражающие их полезность и точность для данного запроса. Этот процесс помогает выбрать наиболее ценные источники для формирования финального ответа, улучшая качество и точность выдачи информации. src/graph/nodes/grade.py
4. Web Search (Поиск в интернете)
Компонент Web Search используется для расширения объёма информации, доступной системе, за счёт поиска данных в интернете. Если внутренние базы данных не содержат нужной информации для ответа, система инициирует веб-поиск, чтобы получить дополнительные релевантные сведения. Это позволяет помощнику предоставлять более полные и актуальные ответы, особенно для запросов, требующих внешних данных. src/graph/nodes/web_search.py
5. Generating Answers Node (Генерация сообщения)
Компонент Generating Answers Node отвечает за создание финального ответа на основе информации, полученной от других узлов системы. Используя найденные данные, он формирует связный и точный ответ, максимально соответствующий запросу пользователя. Этот узел применяет алгоритмы генерации текста, адаптируя информацию в удобной и понятной форме. src/graph/nodes/generate.py
6. Self-Check Mechanism (Проверка на галлюцинации)
Механизм самокоррекции отвечает за проверку точности сгенерированного ответа, выявляя возможные галлюцинации — то есть неточные или бессмысленные сведения.
- Отсутствие галлюцинаций: Если ответ признан корректным, он проходит на следующую стадию проверки.
- Обнаружение галлюцинаций: При выявлении неточностей система возвращается к Generating Answers Node, чтобы переформировать ответ и улучшить его точность.
Этот механизм повышает надёжность системы, гарантируя, что пользователи получают достоверную информацию.
src/graph/chains/hallucination_grader.py
7. Validating the Final Answer (Валидация финального ответа)
На этапе валидации финального ответа система проверяет, соответствует ли он заданному вопросу.
- Да: Если ответ правильно отвечает на вопрос, он предоставляется пользователю.
- Нет: Если ответ недостаточен или неполон, система инициирует веб-поиск для получения дополнительной информации.
src/graph/chains/answer_grader.py
Как это установить и запустить
Установка
Этот код написан на Python 3.10 и требует установки пакетов, перечисленных в файле requirements.txt
Используйте следующую команду, чтобы клонировать репозиторий на свой локальный компьютер:
git clone https://github.com/mklyazhev/rudn_rag.git -b readme_branch
pip install -r requirements.txt
pip install langgraph==0.2.14
В зависимости от того где запускать бота. Необходимо установить следующие штуки. В jupyter notebook можно просто скопировать и вставить в ячейку.
import nltk
nltk.download('punkt_tab')
nltk.download('averaged_perceptron_tagger_eng')
В файле .env.dist передайте ключ от GigaChat и токен телеграмм бота, а также путь к базе данных RAG
Запуск
python main.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm_rag-0.1.tar.gz.
File metadata
- Download URL: llm_rag-0.1.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff3cca06bccad21913c671288f4a303633726b047f0b565633ea4b0fa84232f2
|
|
| MD5 |
b05696267b5c72b4a8bccc9e018b037e
|
|
| BLAKE2b-256 |
c15916d36f355405f2e67ab69f4b18fe8e8ce342a88ab4ee9b2f7f7e6b0a71d8
|
File details
Details for the file llm_rag-0.1-py3-none-any.whl.
File metadata
- Download URL: llm_rag-0.1-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cee92b9c6eab6e623b957bfbc76c4c314b06ddbcd48fc1c60d2502b81281a2f
|
|
| MD5 |
afca29e1c4c6f373ef0b49487bb8c6ea
|
|
| BLAKE2b-256 |
eea1a88fa7a7d6bddd46fc2b096dcef80e54fc13057c7c955449177f9547a036
|