Files
homework-solutions/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью

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

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

Проект реализует чат‑бота на основе RetrievalAugmented Generation (RAG), который использует локальный векторный поиск через Qdrant и генерацию текста/ответов от Ollama.
Бот умеет:

  • хранить документы в Qdrant, индексировать их с помощью модели nomic-embed-text;
  • при запросе пользователя искать релевантные фрагменты из базы;
  • генерировать ответ на основе найденных данных и собственного контекста через модель llama3 (Ollama).

Предварительные требования

Компонент Версия / Минимальная версия Как установить
Python 3.10+ python -m venv .venv && source .venv/bin/activate
Ollama Любая актуальная версия Официальная инструкция
Qdrant 1.x (Docker рекомендуется) docker run -p 6333:6333 qdrant/qdrant:latest
LangChain 0.2+ Устанавливается через requirements.txt

⚠️ Перед запуском убедитесь, что Ollama запущен и модели llama3 и nomic-embed-text доступны:

ollama pull llama3
ollama pull nomic-embed-text

Установка

# Клонируйте репозиторий (если ещё не сделано)
git clone https://github.com/yourname/rag-agent.git
cd rag-agent

# Создайте и активируйте виртуальное окружение
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Установите зависимости
pip install -r requirements.txt

Запуск файлов

1. agent.py – основной скрипт бота

python agent.py --config config.yaml

Параметры

  • --config: путь к YAML‑файлу с настройками (порт Qdrant, имя коллекции и т.д.).

Если файл конфигурации не указан, используются значения по умолчанию.

2. client.py – простой клиент для взаимодействия

python client.py --host http://localhost:8000

Параметры

  • --host: адрес API‑сервера (по умолчанию http://localhost:8000).

Клиент отправляет запросы к REST‑API, реализованному в agent.py.

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

  1. Инициализация базы

    python agent.py --init-db
    

    Это создаст коллекцию Qdrant и загрузит документы из папки data/.

  2. Запуск бота

    python agent.py
    
  3. Отправка запроса через клиент

    python client.py --query "Какой прогноз погоды на завтра?"
    

    Ответ будет выглядеть примерно так:

    AI: На основе данных из базы, ожидается облачность с температурой около 18°C.
    
  4. Прямое взаимодействие
    Внутри agent.py можно вызвать функцию run_agent() и передать ей строку запроса:

    from agent import run_agent
    
    answer = run_agent("Расскажи про историю Qdrant")
    print(answer)
    

Структура проекта

rag-agent/
├── agent.py          # Основной скрипт, реализующий RAG‑бота
├── client.py         # Простой клиент для общения с ботом
├── requirements.txt  # Зависимости Python
├── config.yaml       # Конфигурация (пример)
└── data/             # Папка с исходными документами

Лицензия

MIT License см. файл LICENSE.


Если возникнут вопросы, создайте issue в репозитории.