Files
T

5.0 KiB
Raw Blame History

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

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

Проект реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama LLM и эмбеддингов.

  • RAG (RetrievalAugmented Generation) агент сначала ищет релевантные документы, а затем генерирует ответ, опираясь на найденную информацию.
  • Векторная база хранит чанки документов, которые разбиваются при помощи RecursiveCharacterTextSplitter.
  • Агент использует два инструмента: поиск в базе и добавление новых документов.

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

Технология Версия / Пакет
Python 3.10+
Qdrant v1.x (Docker)
Ollama llama3, nomic-embed-text
LangChain 0.2+

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

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

# 2️⃣ Запускаем Qdrant (Docker)
docker run -d --name qdrant \
  -p 6333:6333 \
  ghcr.io/qdrant/qdrant:v1.9.0

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

Важно

  • Qdrant должен быть запущен до запуска любого скрипта проекта.
  • Переменные окружения QDRANT_HOST, QDRANT_PORT и QDRANT_COLLECTION можно задать в .env или напрямую в терминале.

Структура файлов

Файл Описание
rag_agent.py Основной скрипт, создающий агента, инструменты и запускает его.
vector_store.py Модуль для работы с Qdrant: добавление документов, поиск.
tools.py Декорированные функции‑инструменты (search_knowledge_base, add_to_knowledge_base).
init_loader.py Инициализация и загрузка начальных данных в базу (опционально).
cli_client.py CLI‑клиент для взаимодействия с агентом из терминала.

Запуск каждого файла

1️⃣ rag_agent.py

python rag_agent.py

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

2️⃣ vector_store.py

# Пример использования из REPL или другого скрипта
from vector_store import QdrantStore

store = QdrantStore()
store.add_document("Документ о Python", "Python – язык программирования.")
results = store.search("что такое Python")
print(results)

3️⃣ tools.py

# Функции можно импортировать и использовать в агенте
from tools import search_knowledge_base, add_to_knowledge_base

search_knowledge_base("Python", max_results=5)
add_to_knowledge_base("Новый контент", "Заголовок")

4️⃣ init_loader.py

python init_loader.py

Скрипт читает файлы из папки data/ и загружает их в Qdrant. Убедитесь, что каталог существует.

5️⃣ cli_client.py

python cli_client.py "Какой язык программирования лучше?"

CLI‑клиент отправляет запрос агенту и выводит ответ в терминал.

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

  1. Инициализация базы

    python init_loader.py
    
  2. Запуск агента

    python rag_agent.py
    

    Введите вопрос, например:

    Какой язык программирования лучше для веб‑разработки?
    
  3. CLI‑клиент

    python cli_client.py "Что такое Qdrant?"
    

Тесты (опционально)

pip install pytest
pytest tests/

В папке tests/ находятся простые unit‑тесты для модуля vector_store.

Поддержка и вопросы

  • Проблема с подключением к Qdrant – убедитесь, что контейнер запущен и доступен по адресу http://localhost:6333.
  • Ошибка при загрузке модели Ollama – проверьте, что модели скачаны (ollama list).

Лицензия

MIT © 2026