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

This commit is contained in:
2026-05-26 22:36:38 +00:00
parent bdb835d151
commit d10bd812c9
@@ -1,67 +1,67 @@
# Агент с RAG‑памятью # Агент с RAG‑памятью
**Агент с RAG‑памятью** – это простая демонстрация, как можно объединить RetrievalAugmented Generation (RAG) с памятью агента, чтобы получать более точные и контекстно‑связаные ответы. **Краткое описание**
Проект использует: Проект реализует простого чат‑бота на основе RetrievalAugmented 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 г.