Files
dz/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью

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

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

# 1. Ollama (LLM и эмбеддинг‑модели)
ollama pull llama3
ollama pull nomic-embed-text

# 2. Python пакеты
pip install langchain langchain-qdrant langchain-ollama

Важно: Qdrant должен быть запущен локально (по умолчанию на localhost:6333).
Если вы используете Docker, можно быстро поднять контейнер:

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. Инициализация базы (опционально)

Если вы хотите сразу наполнить базу тестовыми данными, выполните:

python init_loader.py

Скрипт init_loader.py читает файлы из папки data/, разбивает их на чанки и сохраняет в Qdrant.

2. Запуск CLI‑клиента

CLI позволяет задавать вопросы агенту, а также добавлять новые документы:

python cli_client.py

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

Команда Описание
ask "Какой смысл жизни?" Агент выполнит поиск в базе и сформирует ответ.
add "data/new_doc.txt" "Новый документ" Добавляет новый файл в базу знаний (с чанкингом).

3. Запуск агента напрямую

Если вам нужен только агент без CLI, можно импортировать его из rag_agent.py:

from rag_agent import agent_executor

response = agent_executor.invoke({"input": "Расскажи о Qdrant"})
print(response["output"])

Пример кода (CLI)

$ 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/. Запустить их можно так:

pytest tests/

Убедитесь, что Qdrant и Ollama запущены перед запуском тестов.

Лицензия

MIT License см. файл LICENSE.


Примечание:

  • Для работы с большим объёмом данных рекомендуется использовать более мощные модели эмбеддингов и LLM.
  • Если вы хотите использовать облачные сервисы вместо локальных, замените импорты и конфигурацию в файлах проекта.