From d10bd812c9bf203be9d4f3291c62814e9861f724 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Tue, 26 May 2026 22:36:38 +0000 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B3=D0=B5=D0=BD=D1=82=20=D1=81=20RAG-?= =?UTF-8?q?=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D1=8C=D1=8E:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 115 ++++++++---------- 1 file changed, 51 insertions(+), 64 deletions(-) diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md index 4ee73cf..ee79a9e 100644 --- a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md +++ b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md @@ -1,67 +1,67 @@ # Агент с RAG‑памятью -**Агент с RAG‑памятью** – это простая демонстрация, как можно объединить Retrieval‑Augmented Generation (RAG) с памятью агента, чтобы получать более точные и контекстно‑связаные ответы. -Проект использует: - -- **LangChain** – для построения цепочек запросов к LLM и работы с памятью. -- **OpenAI** – модель GPT‑4o (или любой другой LLM, поддерживаемый LangChain). -- **FAISS** – векторный индекс для быстрого поиска релевантных документов. -- **SQLite** – хранение истории диалога и пользовательских данных. +**Краткое описание** +Проект реализует простого чат‑бота на основе Retrieval‑Augmented Generation (RAG). +Бот хранит документы в векторном хранилище Qdrant, извлекает релевантные фрагменты при помощи эмбеддингов OpenAI и генерирует ответы с помощью модели GPT‑4 (или любой другой LLM, поддерживаемой LangChain). --- ## Установка ```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 ``` -> **Важно**: -> - Установите переменную окружения `OPENAI_API_KEY` с вашим ключом OpenAI. -> - Если хотите использовать другую модель, поменяйте её в `config.py`. +> **Важно** +> - Для работы с OpenAI вам понадобится переменная окружения `OPENAI_API_KEY`. +> - Для Qdrant можно использовать локальный сервер (порт 6333) или облачный сервис. +> - Если вы хотите использовать другой LLM, поменяйте параметры в `solution.py`. --- -## Запуск файлов +## Запуск -### 1. `main.py` - -Главный скрипт, который запускает агента и обрабатывает пользовательский ввод. +### 1. Инициализация векторного хранилища ```bash -python main.py +python solution.py init ``` -После запуска вы увидите приглашение `> `, где можете задавать вопросы. +> Команда создаст коллекцию `documents` в Qdrant и загрузит в неё все файлы из папки `data/`. +> Для больших наборов данных можно изменить `chunk_size` и `chunk_overlap` в `RecursiveCharacterTextSplitter`. -### 2. `rag_agent.py` - -Модуль, реализующий RAG‑агента. -Можно импортировать и использовать в собственных скриптах: +### 2. Запуск FastAPI сервера ```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 -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` - -Вспомогательные функции (логирование, форматирование). -Запуск не требуется, но можно проверить: - -```bash -python -m pytest tests/test_utils.py +```json +{ + "answer": "Сибирь характеризуется холодным континентальным климатом..." +} ``` --- @@ -69,48 +69,35 @@ python -m pytest tests/test_utils.py ## Пример использования ```python -from rag_agent import RagAgent +import requests -# Инициализируем агента (использует уже созданный индекс и память) -agent = RagAgent() - -# Задаём вопрос -response = agent.ask("Какой сегодня прогноз погоды в Москве?") - -print(response) +url = "http://127.0.0.1:8000/chat" +payload = {"question": "Какие книги рекомендованы для изучения Python?"} +response = requests.post(url, json=payload) +print(response.json()["answer"]) ``` -Вывод будет выглядеть примерно так: - -``` -Прогноз погоды в Москве на сегодня: солнечно, температура 18°C, ветер 5 м/с. -``` +> Вывод: +> ``` +> Для начала изучения Python рекомендую следующие книги: "Automate the Boring Stuff with Python" и "Python Crash Course". Если вы хотите углубиться в продвинутые темы, обратите внимание на "Fluent Python" и "Effective Python". +> ``` --- ## Структура проекта ``` -agent-rag-memory/ -├── config.py # Конфигурация модели и путей -├── main.py # Точка входа -├── rag_agent.py # Класс агента -├── memory_setup.py # Индексация документов -├── utils.py # Вспомогательные функции -├── requirements.txt # Зависимости -├── vector_store.faiss # Векторный индекс (создаётся после запуска memory_setup.py) -└── memory.db # SQLite‑база памяти (создаётся после запуска memory_setup.py) +rag-agent/ +├── data/ # Папка с исходными документами +├── solution.py # Основной скрипт +├── requirements.txt +└── README.md ``` --- -## Что дальше? +## Лицензия -- Добавить поддержку нескольких LLM (Claude, Gemini и т.д.). -- Интегрировать с веб‑интерфейсом (FastAPI + React). -- Добавить автоматическое обновление памяти при новых запросах. +MIT © 2026 ---- - -**Автор**: *Ваше имя* -**Дата**: 26 мая 2026 г. \ No newline at end of file +--- \ No newline at end of file