From 0fc495e0a7d0e7d6785c1fd5b6ad4277a8701237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 06:34:21 +0000 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B3=D0=B5=D0=BD=D1=82=20=D1=81=20RAG?= =?UTF-8?q?=E2=80=91=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D1=8C=D1=8E:=20README.m?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md new file mode 100644 index 0000000..223e693 --- /dev/null +++ b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md @@ -0,0 +1,124 @@ +# Агент с 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. +- Если вы хотите использовать облачные сервисы вместо локальных, замените импорты и конфигурацию в файлах проекта. + +--- \ No newline at end of file