# Агент с RAG‑памятью ## Описание проекта Проект реализует **AI‑агента**, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama (LLM + эмбеддинги). Основные возможности: - Семантический поиск по базе знаний (`search_knowledge_base`). - Добавление новых документов в базу (`add_to_knowledge_base`). - Автоматическое разбиение больших текстов на чанки. - Интеграция с LangChain для создания агента, использующего RAG‑память. ## Стек технологий | Технология | Версия | Зачем | |------------|--------|-------| | Python | 3.10+ | Язык разработки | | Qdrant | - | Векторная база данных | | Ollama | - | Локальные LLM и эмбеддинги (`llama3`, `nomic-embed-text`) | | LangChain | - | Фреймворк для агентов, RAG и инструментов | ## Установка зависимостей ```bash # 1️⃣ Установить Ollama (если ещё не установлен) # https://ollama.com/download # Загрузить модели ollama pull llama3 ollama pull nomic-embed-text # 2️⃣ Создать виртуальное окружение и установить Python‑пакеты python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install --upgrade pip pip install langchain langchain-qdrant langchain-ollama ``` > **Важно** > Qdrant должен быть запущен локально (по умолчанию `http://localhost:6333`). > Если у вас нет Docker‑образа, можно установить его через: > ```bash > docker run -p 6333:6333 qdrant/qdrant > ``` ## Структура проекта | Файл | Описание | |------|----------| | `rag_agent.py` | Основная логика агента и RAG‑инструментов. | | `qdrant_client.py` | Обёртка над QdrantVectorStore (инициализация, добавление, поиск). | | `chunker.py` | Модуль разбиения текста на чанки. | | `init_loader.py` | Скрипт для первичной загрузки документов в базу. | | `cli_client.py` | CLI‑интерфейс для взаимодействия с агентом. | ## Как запустить каждый файл ### 1️⃣ `rag_agent.py` Файл содержит самих инструментов и пример их использования. ```bash python rag_agent.py ``` > Вы увидите вывод о работе инструментов: добавление документа, поиск по запросу и ответ агента. --- ### 2️⃣ `qdrant_client.py` Пример работы с клиентом Qdrant (добавление/поиск). ```bash python qdrant_client.py ``` --- ### 3️⃣ `chunker.py` Показывает, как разбивается текст на чанки. ```bash python chunker.py ``` --- ### 4️⃣ `init_loader.py` Загружает все файлы из папки `data/` в базу знаний. Создайте каталог `data/`, поместите туда `.txt` или `.pdf` файлы, затем: ```bash python init_loader.py ``` --- ### 5️⃣ `cli_client.py` CLI‑интерфейс для общения с агентом. ```bash python cli_client.py ``` > Введите любой вопрос, и агент ответит, используя RAG‑память. ## Пример использования 1. **Инициализируйте базу знаний** (если ещё не сделано): ```bash python init_loader.py ``` 2. **Запустите CLI‑клиент**: ```bash python cli_client.py ``` 3. **Взаимодействуйте с агентом**: ``` > Какой был первый президент России? Ответ: Первый президент Российской Федерации — Борис Ельцин. ``` 4. **Добавьте новый документ вручную** (через `rag_agent.py` или любой другой скрипт): ```python from rag_agent import add_to_knowledge_base content = "Python – язык программирования, созданный Гвидо ван Россумом." title = "О Python" add_to_knowledge_base(content=content, title=title) ``` 5. **Проверьте поиск**: ```python from rag_agent import search_knowledge_base results = search_knowledge_base(query="что такое python", max_results=3) for r in results: print(r.page_content[:200]) ``` ## Тесты и отладка ```bash # Установить pytest (если нужен) pip install pytest # Запустить тесты (если есть) pytest tests/ ``` > В проекте пока нет автоматических тестов, но вы можете добавить их в папку `tests/`. ## FAQ | Вопрос | Ответ | |--------|-------| | **Как изменить модель Ollama?** | Измените параметр `model` в `OllamaEmbeddings` и `OllamaLLM`. | | **Можно ли использовать удалённый Qdrant?** | Да, укажите нужный URL при создании `KnowledgeBase`. | | **Что делать, если база пустая?** | Запустите `init_loader.py` или добавьте документы через `add_to_knowledge_base`. | ## Лицензия MIT © 2026 ---