diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md new file mode 100644 index 0000000..9a35106 --- /dev/null +++ b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md @@ -0,0 +1,132 @@ +# Агент с RAG‑памятью + +## Описание проекта +Проект реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama LLM и эмбеддингов. +- **RAG** (Retrieval‑Augmented Generation) – агент сначала ищет релевантные документы, а затем генерирует ответ, опираясь на найденную информацию. +- Векторная база хранит чанки документов, которые разбиваются при помощи `RecursiveCharacterTextSplitter`. +- Агент использует два инструмента: поиск в базе и добавление новых документов. + +## Стек технологий +| Технология | Версия / Пакет | +|------------|----------------| +| Python | 3.10+ | +| Qdrant | v1.x (Docker) | +| Ollama | `llama3`, `nomic-embed-text` | +| LangChain | 0.2+ | + +## Установка зависимостей + +```bash +# 1️⃣ Скачиваем модели Ollama +ollama pull llama3 +ollama pull nomic-embed-text + +# 2️⃣ Запускаем Qdrant (Docker) +docker run -d --name qdrant \ + -p 6333:6333 \ + ghcr.io/qdrant/qdrant:v1.9.0 + +# 3️⃣ Устанавливаем Python‑пакеты +pip install langchain langchain-qdrant langchain-ollama +``` + +> **Важно** +> * Qdrant должен быть запущен до запуска любого скрипта проекта. +> * Переменные окружения `QDRANT_HOST`, `QDRANT_PORT` и `QDRANT_COLLECTION` можно задать в `.env` или напрямую в терминале. + +## Структура файлов + +| Файл | Описание | +|------|----------| +| `rag_agent.py` | Основной скрипт, создающий агента, инструменты и запускает его. | +| `vector_store.py` | Модуль для работы с Qdrant: добавление документов, поиск. | +| `tools.py` | Декорированные функции‑инструменты (`search_knowledge_base`, `add_to_knowledge_base`). | +| `init_loader.py` | Инициализация и загрузка начальных данных в базу (опционально). | +| `cli_client.py` | CLI‑клиент для взаимодействия с агентом из терминала. | + +## Запуск каждого файла + +### 1️⃣ `rag_agent.py` + +```bash +python rag_agent.py +``` + +> Скрипт инициализирует агента, добавляет в него инструменты и ожидает пользовательский ввод через `input()`. + +### 2️⃣ `vector_store.py` + +```bash +# Пример использования из REPL или другого скрипта +from vector_store import QdrantStore + +store = QdrantStore() +store.add_document("Документ о Python", "Python – язык программирования.") +results = store.search("что такое Python") +print(results) +``` + +### 3️⃣ `tools.py` + +```bash +# Функции можно импортировать и использовать в агенте +from tools import search_knowledge_base, add_to_knowledge_base + +search_knowledge_base("Python", max_results=5) +add_to_knowledge_base("Новый контент", "Заголовок") +``` + +### 4️⃣ `init_loader.py` + +```bash +python init_loader.py +``` + +> Скрипт читает файлы из папки `data/` и загружает их в Qdrant. Убедитесь, что каталог существует. + +### 5️⃣ `cli_client.py` + +```bash +python cli_client.py "Какой язык программирования лучше?" +``` + +> CLI‑клиент отправляет запрос агенту и выводит ответ в терминал. + +## Пример использования + +1. **Инициализация базы** + ```bash + python init_loader.py + ``` + +2. **Запуск агента** + ```bash + python rag_agent.py + ``` + Введите вопрос, например: + ``` + Какой язык программирования лучше для веб‑разработки? + ``` + +3. **CLI‑клиент** + ```bash + python cli_client.py "Что такое Qdrant?" + ``` + +## Тесты (опционально) + +```bash +pip install pytest +pytest tests/ +``` + +> В папке `tests/` находятся простые unit‑тесты для модуля `vector_store`. + +## Поддержка и вопросы + +- **Проблема с подключением к Qdrant** – убедитесь, что контейнер запущен и доступен по адресу `http://localhost:6333`. +- **Ошибка при загрузке модели Ollama** – проверьте, что модели скачаны (`ollama list`). + +## Лицензия + +MIT © 2026 \ No newline at end of file