61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
# RAG‑агент с ChromaDB и веб‑поиском
|
|
|
|
AI‑ассистент с двумя источниками знаний: локальная база ChromaDB и интернет через Tavily. Агент сам решает, какой источник использовать, и указывает это в ответе.
|
|
|
|
## Стек
|
|
|
|
| Компонент | Технология |
|
|
|-----------|------------|
|
|
| LLM | Ollama — llama3 |
|
|
| Эмбеддинги | Ollama — nomic-embed-text |
|
|
| Векторное хранилище | ChromaDB |
|
|
| Веб‑поиск | Tavily |
|
|
| Фреймворк | LangChain + LangGraph (ReAct) |
|
|
|
|
## Установка
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
ollama pull llama3
|
|
ollama pull nomic-embed-text
|
|
```
|
|
|
|
Добавь в `.env`:
|
|
```
|
|
TAVILY_API_KEY=твой_ключ_tavily
|
|
```
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
## Команды
|
|
|
|
| Команда | Описание |
|
|
|---------|----------|
|
|
| `/add <текст>` | Добавить текст в локальную базу знаний |
|
|
| `/load <файл>` | Загрузить .txt файл в базу знаний |
|
|
| `/help` | Показать список команд |
|
|
| `/quit` | Выйти из программы |
|
|
| `<вопрос>` | Задать вопрос агенту |
|
|
|
|
## Структура проекта
|
|
|
|
```
|
|
vectorstore.py — ChromaDB хранилище, эмбеддинги, чанкинг
|
|
tools.py — @tool: search_local_kb, web_search (Tavily)
|
|
agent.py — ReAct‑агент с маршрутизацией по источнику
|
|
main.py — CLI интерфейс
|
|
requirements.txt
|
|
README.md
|
|
```
|
|
|
|
## Маршрутизация
|
|
Агент сам выбирает источник:
|
|
- `search_local_kb` — если ответ может быть в локальных документах
|
|
- `web_search` — если нужна актуальная информация из интернета
|
|
|
|
В каждом ответе указан источник: `[Source: Local KB]` или `[Source: Web]`.
|