103 lines
3.4 KiB
Markdown
103 lines
3.4 KiB
Markdown
# Агент с RAG‑памятью
|
||
|
||
**Краткое описание**
|
||
Проект реализует простого чат‑бота на основе Retrieval‑Augmented 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
|
||
|
||
--- |