You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
2 days ago | |
|---|---|---|
| .gitignore | 2 days ago | |
| rag_corpus.json | 2 days ago | |
| readme.md | 2 days ago | |
| requerements.txt | 2 days ago | |
| yandex.py | 2 days ago | |
| yandex_gpu.py | 2 days ago | |
| yandex_gpu_lowPC.py | 2 days ago | |
readme.md
Medical RAG System with YandexGPT
Система для автоматического преобразования кратких медицинских записей в развернутые формулировки жалоб пациентов с использованием RAG (Retrieval-Augmented Generation) и модели YandexGPT.
🚀 Особенности
- RAG-архитектура: Поиск релевантных медицинских примеров из базы знаний
- Гибкое использование GPU: Автоматическое определение и использование GPU для ускорения работы
- Управление токенами: Интеллектуальное ограничение длины контекста
- Русскоязычная оптимизация: Специально настроена для работы с медицинскими текстами на русском языке
- Хранение состояния: Сохранение векторной базы данных между сессиями
📋 Требования
Аппаратные требования
- Минимально: CPU с 8+ GB RAM
- Рекомендуется: GPU с 8+ GB VRAM (NVIDIA)
- Память: 10+ GB свободного места
Программные требования
- Python 3.8+
- PyTorch (с поддержкой CUDA при наличии GPU)
- Библиотеки:
chromadb,llama-cpp-python,sentence-transformers,tiktoken
⚙️ Установка
- Клонируйте репозиторий:
git clone <repository-url>
cd medical-rag
- Установите зависимости:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install chromadb llama-cpp-python sentence-transformers tiktoken
- Скачайте модель YandexGPT:
Загрузите модель по ссыке:
YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf
Создайте папку и поместите туда модель:
mkdir models
# Поместите скачанную модель в папку models/
- Подготовьте корпус данных:
Создайте файл rag_corpus.json с медицинскими примерами в формате:
[
{
"short": "краткое описание",
"full": "развернутое описание жалоб"
}
]
🎯 Использование
Базовый запуск
from yandex_gpu import MedicalRAG
# Инициализация системы
rag = MedicalRAG(
model_path="./models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf",
n_ctx=8192,
n_gpu_layers=35,
use_gpu_for_embeddings=True
)
# Преобразование краткой записи
result = rag("Кашель сухой, температура 38")
print(result)
Параметры инициализации
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
model_path |
str | - | Путь к файлу модели GGUF |
corpus_path |
str | "rag_corpus.json" | Путь к JSON-файлу с корпусом |
db_path |
str | "./chroma_db" | Путь к базе данных ChromaDB |
embedding_model_name |
str | "cointegrated/rubert-tiny2" | Модель для эмбеддингов |
top_k |
int | 3 | Количество извлекаемых примеров |
n_ctx |
int | 4096 | Размер контекста |
n_gpu_layers |
int | -1 | Количество слоев на GPU (-1 = все) |
use_gpu_for_embeddings |
bool | True | Использовать GPU для эмбеддингов |
📊 Примеры работы
| Вход | Выход |
|---|---|
"Кашель сухой, температура 38" |
"Пациент предъявляет жалобы на сухой кашель, повышение температуры тела до 38 градусов." |
"А.д. 140, заложенность ушей" |
"Пациент жалуется на повышение артериального давления до 140 мм рт.ст., заложенность ушей и частичное снижение слуха." |
"ушные палочки 5 лет, снижение слуха 2 года" |
"Пациент отмечает использование ушных палочек в течение 5 лет и постепенное снижение слуха на протяжении последних 2 лет." |
🛠 Технические детали
Архитектура системы
- Векторный поиск: ChromaDB с русскоязычными эмбеддингами
- Языковая модель: YandexGPT-5-Lite-8B с оптимизацией для GPU
- Управление контекстом: Автоматическое ограничение токенов
- Шаблон промптов: Структурированные промпты для согласованных ответов
Производительность
- На CPU: ~10-30 секунд на запрос
- На GPU: ~2-8 секунд на запрос
- Память: ~6-8 GB для модели + ~1-2 GB для эмбеддингов
🔧 Настройка GPU
rag = MedicalRAG(
model_path="./models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf",
n_gpu_layers=35, # Количество слоев на GPU
main_gpu=0, # Основной GPU
tensor_split=None, # Разделение между несколькими GPU
use_gpu_for_embeddings=True # Ускорение эмбеддингов на GPU
)
📁 Структура проекта
medical-rag/
├── yandex_gpu.py # Основной класс MedicalRAG
├── rag_corpus.json # Медицинский корпус
├── chroma_db/ # Векторная база данных
├── models/
│ └── YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf
└── requirements.txt
🚀 Быстрый старт
# Запуск тестового примера
python yandex_gpu.py
⚠️ Примечания
- Модель автоматически загружается при первом запуске
- Векторная база сохраняется между запусками
- Для лучшей производительности рекомендуется использовать GPU
- Система оптимизирована для русскоязычных медицинских текстов