5.0 KiB
5.0 KiB
Агент с RAG‑памятью
Описание проекта
Проект реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama LLM и эмбеддингов.
- RAG (Retrieval‑Augmented 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‑клиент отправляет запрос агенту и выводит ответ в терминал.
Пример использования
-
Инициализация базы
python init_loader.py -
Запуск агента
python rag_agent.pyВведите вопрос, например:
Какой язык программирования лучше для веб‑разработки? -
CLI‑клиент
python cli_client.py "Что такое Qdrant?"
Тесты (опционально)
pip install pytest
pytest tests/
В папке
tests/находятся простые unit‑тесты для модуляvector_store.
Поддержка и вопросы
- Проблема с подключением к Qdrant – убедитесь, что контейнер запущен и доступен по адресу
http://localhost:6333. - Ошибка при загрузке модели Ollama – проверьте, что модели скачаны (
ollama list).
Лицензия
MIT © 2026