Агент с RAG‑памятью

Описание проекта

solution.py реализует простого чат‑бота на основе RAG (RetrievalAugmented 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 можно задавать вопросы – бот выводит найденный контекст и финальный ответ.

Установка зависимостей

# Создайте виртуальное окружение (рекомендуется)
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.

export OPENAI_API_KEY="sk-..."

Запуск

# Предположим, что у вас есть папка 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.

Пример использования

$ 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 г.

S
Description
Решения домашних заданий
Readme 65 KiB
Languages
Python 100%