Files
T

103 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Агент с RAG‑памятью
**Краткое описание**
Проект реализует простого чат‑бота на основе RetrievalAugmented Generation (RAG).
Бот хранит документы в векторном хранилище Qdrant, извлекает релевантные фрагменты при помощи эмбеддингов OpenAI и генерирует ответы с помощью модели GPT‑4 (или любой другой LLM, поддерживаемой LangChain).
---
## Установка
```bash
# Клонируйте репозиторий
git clone https://github.com/yourusername/rag-agent.git
cd rag-agent
# Создайте виртуальное окружение (необязательно, но рекомендуется)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
```
> **Важно**
> - Для работы с OpenAI вам понадобится переменная окружения `OPENAI_API_KEY`.
> - Для Qdrant можно использовать локальный сервер (порт 6333) или облачный сервис.
> - Если вы хотите использовать другой LLM, поменяйте параметры в `solution.py`.
---
## Запуск
### 1. Инициализация векторного хранилища
```bash
python solution.py init
```
> Команда создаст коллекцию `documents` в Qdrant и загрузит в неё все файлы из папки `data/`.
> Для больших наборов данных можно изменить `chunk_size` и `chunk_overlap` в `RecursiveCharacterTextSplitter`.
### 2. Запуск FastAPI сервера
```bash
uvicorn solution:app --reload
```
> После запуска сервер будет доступен по адресу `http://127.0.0.1:8000`.
> Swagger UI: `http://127.0.0.1:8000/docs`.
### 3. Отправка запроса к боту
```bash
curl -X POST "http://127.0.0.1:8000/chat" \
-H "Content-Type: application/json" \
-d '{"question":"Какой климат в Сибири?"}'
```
Ответ будет в формате:
```json
{
"answer": "Сибирь характеризуется холодным континентальным климатом..."
}
```
---
## Пример использования
```python
import requests
url = "http://127.0.0.1:8000/chat"
payload = {"question": "Какие книги рекомендованы для изучения Python?"}
response = requests.post(url, json=payload)
print(response.json()["answer"])
```
> Вывод:
> ```
> Для начала изучения Python рекомендую следующие книги: "Automate the Boring Stuff with Python" и "Python Crash Course". Если вы хотите углубиться в продвинутые темы, обратите внимание на "Fluent Python" и "Effective Python".
> ```
---
## Структура проекта
```
rag-agent/
├── data/ # Папка с исходными документами
├── solution.py # Основной скрипт
├── requirements.txt
└── README.md
```
---
## Лицензия
MIT © 2026
---