# Агент с 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