# Агент с RAG‑памятью ## Описание проекта `solution.py` реализует простого чат‑бота на основе **RAG** (Retrieval‑Augmented Generation) – он умеет отвечать на вопросы, используя внешние документы как источник знаний. Основные компоненты: - **FastAPI + OpenAI API wrapper** – быстрый HTTP‑сервер и удобный клиент к OpenAI. - **LangChain** – библиотека для построения цепочек вопросов‑ответов с retrieval‑поддержкой. - **Qdrant** – векторное хранилище, где сохраняются эмбеддинги документов. - **rich** – красивый вывод в терминале. ### Как это работает 1. Скрипт загружает все файлы из указанной папки (`--docs-dir`). 2. Для каждого документа генерируются эмбеддинги при помощи модели OpenAI (по умолчанию `text-embedding-ada-002`). 3. Эмбеддинги сохраняются в Qdrant. 4. Создаётся цепочка `RetrievalQA`, которая сначала ищет релевантные документы, а затем генерирует ответ с помощью GPT‑модели (`gpt-3.5-turbo` по умолчанию). 5. Через CLI можно задавать вопросы – бот выводит найденный контекст и финальный ответ. ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите все необходимые пакеты pip install fastapi uvicorn langchain qdrant-client openai rich ``` > **Важно** > Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`. > ```bash > export OPENAI_API_KEY="sk-..." > ``` ## Запуск ```bash # Предположим, что у вас есть папка docs/ со статьями в формате .txt/.md python solution.py --docs-dir ./docs ``` ### Параметры командной строки | Аргумент | Тип | По умолчанию | Описание | |----------|-----|--------------|----------| | `--docs-dir` | str | `./docs` | Путь к папке с документами. | | `--qdrant-url` | str | `http://localhost:6333` | URL сервера Qdrant. | | `--openai-model` | str | `text-embedding-ada-002` | Модель для эмбеддингов. | | `--llm-model` | str | `gpt-3.5-turbo` | Модель генерации ответов. | > **Примечание** > Если Qdrant не запущен, скрипт автоматически создаст коллекцию с именем `rag_collection`. ## Пример использования ```bash $ python solution.py --docs-dir ./docs [2026-05-28 12:00:00] INFO: Загружаю документы из /home/user/docs... [2026-05-28 12:00:02] INFO: Создаю эмбеддинги для 5 документов... [2026-05-28 12:00:10] INFO: Сохраняю векторные представления в Qdrant... [2026-05-28 12:00:11] INFO: Инициализирую цепочку RetrievalQA... Введите ваш вопрос (Ctrl+C для выхода): > Какой язык программирования использует FastAPI? Контекст: "FastAPI is a modern, fast web framework for building APIs with Python." Ответ: FastAPI uses the Python programming language. ``` ## Что дальше? - Добавить поддержку других форматов документов (`.pdf`, `.docx`). - Настроить кэширование ответов для ускорения работы. - Интегрировать с веб‑интерфейсом через FastAPI. --- **Автор:** [Ваше имя] **Дата создания:** 28 мая 2026 г.