Агент с RAG‑памятью: README.md

This commit is contained in:
2026-05-26 09:21:10 +00:00
parent d31cf56a39
commit 9e5d856a2b
@@ -0,0 +1,132 @@
# Агент с RAG‑памятью
## Описание проекта
Проект реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama LLM и эмбеддингов.
- **RAG** (RetrievalAugmented Generation) агент сначала ищет релевантные документы, а затем генерирует ответ, опираясь на найденную информацию.
- Векторная база хранит чанки документов, которые разбиваются при помощи `RecursiveCharacterTextSplitter`.
- Агент использует два инструмента: поиск в базе и добавление новых документов.
## Стек технологий
| Технология | Версия / Пакет |
|------------|----------------|
| Python | 3.10+ |
| Qdrant | v1.x (Docker) |
| Ollama | `llama3`, `nomic-embed-text` |
| LangChain | 0.2+ |
## Установка зависимостей
```bash
# 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`
```bash
python rag_agent.py
```
> Скрипт инициализирует агента, добавляет в него инструменты и ожидает пользовательский ввод через `input()`.
### 2️⃣ `vector_store.py`
```bash
# Пример использования из REPL или другого скрипта
from vector_store import QdrantStore
store = QdrantStore()
store.add_document("Документ о Python", "Python – язык программирования.")
results = store.search("что такое Python")
print(results)
```
### 3️⃣ `tools.py`
```bash
# Функции можно импортировать и использовать в агенте
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`
```bash
python init_loader.py
```
> Скрипт читает файлы из папки `data/` и загружает их в Qdrant. Убедитесь, что каталог существует.
### 5️⃣ `cli_client.py`
```bash
python cli_client.py "Какой язык программирования лучше?"
```
> CLI‑клиент отправляет запрос агенту и выводит ответ в терминал.
## Пример использования
1. **Инициализация базы**
```bash
python init_loader.py
```
2. **Запуск агента**
```bash
python rag_agent.py
```
Введите вопрос, например:
```
Какой язык программирования лучше для веб‑разработки?
```
3. **CLI‑клиент**
```bash
python cli_client.py "Что такое Qdrant?"
```
## Тесты (опционально)
```bash
pip install pytest
pytest tests/
```
> В папке `tests/` находятся простые unit‑тесты для модуля `vector_store`.
## Поддержка и вопросы
- **Проблема с подключением к Qdrant** – убедитесь, что контейнер запущен и доступен по адресу `http://localhost:6333`.
- **Ошибка при загрузке модели Ollama** – проверьте, что модели скачаны (`ollama list`).
## Лицензия
MIT © 2026