readme
This commit is contained in:
@@ -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 <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