From 6531446386bdad7d4fb7dd1b10f8196550ea8fdd Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Wed, 27 May 2026 10:24:09 +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 | 135 ++++++++++-------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md index ee79a9e..8598b6d 100644 --- a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md +++ b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/README.md @@ -1,103 +1,114 @@ # Агент с RAG‑памятью -**Краткое описание** -Проект реализует простого чат‑бота на основе Retrieval‑Augmented Generation (RAG). -Бот хранит документы в векторном хранилище Qdrant, извлекает релевантные фрагменты при помощи эмбеддингов OpenAI и генерирует ответы с помощью модели GPT‑4 (или любой другой LLM, поддерживаемой LangChain). +**Краткое описание** ---- +Проект реализует чат‑бота на основе Retrieval‑Augmented Generation (RAG), который использует локальный векторный поиск через Qdrant и генерацию текста/ответов от Ollama. +Бот умеет: + +- хранить документы в Qdrant, индексировать их с помощью модели `nomic-embed-text`; +- при запросе пользователя искать релевантные фрагменты из базы; +- генерировать ответ на основе найденных данных и собственного контекста через модель `llama3` (Ollama). + +## Предварительные требования + +| Компонент | Версия / Минимальная версия | Как установить | +|-----------|-----------------------------|----------------| +| **Python** | 3.10+ | `python -m venv .venv && source .venv/bin/activate` | +| **Ollama** | Любая актуальная версия | [Официальная инструкция](https://ollama.com/download) | +| **Qdrant** | 1.x (Docker рекомендуется) | `docker run -p 6333:6333 qdrant/qdrant:latest` | +| **LangChain** | 0.2+ | Устанавливается через `requirements.txt` | + +> ⚠️ Перед запуском убедитесь, что Ollama запущен и модели `llama3` и `nomic-embed-text` доступны: +> ```bash +> ollama pull llama3 +> ollama pull nomic-embed-text +> ``` ## Установка ```bash -# Клонируйте репозиторий -git clone https://github.com/yourusername/rag-agent.git +# Клонируйте репозиторий (если ещё не сделано) +git clone https://github.com/yourname/rag-agent.git cd rag-agent -# Создайте виртуальное окружение (необязательно, но рекомендуется) -python -m venv venv -source venv/bin/activate # Windows: venv\Scripts\activate +# Создайте и активируйте виртуальное окружение +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. Инициализация векторного хранилища +### 1. `agent.py` – основной скрипт бота ```bash -python solution.py init +python agent.py --config config.yaml ``` -> Команда создаст коллекцию `documents` в Qdrant и загрузит в неё все файлы из папки `data/`. -> Для больших наборов данных можно изменить `chunk_size` и `chunk_overlap` в `RecursiveCharacterTextSplitter`. +*Параметры* +- `--config`: путь к YAML‑файлу с настройками (порт Qdrant, имя коллекции и т.д.). -### 2. Запуск FastAPI сервера +> Если файл конфигурации не указан, используются значения по умолчанию. + +### 2. `client.py` – простой клиент для взаимодействия ```bash -uvicorn solution:app --reload +python client.py --host http://localhost:8000 ``` -> После запуска сервер будет доступен по адресу `http://127.0.0.1:8000`. -> Swagger UI: `http://127.0.0.1:8000/docs`. +*Параметры* +- `--host`: адрес API‑сервера (по умолчанию `http://localhost:8000`). -### 3. Отправка запроса к боту - -```bash -curl -X POST "http://127.0.0.1:8000/chat" \ - -H "Content-Type: application/json" \ - -d '{"question":"Какой климат в Сибири?"}' -``` - -Ответ будет в формате: - -```json -{ - "answer": "Сибирь характеризуется холодным континентальным климатом..." -} -``` - ---- +> Клиент отправляет запросы к REST‑API, реализованному в `agent.py`. ## Пример использования -```python -import requests +1. **Инициализация базы** + ```bash + python agent.py --init-db + ``` + Это создаст коллекцию Qdrant и загрузит документы из папки `data/`. -url = "http://127.0.0.1:8000/chat" -payload = {"question": "Какие книги рекомендованы для изучения Python?"} -response = requests.post(url, json=payload) -print(response.json()["answer"]) -``` +2. **Запуск бота** + ```bash + python agent.py + ``` -> Вывод: -> ``` -> Для начала изучения Python рекомендую следующие книги: "Automate the Boring Stuff with Python" и "Python Crash Course". Если вы хотите углубиться в продвинутые темы, обратите внимание на "Fluent Python" и "Effective Python". -> ``` +3. **Отправка запроса через клиент** + ```bash + python client.py --query "Какой прогноз погоды на завтра?" + ``` + Ответ будет выглядеть примерно так: + ``` + AI: На основе данных из базы, ожидается облачность с температурой около 18°C. + ``` ---- +4. **Прямое взаимодействие** + Внутри `agent.py` можно вызвать функцию `run_agent()` и передать ей строку запроса: + ```python + from agent import run_agent + + answer = run_agent("Расскажи про историю Qdrant") + print(answer) + ``` ## Структура проекта ``` rag-agent/ -├── data/ # Папка с исходными документами -├── solution.py # Основной скрипт -├── requirements.txt -└── README.md +├── agent.py # Основной скрипт, реализующий RAG‑бота +├── client.py # Простой клиент для общения с ботом +├── requirements.txt # Зависимости Python +├── config.yaml # Конфигурация (пример) +└── data/ # Папка с исходными документами ``` ---- - ## Лицензия -MIT © 2026 +MIT License – см. файл `LICENSE`. ---- \ No newline at end of file +--- + +*Если возникнут вопросы, создайте issue в репозитории.* \ No newline at end of file