Агент с RAG-памятью: README.md
This commit is contained in:
@@ -1,67 +1,67 @@
|
|||||||
# Агент с RAG‑памятью
|
# Агент с RAG‑памятью
|
||||||
|
|
||||||
**Агент с RAG‑памятью** – это простая демонстрация, как можно объединить Retrieval‑Augmented Generation (RAG) с памятью агента, чтобы получать более точные и контекстно‑связаные ответы.
|
**Краткое описание**
|
||||||
Проект использует:
|
Проект реализует простого чат‑бота на основе Retrieval‑Augmented Generation (RAG).
|
||||||
|
Бот хранит документы в векторном хранилище Qdrant, извлекает релевантные фрагменты при помощи эмбеддингов OpenAI и генерирует ответы с помощью модели GPT‑4 (или любой другой LLM, поддерживаемой LangChain).
|
||||||
- **LangChain** – для построения цепочек запросов к LLM и работы с памятью.
|
|
||||||
- **OpenAI** – модель GPT‑4o (или любой другой LLM, поддерживаемый LangChain).
|
|
||||||
- **FAISS** – векторный индекс для быстрого поиска релевантных документов.
|
|
||||||
- **SQLite** – хранение истории диалога и пользовательских данных.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/yourusername/agent-rag-memory.git
|
# Клонируйте репозиторий
|
||||||
cd agent-rag-memory
|
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
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Важно**:
|
> **Важно**
|
||||||
> - Установите переменную окружения `OPENAI_API_KEY` с вашим ключом OpenAI.
|
> - Для работы с OpenAI вам понадобится переменная окружения `OPENAI_API_KEY`.
|
||||||
> - Если хотите использовать другую модель, поменяйте её в `config.py`.
|
> - Для Qdrant можно использовать локальный сервер (порт 6333) или облачный сервис.
|
||||||
|
> - Если вы хотите использовать другой LLM, поменяйте параметры в `solution.py`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Запуск файлов
|
## Запуск
|
||||||
|
|
||||||
### 1. `main.py`
|
### 1. Инициализация векторного хранилища
|
||||||
|
|
||||||
Главный скрипт, который запускает агента и обрабатывает пользовательский ввод.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python main.py
|
python solution.py init
|
||||||
```
|
```
|
||||||
|
|
||||||
После запуска вы увидите приглашение `> `, где можете задавать вопросы.
|
> Команда создаст коллекцию `documents` в Qdrant и загрузит в неё все файлы из папки `data/`.
|
||||||
|
> Для больших наборов данных можно изменить `chunk_size` и `chunk_overlap` в `RecursiveCharacterTextSplitter`.
|
||||||
|
|
||||||
### 2. `rag_agent.py`
|
### 2. Запуск FastAPI сервера
|
||||||
|
|
||||||
Модуль, реализующий RAG‑агента.
|
|
||||||
Можно импортировать и использовать в собственных скриптах:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -c "import rag_agent; rag_agent.run_demo()"
|
uvicorn solution:app --reload
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. `memory_setup.py`
|
> После запуска сервер будет доступен по адресу `http://127.0.0.1:8000`.
|
||||||
|
> Swagger UI: `http://127.0.0.1:8000/docs`.
|
||||||
|
|
||||||
Скрипт для предварительной индексации документов и создания памяти.
|
### 3. Отправка запроса к боту
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python memory_setup.py
|
curl -X POST "http://127.0.0.1:8000/chat" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"question":"Какой климат в Сибири?"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
> После выполнения появится файл `vector_store.faiss` и база `memory.db`.
|
Ответ будет в формате:
|
||||||
|
|
||||||
### 4. `utils.py`
|
```json
|
||||||
|
{
|
||||||
Вспомогательные функции (логирование, форматирование).
|
"answer": "Сибирь характеризуется холодным континентальным климатом..."
|
||||||
Запуск не требуется, но можно проверить:
|
}
|
||||||
|
|
||||||
```bash
|
|
||||||
python -m pytest tests/test_utils.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -69,48 +69,35 @@ python -m pytest tests/test_utils.py
|
|||||||
## Пример использования
|
## Пример использования
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from rag_agent import RagAgent
|
import requests
|
||||||
|
|
||||||
# Инициализируем агента (использует уже созданный индекс и память)
|
url = "http://127.0.0.1:8000/chat"
|
||||||
agent = RagAgent()
|
payload = {"question": "Какие книги рекомендованы для изучения Python?"}
|
||||||
|
response = requests.post(url, json=payload)
|
||||||
# Задаём вопрос
|
print(response.json()["answer"])
|
||||||
response = agent.ask("Какой сегодня прогноз погоды в Москве?")
|
|
||||||
|
|
||||||
print(response)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Вывод будет выглядеть примерно так:
|
> Вывод:
|
||||||
|
> ```
|
||||||
```
|
> Для начала изучения Python рекомендую следующие книги: "Automate the Boring Stuff with Python" и "Python Crash Course". Если вы хотите углубиться в продвинутые темы, обратите внимание на "Fluent Python" и "Effective Python".
|
||||||
Прогноз погоды в Москве на сегодня: солнечно, температура 18°C, ветер 5 м/с.
|
> ```
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Структура проекта
|
## Структура проекта
|
||||||
|
|
||||||
```
|
```
|
||||||
agent-rag-memory/
|
rag-agent/
|
||||||
├── config.py # Конфигурация модели и путей
|
├── data/ # Папка с исходными документами
|
||||||
├── main.py # Точка входа
|
├── solution.py # Основной скрипт
|
||||||
├── rag_agent.py # Класс агента
|
├── requirements.txt
|
||||||
├── memory_setup.py # Индексация документов
|
└── README.md
|
||||||
├── utils.py # Вспомогательные функции
|
|
||||||
├── requirements.txt # Зависимости
|
|
||||||
├── vector_store.faiss # Векторный индекс (создаётся после запуска memory_setup.py)
|
|
||||||
└── memory.db # SQLite‑база памяти (создаётся после запуска memory_setup.py)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Что дальше?
|
## Лицензия
|
||||||
|
|
||||||
- Добавить поддержку нескольких LLM (Claude, Gemini и т.д.).
|
MIT © 2026
|
||||||
- Интегрировать с веб‑интерфейсом (FastAPI + React).
|
|
||||||
- Добавить автоматическое обновление памяти при новых запросах.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Автор**: *Ваше имя*
|
|
||||||
**Дата**: 26 мая 2026 г.
|
|
||||||
Reference in New Issue
Block a user