Files
dz/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/README.md
T

169 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Агент с 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 и инструментов |
## Установка зависимостей
```bash
# 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‑образа, можно установить его через:
> ```bash
> 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`
Файл содержит самих инструментов и пример их использования.
```bash
python rag_agent.py
```
> Вы увидите вывод о работе инструментов: добавление документа, поиск по запросу и ответ агента.
---
### 2️⃣ `qdrant_client.py`
Пример работы с клиентом Qdrant (добавление/поиск).
```bash
python qdrant_client.py
```
---
### 3️⃣ `chunker.py`
Показывает, как разбивается текст на чанки.
```bash
python chunker.py
```
---
### 4️⃣ `init_loader.py`
Загружает все файлы из папки `data/` в базу знаний.
Создайте каталог `data/`, поместите туда `.txt` или `.pdf` файлы, затем:
```bash
python init_loader.py
```
---
### 5️⃣ `cli_client.py`
CLI‑интерфейс для общения с агентом.
```bash
python cli_client.py
```
> Введите любой вопрос, и агент ответит, используя RAG‑память.
## Пример использования
1. **Инициализируйте базу знаний** (если ещё не сделано):
```bash
python init_loader.py
```
2. **Запустите CLI‑клиент**:
```bash
python cli_client.py
```
3. **Взаимодействуйте с агентом**:
```
> Какой был первый президент России?
Ответ: Первый президент Российской Федерации — Борис Ельцин.
```
4. **Добавьте новый документ вручную** (через `rag_agent.py` или любой другой скрипт):
```python
from rag_agent import add_to_knowledge_base
content = "Python – язык программирования, созданный Гвидо ван Россумом."
title = "О Python"
add_to_knowledge_base(content=content, title=title)
```
5. **Проверьте поиск**:
```python
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])
```
## Тесты и отладка
```bash
# Установить pytest (если нужен)
pip install pytest
# Запустить тесты (если есть)
pytest tests/
```
> В проекте пока нет автоматических тестов, но вы можете добавить их в папку `tests/`.
## FAQ
| Вопрос | Ответ |
|--------|-------|
| **Как изменить модель Ollama?** | Измените параметр `model` в `OllamaEmbeddings` и `OllamaLLM`. |
| **Можно ли использовать удалённый Qdrant?** | Да, укажите нужный URL при создании `KnowledgeBase`. |
| **Что делать, если база пустая?** | Запустите `init_loader.py` или добавьте документы через `add_to_knowledge_base`. |
## Лицензия
MIT © 2026
---