{ "task": { "_id": "6a02e23da6fe2e4ac16acf65", "title": "Агент с RAG-памятью", "description": "# Практическое задание: Агент с RAG-памятью\n\n## Цель\n\nПостроить AI-агента с локальным RAG-хранилищем знаний на базе Qdrant и Ollama. Агент должен уметь искать и сохранять информацию в векторной базе.\n\n---\n\n## Стек\n\n- Python 3.10+\n- **Qdrant** — векторная база данных\n- **Ollama** — локальные LLM и эмбеддинги (`llama3`, `nomic-embed-text`)\n- **LangChain** — фреймворк для агентов и RAG\n\n### Установка\n\n```bash\n# Ollama\nollama pull llama3\nollama pull nomic-embed-text\n\n# Python пакеты\npip install langchain langchain-qdrant langchain-ollama\n```\n\n---\n\n## Что нужно сделать\n\n### 1. RAG-инструменты для агента\n\nСоздай два инструмента через декоратор `@tool`:\n\n| Инструмент | Назначение |\n|------------|------------|\n| `search_knowledge_base(query, max_results)` | Семантический поиск в базе знаний |\n| `add_to_knowledge_base(content, title)` | Добавление документа в базу |\n\n📖 [Документация @tool](https://docs.langchain.com/oss/python/langchain/tools)\n\n### 2. Векторное хранилище\n\nРеализуй модуль для работы с Qdrant:\n- Инициализация клиента и коллекции\n- Добавление документов с эмбеддингами через Ollama\n- Поиск с метрикой релевантности\n\n📖 [QdrantVectorStore](https://docs.langchain.com/oss/python/integrations/vectorstores/qdrant)\n\n### 3. Система чанкинга\n\nРеализуй разбиение документов на чанки перед добавлением в базу.\n\n📖 [RecursiveCharacterTextSplitter](https://docs.langchain.com/oss/python/integrations/splitters/recursive_text_splitter)\n\n### 4. Агент с RAG-интеграцией\n\nСоздай агента с системным промптом, инструктирующим использовать базу знаний.\n\n📖 [create_agent](https://docs.langchain.com/oss/python/langchain/overview#create-an-agent)\n\n### 5. Клиент инициализации\n\nСкрипт для загрузки документов из директории в векторное хранилище.\n\n### 6. Интерактивный тестовый клиент\n\nCLI или простой интерфейс для демонстрации работы агента с командами `/add`, `/search`, `/quit`.\n\n---\n\n## Критерии зачёта\n\n| Компонент | Проверяется |\n|-----------|-------------|\n| Инструменты | `@tool`, `search_knowledge_base`, `add_to_knowledge_base` |\n| Векторное хранилище | Qdrant, эмбеддинги через Ollama |\n| Чанкинг | `RecursiveCharacterTextSplitter`, метаданные |\n| Агент | `create_agent` с RAG-инструментами |\n| Инициализация | Загрузка документов из директории |\n| Тестирование | Интерактивный клиент с командами |\n\n---\n\n## Полезные ссылки\n\n| Ресурс | Ссылка |\n|--------|--------|\n| LangChain Overview | https://docs.langchain.com/oss/python/langchain/overview |\n| Qdrant Integration | https://docs.langchain.com/oss/python/integrations/vectorstores/qdrant |\n| Ollama Integration | https://docs.langchain.com/oss/python/integrations/providers/ollama |\n| Text Splitters | https://docs.langchain.com/oss/python/integrations/splitters |\n| Tools | https://docs.langchain.com/oss/python/langchain/tools |\n| Agents | https://docs.langchain.com/oss/python/langchain/agents |\n| Qdrant Installation | https://qdrant.tech/documentation/install/ |", "course": "698b49da77cb6d4d2e43ce78", "lesson": { "_id": "69ce8da9ee5ea03ca2f943d5", "name": "Deep Agents Virtual File System", "date": "2026-04-02T15:30:00.000Z", "id": "69ce8da9ee5ea03ca2f943d5" }, "gradeType": "passfail", "maxScore": 100, "assignmentType": "individual", "allowSubmissions": true, "allowRevisions": false, "creator": { "sub": "8ae348ab-f32e-46c7-9960-8b7fdf0e4c0e", "name": "Александр Примаков" }, "teamGrades": [], "created": "2026-05-12T08:18:05.015Z", "id": "6a02e23da6fe2e4ac16acf65" } }