readme
This commit is contained in:
@@ -22,5 +22,133 @@
|
|||||||
- PyTorch (с поддержкой CUDA при наличии GPU)
|
- PyTorch (с поддержкой CUDA при наличии GPU)
|
||||||
- Библиотеки: `chromadb`, `llama-cpp-python`, `sentence-transformers`, `tiktoken`
|
- Библиотеки: `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 <repository-url>
|
||||||
|
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
|
||||||
|
- Система оптимизирована для русскоязычных медицинских текстов
|
||||||
|
|||||||
Reference in New Issue
Block a user