Skip to main content

LLM with RAG

Project description

Чат-бот РУДН на основе языковой модели 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

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_rag-0.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_rag-0.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

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

Hashes for llm_rag-0.1.tar.gz
Algorithm Hash digest
SHA256 ff3cca06bccad21913c671288f4a303633726b047f0b565633ea4b0fa84232f2
MD5 b05696267b5c72b4a8bccc9e018b037e
BLAKE2b-256 c15916d36f355405f2e67ab69f4b18fe8e8ce342a88ab4ee9b2f7f7e6b0a71d8

See more details on using hashes here.

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

Hashes for llm_rag-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8cee92b9c6eab6e623b957bfbc76c4c314b06ddbcd48fc1c60d2502b81281a2f
MD5 afca29e1c4c6f373ef0b49487bb8c6ea
BLAKE2b-256 eea1a88fa7a7d6bddd46fc2b096dcef80e54fc13057c7c955449177f9547a036

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page