# Агент с RAG‑памятью ## Описание проекта Проект реализует **AI‑агента**, способного хранить, искать и использовать знания в локальной векторной базе данных Qdrant при помощи Ollama (LLM `llama3` и эмбеддинг‑модель `nomic-embed-text`). Агент использует LangChain для построения цепочки действий, а также предоставляет два инструмента: | Инструмент | Описание | |------------|----------| | `search_knowledge_base(query, max_results)` | Семантический поиск по базе знаний. | | `add_to_knowledge_base(content, title)` | Добавление нового документа в базу (с чанкингом и эмбеддингами). | ## Стек технологий - **Python 3.10+** - **Qdrant** – локальная векторная база данных - **Ollama** – LLM `llama3` + эмбеддинги `nomic-embed-text` - **LangChain** – фреймворк для агентов, RAG и инструментов ## Установка зависимостей ```bash # 1. Ollama (LLM и эмбеддинг‑модели) ollama pull llama3 ollama pull nomic-embed-text # 2. Python пакеты pip install langchain langchain-qdrant langchain-ollama ``` > **Важно**: Qdrant должен быть запущен локально (по умолчанию на `localhost:6333`). > Если вы используете Docker, можно быстро поднять контейнер: > ```bash > docker run -p 6333:6333 qdrant/qdrant > ``` ## Структура проекта | Файл | Описание | |------|----------| | `rag_agent.py` | Основная логика агента и его инструменты. | | `qdrant_client.py` | Обёртка над QdrantVectorStore: инициализация, добавление документов, поиск. | | `chunker.py` | Модуль для разбиения текста на чанки (RecursiveCharacterTextSplitter). | | `init_loader.py` | Скрипт загрузки начальных данных в базу. | | `cli_client.py` | CLI‑интерфейс для взаимодействия с агентом из командной строки. | ## Как запустить ### 1. Инициализация базы (опционально) Если вы хотите сразу наполнить базу тестовыми данными, выполните: ```bash python init_loader.py ``` > Скрипт `init_loader.py` читает файлы из папки `data/`, разбивает их на чанки и сохраняет в Qdrant. ### 2. Запуск CLI‑клиента CLI позволяет задавать вопросы агенту, а также добавлять новые документы: ```bash python cli_client.py ``` #### Примеры использования | Команда | Описание | |---------|----------| | `ask "Какой смысл жизни?"` | Агент выполнит поиск в базе и сформирует ответ. | | `add "data/new_doc.txt" "Новый документ"` | Добавляет новый файл в базу знаний (с чанкингом). | ### 3. Запуск агента напрямую Если вам нужен только агент без CLI, можно импортировать его из `rag_agent.py`: ```python from rag_agent import agent_executor response = agent_executor.invoke({"input": "Расскажи о Qdrant"}) print(response["output"]) ``` ## Пример кода (CLI) ```bash $ python cli_client.py ask "Что такое RAG?" Agent: Searching knowledge base... Result: ... Answer: ... ``` ## Настройка переменных окружения | Переменная | Значение по умолчанию | Описание | |------------|-----------------------|----------| | `QDRANT_HOST` | `localhost` | Хост Qdrant. | | `QDRANT_PORT` | `6333` | Порт Qdrant. | | `QDRANT_COLLECTION` | `rag_collection` | Имя коллекции в Qdrant. | | `EMBEDDING_MODEL` | `nomic-embed-text` | Модель эмбеддингов. | | `LLM_MODEL` | `llama3` | Модель LLM. | ## Тесты Тесты находятся в папке `tests/`. Запустить их можно так: ```bash pytest tests/ ``` > Убедитесь, что Qdrant и Ollama запущены перед запуском тестов. ## Лицензия MIT License – см. файл `LICENSE`. --- **Примечание:** - Для работы с большим объёмом данных рекомендуется использовать более мощные модели эмбеддингов и LLM. - Если вы хотите использовать облачные сервисы вместо локальных, замените импорты и конфигурацию в файлах проекта. ---