5.8 KiB
Агент с 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‑память.
Пример использования
-
Инициализируйте базу знаний (если ещё не сделано):
python init_loader.py -
Запустите CLI‑клиент:
python cli_client.py -
Взаимодействуйте с агентом:
> Какой был первый президент России? Ответ: Первый президент Российской Федерации — Борис Ельцин. -
Добавьте новый документ вручную (через
rag_agent.pyили любой другой скрипт):from rag_agent import add_to_knowledge_base content = "Python – язык программирования, созданный Гвидо ван Россумом." title = "О Python" add_to_knowledge_base(content=content, title=title) -
Проверьте поиск:
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