8. Самописный поисковый агент на основе deep agents from scratch
Описание проекта
Проект реализует deep agent – автономного поискового агента, который использует:
- OpenAI LLM для генерации ответов и запросов к базе знаний.
- Qdrant в качестве векторного хранилища для быстрых семантических поисков.
- LangChain для упрощения взаимодействия между компонентами (LLM, embeddings, vector store).
- Rich для красивого вывода информации в консоли.
Агент умеет:
- Загружать документы и сохранять их эмбеддинги в Qdrant.
- Выполнять запросы пользователя, находить релевантные фрагменты текста и генерировать ответы на основе LLM.
- Показать результаты поиска в виде таблицы с метриками.
Важно: Для работы проекта необходим доступ к API OpenAI (ключ
OPENAI_API_KEY) и работающий экземпляр Qdrant, который можно запустить локально через Docker или использовать облачный сервис.
Установка зависимостей
# Создайте виртуальное окружение (необязательно)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости из requirements.txt
pip install -r requirements.txt
requirements.txt:
langchain==0.2.*
openai==1.*
qdrant-client==1.*
rich==13.*
python-dotenv==1.*
Совет: Если вы используете
pipx, можно установить проект как глобальный пакет.
Как запустить
1. Настройка переменных окружения
Создайте файл .env в корне проекта и добавьте:
OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX
QDRANT_URL=http://localhost:6333 # URL вашего Qdrant сервера
COLLECTION_NAME=my_collection # Имя коллекции для хранения эмбеддингов
Важно: Убедитесь, что Qdrant запущен и доступен по указанному URL.
2. Запуск скрипта
python solution.py
Скрипт выполнит следующие шаги:
- Инициализирует подключение к Qdrant.
- Загружает документы из папки
data/(если она существует) и сохраняет их эмбеддинги. - Ожидает ввод пользователя в консоли, после чего выполняет поиск и выводит ответ.
Пример использования
$ python solution.py
[INFO] 2026-05-27 12:00:00 - Инициализация Qdrant...
[INFO] 2026-05-27 12:00:01 - Коллекция 'my_collection' найдена.
Введите запрос (или 'exit' для выхода): Какова площадь России?
Ответ:
Россия занимает площадь около 17 098 242 км², что делает её крупнейшей страной мира по территории.
[INFO] 2026-05-27 12:00:10 - Запрос обработан за 0.42 сек.
Введите запрос (или 'exit' для выхода): exit
Tip
: Если вы хотите добавить новые документы, поместите их в папку
data/и перезапустите скрипт – он автоматически обновит коллекцию.
Структура проекта
project/
├─ solution.py # Основной скрипт агента
├─ requirements.txt # Зависимости
├─ .env # Переменные окружения (не коммитить!)
└─ data/ # Папка с документами для индексации
Возможные улучшения
- Добавить поддержку нескольких LLM (например, GPT‑4o).
- Реализовать кэширование запросов.
- Интегрировать с веб‑интерфейсом через FastAPI.