Агент с RAG‑памятью
Краткое описание
Проект реализует чат‑бота на основе Retrieval‑Augmented 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.
Пример использования
-
Инициализация базы
python agent.py --init-dbЭто создаст коллекцию Qdrant и загрузит документы из папки
data/. -
Запуск бота
python agent.py -
Отправка запроса через клиент
python client.py --query "Какой прогноз погоды на завтра?"Ответ будет выглядеть примерно так:
AI: На основе данных из базы, ожидается облачность с температурой около 18°C. -
Прямое взаимодействие
Внутри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 в репозитории.