Files
dz/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md
T
mariahberdnikova b68eb03497 revert 96911dcdb9
revert Delete directory 'solutions'
2026-05-27 07:54:07 +00:00

5.8 KiB
Raw Blame History

Агент с 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 и инструментов

Установка зависимостей

# 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‑образа, можно установить его через:

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

Файл содержит самих инструментов и пример их использования.

python rag_agent.py

Вы увидите вывод о работе инструментов: добавление документа, поиск по запросу и ответ агента.


2️⃣ qdrant_client.py

Пример работы с клиентом Qdrant (добавление/поиск).

python qdrant_client.py

3️⃣ chunker.py

Показывает, как разбивается текст на чанки.

python chunker.py

4️⃣ init_loader.py

Загружает все файлы из папки data/ в базу знаний.
Создайте каталог data/, поместите туда .txt или .pdf файлы, затем:

python init_loader.py

5️⃣ cli_client.py

CLI‑интерфейс для общения с агентом.

python cli_client.py

Введите любой вопрос, и агент ответит, используя RAG‑память.

Пример использования

  1. Инициализируйте базу знаний (если ещё не сделано):

    python init_loader.py
    
  2. Запустите CLI‑клиент:

    python cli_client.py
    
  3. Взаимодействуйте с агентом:

    > Какой был первый президент России?
    Ответ: Первый президент Российской Федерации — Борис Ельцин.
    
  4. Добавьте новый документ вручную (через rag_agent.py или любой другой скрипт):

    from rag_agent import add_to_knowledge_base
    
    content = "Python – язык программирования, созданный Гвидо ван Россумом."
    title = "О Python"
    add_to_knowledge_base(content=content, title=title)
    
  5. Проверьте поиск:

    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])
    

Тесты и отладка

# Установить pytest (если нужен)
pip install pytest

# Запустить тесты (если есть)
pytest tests/

В проекте пока нет автоматических тестов, но вы можете добавить их в папку tests/.

FAQ

Вопрос Ответ
Как изменить модель Ollama? Измените параметр model в OllamaEmbeddings и OllamaLLM.
Можно ли использовать удалённый Qdrant? Да, укажите нужный URL при создании KnowledgeBase.
Что делать, если база пустая? Запустите init_loader.py или добавьте документы через add_to_knowledge_base.

Лицензия

MIT © 2026