Skip to main content

Чат-бот РУДН на основе языковой модели GigaChat и RAG

Росcийский университет дружбы народов (РУДН) — это международный университет, объединяющий студентов и специалистов из множества стран мира. Мы стремимся продемонстрировать технологические возможности РУДН и облегчить для будущих студентов процесс погружения в учебные процессы. Для этого мы разработали интеллектуального помощника на основе искусственного интеллекта, который поможет новым студентам быстро находить ответы на интересующие их вопросы и адаптироваться к жизни в университете.

RAG система

В проекте используется RAG (Retrieval-Augmented Generation) — подход, который сочетает поиск информации и генерацию ответов.

image.png

Это пример простой RAG системы для задач вопроса-ответной формы. Однако эта модель не умела вещей, которые для нас были важны:

  1. Помнить контекст
  2. Давать релевантный ответ на вопрос, которого нет в базе данных
  3. Не отвечать на вопросы не связанные с РУДН

И для реализации вышеперечисленных пунктов мы использовали усовершенствованную RAG систему

RAG система с агентами

image.png

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

image.png

Metadata

Release files for llm-rag 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llm-rag 0.1
File Size Uploaded Provenance
llm_rag-0.1.tar.gz 14.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for llm-rag 0.1
File Interpreter ABI Platform
llm_rag-0.1-py3-none-any.whl Python 3 none any Details

Total release size: 34.0 kB

Release files / llm_rag-0.1.tar.gz

Download URL llm_rag-0.1.tar.gz
Size 14.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ff3cca06bccad21913c671288f4a303633726b047f0b565633ea4b0fa84232f2
BLAKE2b-256 checksum
How to use checksums
c15916d36f355405f2e67ab69f4b18fe8e8ce342a88ab4ee9b2f7f7e6b0a71d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / llm_rag-0.1-py3-none-any.whl

Download URL llm_rag-0.1-py3-none-any.whl
Size 19.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8cee92b9c6eab6e623b957bfbc76c4c314b06ddbcd48fc1c60d2502b81281a2f
BLAKE2b-256 checksum
How to use checksums
eea1a88fa7a7d6bddd46fc2b096dcef80e54fc13057c7c955449177f9547a036
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Security for llm-rag 0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page