82 lines
2.4 KiB
Markdown
82 lines
2.4 KiB
Markdown
# RAG-агент с ChromaDB и веб-поиском
|
||
|
||
AI-агент с локальным RAG-хранилищем на ChromaDB и веб-поиском через Tavily.
|
||
|
||
## Требования
|
||
|
||
- Python 3.10+
|
||
- Ollama (должен быть запущен локально)
|
||
- Модели Ollama: `llama3` и `nomic-embed-text`
|
||
|
||
## Установка
|
||
|
||
### 1. Установка моделей Ollama
|
||
|
||
```bash
|
||
ollama pull llama3
|
||
ollama pull nomic-embed-text
|
||
```
|
||
|
||
### 2. Установка зависимостей
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. Настройка переменных окружения
|
||
|
||
Создайте файл `.env` с вашим Tavily API ключом:
|
||
|
||
```
|
||
TAVILY_API_KEY=your_tavily_api_key_here
|
||
```
|
||
|
||
## Запуск
|
||
|
||
### 1. Инициализация базы знаний
|
||
|
||
Поместите тестовые документы (`.txt` или `.md`) в папку `documents/` и запустите:
|
||
|
||
```bash
|
||
python -c "from vectorstore import create_vectorstore, load_documents; load_documents('./documents', create_vectorstore())"
|
||
```
|
||
|
||
Или просто запустите `main.py` - документы загрузятся автоматически при первом запуске.
|
||
|
||
### 2. Запуск агента
|
||
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
## Использование
|
||
|
||
```
|
||
Запрос: Какие последние новости про AI-агентов?
|
||
[Web Search] ...
|
||
Источник: tavily
|
||
|
||
Запрос: Что в наших конспектах про LangGraph?
|
||
[Local KB] ...
|
||
Источник: chromadb
|
||
```
|
||
|
||
Для выхода введите `exit`.
|
||
|
||
## Структура проекта
|
||
|
||
- `main.py` — CLI чат-цикл
|
||
- `agent.py` — создание агента с инструментами
|
||
- `tools.py` — инструменты поиска (local KB + web)
|
||
- `vectorstore.py` — работа с ChromaDB
|
||
- `requirements.txt` — зависимости
|
||
- `documents/` — папка с тестовыми документами
|
||
|
||
## Компоненты
|
||
|
||
| Компонент | Описание |
|
||
|-----------|----------|
|
||
| ChromaDB | Векторное хранилище с эмбеддингами Ollama |
|
||
| search_local_kb | Семантический поиск в локальной базе |
|
||
| web_search | Поиск через Tavily API |
|
||
| create_agent | Агент с автоматическим выбором источника | |