# Агент с RAG‑памятью ## Описание проекта `solution.py` реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama (LLM `llama3` и эмбеддинговая модель `nomic-embed-text`). Агент использует LangChain для: * **RAG** – Retrieval‑Augmented Generation * Инструменты поиска (`search_knowledge_base`) и добавления (`add_to_knowledge_base`) в базу знаний * Чанкинга больших документов через `RecursiveCharacterTextSplitter` * Взаимодействия с Qdrant через `QdrantVectorStore` ## Стек технологий | Технология | Версия | |------------|--------| | Python | 3.10+ | | Ollama | 0.1+ | | Qdrant | 1.x | | LangChain | 0.2+ | ## Установка зависимостей ```bash # 1️⃣ Загрузить модели в Ollama ollama pull llama3 ollama pull nomic-embed-text # 2️⃣ Установить Python‑пакеты pip install langchain langchain-qdrant langchain-ollama ``` > **Важно** > Qdrant должен быть запущен локально (по умолчанию `localhost:6333`). > Если у вас нет Docker, установите Qdrant через официальную инструкцию: > ```bash > docker run -p 6333:6333 qdrant/qdrant > ``` ## Запуск ```bash python solution.py --help ``` ### Основные команды | Флаг | Описание | |------|----------| | `--add FILE` | Добавить документ из файла в базу знаний | | `--search QUERY [--max N]` | Выполнить семантический поиск по базе | | `--agent` | Запустить интерактивного агента, который сам будет использовать RAG | #### Пример добавления документа ```bash python solution.py --add docs/guide.txt ``` #### Пример поиска ```bash python solution.py --search "Как настроить Qdrant?" --max 5 ``` #### Запуск интерактивного агента ```bash python solution.py --agent ``` После запуска агент будет ждать ваших вопросов и отвечать, используя найденную информацию из базы. ## Пример использования в коде ```python from langchain_ollama import ChatOllama from langchain_qdrant import QdrantVectorStore from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.tools import tool from langchain.agents import create_agent, AgentExecutor, Tool from langchain.schema import Document # Инициализация клиента Qdrant store = QdrantVectorStore( url="http://localhost:6333", collection_name="knowledge_base", embedding_function=OllamaEmbeddings(model="nomic-embed-text") ) # Чанкинг текста splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) docs = splitter.split_text("Многострочный текст...") # Добавление в базу store.add_documents([Document(page_content=d) for d in docs]) # Поиск results = store.similarity_search_with_score("Как настроить Qdrant?", k=3) for doc, score in results: print(f"[{score:.2f}] {doc.page_content[:200]}...") ``` ## Структура проекта ``` project/ ├── solution.py # Основной скрипт └── docs/ # Пример документов для добавления ``` ## Лицензия MIT © 2026.