Files
task-6a02e23d-agent-s-rag-p…/README.md
T

81 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Агент с 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 можно задавать вопросы – бот выводит найденный контекст и финальный ответ.
## Установка зависимостей
```bash
# Создайте виртуальное окружение (рекомендуется)
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`.
> ```bash
> export OPENAI_API_KEY="sk-..."
> ```
## Запуск
```bash
# Предположим, что у вас есть папка 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`.
## Пример использования
```bash
$ 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 г.