114 lines
4.5 KiB
Markdown
114 lines
4.5 KiB
Markdown
# Агент с RAG‑памятью
|
||
|
||
**Краткое описание**
|
||
|
||
Проект реализует чат‑бота на основе Retrieval‑Augmented Generation (RAG), который использует локальный векторный поиск через Qdrant и генерацию текста/ответов от Ollama.
|
||
Бот умеет:
|
||
|
||
- хранить документы в Qdrant, индексировать их с помощью модели `nomic-embed-text`;
|
||
- при запросе пользователя искать релевантные фрагменты из базы;
|
||
- генерировать ответ на основе найденных данных и собственного контекста через модель `llama3` (Ollama).
|
||
|
||
## Предварительные требования
|
||
|
||
| Компонент | Версия / Минимальная версия | Как установить |
|
||
|-----------|-----------------------------|----------------|
|
||
| **Python** | 3.10+ | `python -m venv .venv && source .venv/bin/activate` |
|
||
| **Ollama** | Любая актуальная версия | [Официальная инструкция](https://ollama.com/download) |
|
||
| **Qdrant** | 1.x (Docker рекомендуется) | `docker run -p 6333:6333 qdrant/qdrant:latest` |
|
||
| **LangChain** | 0.2+ | Устанавливается через `requirements.txt` |
|
||
|
||
> ⚠️ Перед запуском убедитесь, что Ollama запущен и модели `llama3` и `nomic-embed-text` доступны:
|
||
> ```bash
|
||
> ollama pull llama3
|
||
> ollama pull nomic-embed-text
|
||
> ```
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
# Клонируйте репозиторий (если ещё не сделано)
|
||
git clone https://github.com/yourname/rag-agent.git
|
||
cd rag-agent
|
||
|
||
# Создайте и активируйте виртуальное окружение
|
||
python -m venv .venv
|
||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Запуск файлов
|
||
|
||
### 1. `agent.py` – основной скрипт бота
|
||
|
||
```bash
|
||
python agent.py --config config.yaml
|
||
```
|
||
|
||
*Параметры*
|
||
- `--config`: путь к YAML‑файлу с настройками (порт Qdrant, имя коллекции и т.д.).
|
||
|
||
> Если файл конфигурации не указан, используются значения по умолчанию.
|
||
|
||
### 2. `client.py` – простой клиент для взаимодействия
|
||
|
||
```bash
|
||
python client.py --host http://localhost:8000
|
||
```
|
||
|
||
*Параметры*
|
||
- `--host`: адрес API‑сервера (по умолчанию `http://localhost:8000`).
|
||
|
||
> Клиент отправляет запросы к REST‑API, реализованному в `agent.py`.
|
||
|
||
## Пример использования
|
||
|
||
1. **Инициализация базы**
|
||
```bash
|
||
python agent.py --init-db
|
||
```
|
||
Это создаст коллекцию Qdrant и загрузит документы из папки `data/`.
|
||
|
||
2. **Запуск бота**
|
||
```bash
|
||
python agent.py
|
||
```
|
||
|
||
3. **Отправка запроса через клиент**
|
||
```bash
|
||
python client.py --query "Какой прогноз погоды на завтра?"
|
||
```
|
||
Ответ будет выглядеть примерно так:
|
||
```
|
||
AI: На основе данных из базы, ожидается облачность с температурой около 18°C.
|
||
```
|
||
|
||
4. **Прямое взаимодействие**
|
||
Внутри `agent.py` можно вызвать функцию `run_agent()` и передать ей строку запроса:
|
||
```python
|
||
from agent import run_agent
|
||
|
||
answer = run_agent("Расскажи про историю Qdrant")
|
||
print(answer)
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
rag-agent/
|
||
├── agent.py # Основной скрипт, реализующий RAG‑бота
|
||
├── client.py # Простой клиент для общения с ботом
|
||
├── requirements.txt # Зависимости Python
|
||
├── config.yaml # Конфигурация (пример)
|
||
└── data/ # Папка с исходными документами
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT License – см. файл `LICENSE`.
|
||
|
||
---
|
||
|
||
*Если возникнут вопросы, создайте issue в репозитории.* |