diff --git a/readme.md b/readme.md index cc578ce..654b684 100644 --- a/readme.md +++ b/readme.md @@ -22,5 +22,133 @@ - PyTorch (с поддержкой CUDA при наличии GPU) - Библиотеки: `chromadb`, `llama-cpp-python`, `sentence-transformers`, `tiktoken` -### Модель -[YandexGPT-5-Lite-8B-instruct-Q4_K_M](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/resolve/main/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf?download=true) +## ⚙️ Установка + +1. **Клонируйте репозиторий**: +```bash +git clone +cd medical-rag +``` + +2. **Установите зависимости**: +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 +pip install chromadb llama-cpp-python sentence-transformers tiktoken +``` + +3. **Скачайте модель YandexGPT**: + +Загрузите модель по ссыке: +[**YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf**](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/resolve/main/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf?download=true) + +Создайте папку и поместите туда модель: +```bash +mkdir models +# Поместите скачанную модель в папку models/ +``` + +4. **Подготовьте корпус данных**: + +Создайте файл `rag_corpus.json` с медицинскими примерами в формате: +```json +[ + { + "short": "краткое описание", + "full": "развернутое описание жалоб" + } +] +``` + +## 🎯 Использование + +### Базовый запуск + +```python +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 лет."` | + +## 🛠 Технические детали + +### Архитектура системы + +1. **Векторный поиск**: ChromaDB с русскоязычными эмбеддингами +2. **Языковая модель**: YandexGPT-5-Lite-8B с оптимизацией для GPU +3. **Управление контекстом**: Автоматическое ограничение токенов +4. **Шаблон промптов**: Структурированные промпты для согласованных ответов + +### Производительность + +- **На CPU**: ~10-30 секунд на запрос +- **На GPU**: ~2-8 секунд на запрос +- **Память**: ~6-8 GB для модели + ~1-2 GB для эмбеддингов + +## 🔧 Настройка GPU + +```python +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 +``` + +## 🚀 Быстрый старт + +```bash +# Запуск тестового примера +python yandex_gpu.py +``` + +## ⚠️ Примечания + +- Модель автоматически загружается при первом запуске +- Векторная база сохраняется между запусками +- Для лучшей производительности рекомендуется использовать GPU +- Система оптимизирована для русскоязычных медицинских текстов