4.2 KiB
4.2 KiB
Агент с RAG‑памятью
Описание проекта
solution.py реализует простого чат‑бота на основе RAG (Retrieval‑Augmented Generation) – он умеет отвечать на вопросы, используя внешние документы как источник знаний.
Основные компоненты:
- FastAPI + OpenAI API wrapper – быстрый HTTP‑сервер и удобный клиент к OpenAI.
- LangChain – библиотека для построения цепочек вопросов‑ответов с retrieval‑поддержкой.
- Qdrant – векторное хранилище, где сохраняются эмбеддинги документов.
- rich – красивый вывод в терминале.
Как это работает
- Скрипт загружает все файлы из указанной папки (
--docs-dir). - Для каждого документа генерируются эмбеддинги при помощи модели OpenAI (по умолчанию
text-embedding-ada-002). - Эмбеддинги сохраняются в Qdrant.
- Создаётся цепочка
RetrievalQA, которая сначала ищет релевантные документы, а затем генерирует ответ с помощью GPT‑модели (gpt-3.5-turboпо умолчанию). - Через 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 г.