Files
task-6a02e23d-agent-s-rag-p…/README.md
T

5.2 KiB
Raw Blame History

Агент с RAG‑памятью

Описание проекта

Проект реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы данных Qdrant, используя модели Ollama (llama3 для генерации текста и nomic-embed-text для эмбеддингов). Агент использует LangChain для построения цепочки инструментов (RAG) и взаимодействия с пользователем.

Ключевые возможности

  • Семантический поиск по базе знаний.
  • Добавление новых документов в базу.
  • Чанкование больших текстов перед сохранением.
  • Интеграция LLM для генерации ответов на основе найденной информации.

Стек технологий

Технология Версия / Пакет
Python 3.10+
Qdrant v1.x (локальный сервер)
Ollama llama3, nomic-embed-text
LangChain langchain, langchain-qdrant, langchain-ollama

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

# 1. Скачиваем модели Ollama
ollama pull llama3
ollama pull nomic-embed-text

# 2. Устанавливаем Python‑пакеты
pip install langchain langchain-qdrant langchain-ollama

Важно

  • Qdrant должен быть запущен локально (по умолчанию localhost:6333).
  • Ollama сервис также должен работать в фоне.

Структура проекта

.
├── solution.py          # основной скрипт с реализацией агента
└── README.md            # эта документация

solution.py содержит:

  1. Конфигурацию подключения к Qdrant и Ollama.
  2. Два инструмента (search_knowledge_base, add_to_knowledge_base) – реализованы через декоратор @tool.
  3. Логику чанкования с помощью RecursiveCharacterTextSplitter.
  4. Создание агента, который использует LLM и инструменты для RAG‑обратной связи.

Запуск

python solution.py

Скрипт запускает интерактивный режим: пользователь вводит запрос, агент отвечает, используя найденные векторные документы.
Для тестирования можно добавить примерный документ:

python solution.py --add "title=Python Basics" --content="Python is a high-level programming language..."

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

1. Добавление документа

python solution.py add \
    --title "Python Basics" \
    --content "Python is a high-level, interpreted, general-purpose programming language. Created by Guido van Rossum and first released in 1991."

После выполнения команда добавит документ в коллекцию knowledge_base и выведет сообщение об успехе.

2. Поиск по базе

python solution.py query "What is Python?"

Агент выполнит семантический поиск, найдёт релевантные чанки и сформирует ответ с использованием LLM.


Как это работает (техническое резюме)

  1. Чанкование RecursiveCharacterTextSplitter разбивает большие тексты на части длиной до 1000 символов с перекрытием 200.
  2. Эмбеддинг – каждая часть преобразуется в эмбеддинги через Ollama (nomic-embed-text) и сохраняется в Qdrant.
  3. Поиск – при запросе агент использует search_knowledge_base, который ищет ближайшие векторы в коллекции, возвращая топ‑N документов.
  4. Ответ LLM (llama3) генерирует финальный ответ, опираясь на найденные документы.

Расширение проекта

  • Добавить поддержку нескольких моделей Ollama.
  • Интегрировать хранение метаданных (дата добавления, автор).
  • Реализовать удаление/обновление документов через инструменты.
  • Создать веб‑интерфейс на FastAPI для удобного взаимодействия.

Лицензия

MIT License – свободно используйте и модифицируйте код по своему усмотрению.