Агент с RAG-памятью: README.md

This commit is contained in:
2026-05-27 10:24:09 +00:00
parent d6df0a05f3
commit 6531446386
@@ -1,103 +1,114 @@
# Агент с RAG‑памятью # Агент с RAG‑памятью
**Краткое описание** **Краткое описание**
Проект реализует простого чат‑бота на основе RetrievalAugmented Generation (RAG).
Бот хранит документы в векторном хранилище Qdrant, извлекает релевантные фрагменты при помощи эмбеддингов OpenAI и генерирует ответы с помощью модели GPT‑4 (или любой другой LLM, поддерживаемой LangChain).
--- Проект реализует чат‑бота на основе RetrievalAugmented 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 ```bash
# Клонируйте репозиторий # Клонируйте репозиторий (если ещё не сделано)
git clone https://github.com/yourusername/rag-agent.git git clone https://github.com/yourname/rag-agent.git
cd rag-agent cd rag-agent
# Создайте виртуальное окружение (необязательно, но рекомендуется) # Создайте и активируйте виртуальное окружение
python -m venv venv python -m venv .venv
source venv/bin/activate # Windows: venv\Scripts\activate source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости # Установите зависимости
pip install -r requirements.txt pip install -r requirements.txt
``` ```
> **Важно** ## Запуск файлов
> - Для работы с OpenAI вам понадобится переменная окружения `OPENAI_API_KEY`.
> - Для Qdrant можно использовать локальный сервер (порт 6333) или облачный сервис.
> - Если вы хотите использовать другой LLM, поменяйте параметры в `solution.py`.
--- ### 1. `agent.py` – основной скрипт бота
## Запуск
### 1. Инициализация векторного хранилища
```bash ```bash
python solution.py init python agent.py --config config.yaml
``` ```
> Команда создаст коллекцию `documents` в Qdrant и загрузит в неё все файлы из папки `data/`. *Параметры*
> Для больших наборов данных можно изменить `chunk_size` и `chunk_overlap` в `RecursiveCharacterTextSplitter`. - `--config`: путь к YAML‑файлу с настройками (порт Qdrant, имя коллекции и т.д.).
### 2. Запуск FastAPI сервера > Если файл конфигурации не указан, используются значения по умолчанию.
### 2. `client.py` – простой клиент для взаимодействия
```bash ```bash
uvicorn solution:app --reload python client.py --host http://localhost:8000
``` ```
> После запуска сервер будет доступен по адресу `http://127.0.0.1:8000`. *Параметры*
> Swagger UI: `http://127.0.0.1:8000/docs`. - `--host`: адрес API‑сервера (по умолчанию `http://localhost:8000`).
### 3. Отправка запроса к боту > Клиент отправляет запросы к REST‑API, реализованному в `agent.py`.
```bash
curl -X POST "http://127.0.0.1:8000/chat" \
-H "Content-Type: application/json" \
-d '{"question":"Какой климат в Сибири?"}'
```
Ответ будет в формате:
```json
{
"answer": "Сибирь характеризуется холодным континентальным климатом..."
}
```
---
## Пример использования ## Пример использования
```python 1. **Инициализация базы**
import requests ```bash
python agent.py --init-db
```
Это создаст коллекцию Qdrant и загрузит документы из папки `data/`.
url = "http://127.0.0.1:8000/chat" 2. **Запуск бота**
payload = {"question": "Какие книги рекомендованы для изучения Python?"} ```bash
response = requests.post(url, json=payload) python agent.py
print(response.json()["answer"]) ```
```
> Вывод: 3. **Отправка запроса через клиент**
> ``` ```bash
> Для начала изучения Python рекомендую следующие книги: "Automate the Boring Stuff with Python" и "Python Crash Course". Если вы хотите углубиться в продвинутые темы, обратите внимание на "Fluent Python" и "Effective Python". 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/ rag-agent/
├── data/ # Папка с исходными документами ├── agent.py # Основной скрипт, реализующий RAG‑бота
├── solution.py # Основной скрипт ├── client.py # Простой клиент для общения с ботом
├── requirements.txt ├── requirements.txt # Зависимости Python
── README.md ── config.yaml # Конфигурация (пример)
└── data/ # Папка с исходными документами
``` ```
---
## Лицензия ## Лицензия
MIT © 2026 MIT License см. файл `LICENSE`.
--- ---
*Если возникнут вопросы, создайте issue в репозитории.*