Содержание
Приложение позволяет загружать PDF-документы, извлекать из них текст (включая сканы через OCR), преобразовывать текст в векторные представления и использовать локальную языковую модель (LLM) для ответов на вопросы с контекстом из загруженных документов.
Основные возможности:
- Многопользовательская система с авторизацией
- Графический интерфейс на базе Flet
- Разделение документов по коллекциям
- Сохранение истории диалогов
- Автоматическое дополнение запросов контекстом из документов (RAG)
- Синхронизировать информацию об обновлении пакетов программ:
sudo apt-get update- Установить Python
sudo apt-get install -y python3 python3-venv- Установить инструменты для работы с файлами
sudo apt-get install -y tesseract-ocr tesseract-ocr-rus tesseract-ocr-eng poppler-utils curl zstd git- Установить Ollama для запуска LLM:
curl -fsSL https://ollama.com/install.sh | sh- Загрузить подходящуюю модель LLM, например:
ollama pull llama3.2Список доступных моделей можно поссмотреть на официальном сайте.
- Склонировать репозиторий
git clone https://github.com/AlinaStudyPM/7_semester_coursework.git
cd 7_semester_coursework- Создать виртуальное окружение для проекта и запустить его:
python3 -m venv .venv
source .venv/bin/activateЗамечание: для выхода из виртуального окружения используется команда deactivate. Для повторного запуска окружения достаточно команды source .venv/bin/activate.
- Установить зависимости
pip install -e .- Запустить приложение в нужном режиме:
- Десктопный:
rag-desktop - Браузерны:
rag-web
- Десктопный:
- Установить Python. Некоторые библиотеки могут не работать с последней версией Python 3.14, поэтому рекомендуется установить Python 3.12. Это можно сделать при помощи официального установщика (выбрать строку таблицы Windows installer (64-bit), а не install manager). При необходимости нужно добавить Python в системные переменные (если это не произошло по умолчанию):
$env:Path="$env:LOCALAPPDATA\Programs\Python\Python312;$env:Path"- Установить менеджер пакетов Scoop для более простой установки других компонентов:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex- Установить git, а также Poppler и Tesseract для OCR (распознавания текста из документов):
scoop install git poppler tesseract- Установить необходимые языки для Tesseract. Для этого необходимо перейти в репозиторий, и скачать файлы
eng.traineddataиrus.traineddataдля английского и русского языков соответственно. После поместить их в папку~\scoop\apps\tesseract\current\tessdata. После этого командаtesseract --list-langsдолжна показать в терминалеengиrus. - Установить Ollama для запуска LLM.
irm https://ollama.com/install.ps1 | iex- Загрузить подходящуюю модель LLM, например:
ollama pull llama3.2 Список доступных моделей можно поссмотреть на официальном сайте.
- Склонировать репозиторий
git clone https://github.com/AlinaStudyPM/7_semester_coursework.git
cd 7_semester_coursework- Создать виртуальное окружение для проекта и запустить его:
python -m venv .venv
.venv\Scripts\activateЗамечание: для выхода из виртуального окружения используется команда deactivate. Для повторного запуска окружения достаточно команды .venv\Scripts\activate.
- Установить зависимости
pip install -e .- Запустить приложение в нужном режиме:
- Десктопный:
rag-desktop - Браузерны:
rag-web
- Десктопный:
- Настройки по умолчанию указаны в файле
.env.example. При желании можно создать файл.envс собственными настройками. - Системный промпт хранится в
config/system_prompt.txt, его можно отредактировать. - Модели LLM автоматически подтягиваются из Ollama. При желании загрузить новые используйте приложение Ollama. Например:
ollama pull llama3.2Эти пакеты необходимо установить вручную согласно инструкции.
| Пакет | Назначение |
|---|---|
| ollama | Фреймворк для запуска LLM |
| tesseract-ocr | OCR-движок |
| tesseract-ocr-rus | Русский язык для OCR |
| tesseract-ocr-eng | Английский язык для OCR |
| poppler-utils | Работа с PDF |
Этих пакеты перечислены в pyproject.toml и устанавливаются в виртуальном окружении автоматически при выполнении команды pip install -e ..
| Пакет | Назначение |
|---|---|
| flet | UI-фреймворк |
| chromadb | Векторная БД |
| ollama | Python-клиент для Ollama |
| langchain-text-splitters | Разделение текста |
| requests | HTTP-запросы |
| pdfplumber | Извлечение из PDF |
| pdf2image | PDF → изображения |
| pytesseract | OCR |
| tiktoken | Токенизация |
| bcrypt | Хеширование паролей |
| python-dotenv | Переменные окружения |