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

124 lines
5.1 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 `llama3` и эмбеддинг‑модель `nomic-embed-text`).
Агент использует LangChain для построения цепочки действий, а также предоставляет два инструмента:
| Инструмент | Описание |
|------------|----------|
| `search_knowledge_base(query, max_results)` | Семантический поиск по базе знаний. |
| `add_to_knowledge_base(content, title)` | Добавление нового документа в базу (с чанкингом и эмбеддингами). |
## Стек технологий
- **Python 3.10+**
- **Qdrant** – локальная векторная база данных
- **Ollama** LLM `llama3` + эмбеддинги `nomic-embed-text`
- **LangChain** – фреймворк для агентов, RAG и инструментов
## Установка зависимостей
```bash
# 1. Ollama (LLM и эмбеддинг‑модели)
ollama pull llama3
ollama pull nomic-embed-text
# 2. Python пакеты
pip install langchain langchain-qdrant langchain-ollama
```
> **Важно**: Qdrant должен быть запущен локально (по умолчанию на `localhost:6333`).
> Если вы используете Docker, можно быстро поднять контейнер:
> ```bash
> docker run -p 6333:6333 qdrant/qdrant
> ```
## Структура проекта
| Файл | Описание |
|------|----------|
| `rag_agent.py` | Основная логика агента и его инструменты. |
| `qdrant_client.py` | Обёртка над QdrantVectorStore: инициализация, добавление документов, поиск. |
| `chunker.py` | Модуль для разбиения текста на чанки (RecursiveCharacterTextSplitter). |
| `init_loader.py` | Скрипт загрузки начальных данных в базу. |
| `cli_client.py` | CLI‑интерфейс для взаимодействия с агентом из командной строки. |
## Как запустить
### 1. Инициализация базы (опционально)
Если вы хотите сразу наполнить базу тестовыми данными, выполните:
```bash
python init_loader.py
```
> Скрипт `init_loader.py` читает файлы из папки `data/`, разбивает их на чанки и сохраняет в Qdrant.
### 2. Запуск CLI‑клиента
CLI позволяет задавать вопросы агенту, а также добавлять новые документы:
```bash
python cli_client.py
```
#### Примеры использования
| Команда | Описание |
|---------|----------|
| `ask "Какой смысл жизни?"` | Агент выполнит поиск в базе и сформирует ответ. |
| `add "data/new_doc.txt" "Новый документ"` | Добавляет новый файл в базу знаний (с чанкингом). |
### 3. Запуск агента напрямую
Если вам нужен только агент без CLI, можно импортировать его из `rag_agent.py`:
```python
from rag_agent import agent_executor
response = agent_executor.invoke({"input": "Расскажи о Qdrant"})
print(response["output"])
```
## Пример кода (CLI)
```bash
$ python cli_client.py ask "Что такое RAG?"
Agent: Searching knowledge base...
Result: ...
Answer: ...
```
## Настройка переменных окружения
| Переменная | Значение по умолчанию | Описание |
|------------|-----------------------|----------|
| `QDRANT_HOST` | `localhost` | Хост Qdrant. |
| `QDRANT_PORT` | `6333` | Порт Qdrant. |
| `QDRANT_COLLECTION` | `rag_collection` | Имя коллекции в Qdrant. |
| `EMBEDDING_MODEL` | `nomic-embed-text` | Модель эмбеддингов. |
| `LLM_MODEL` | `llama3` | Модель LLM. |
## Тесты
Тесты находятся в папке `tests/`. Запустить их можно так:
```bash
pytest tests/
```
> Убедитесь, что Qdrant и Ollama запущены перед запуском тестов.
## Лицензия
MIT License см. файл `LICENSE`.
---
**Примечание:**
- Для работы с большим объёмом данных рекомендуется использовать более мощные модели эмбеддингов и LLM.
- Если вы хотите использовать облачные сервисы вместо локальных, замените импорты и конфигурацию в файлах проекта.
---