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.
		
		
		
		
		
			
		
			
				
					
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
	
	
							6.9 KiB
						
					
					
				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
 - Система оптимизирована для русскоязычных медицинских текстов