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

115 lines
3.7 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‑памятью
## Описание проекта
`solution.py` реализует AI‑агента, способного хранить и извлекать знания из локальной векторной базы Qdrant при помощи Ollama (LLM `llama3` и эмбеддинговая модель `nomic-embed-text`).
Агент использует LangChain для:
* **RAG** RetrievalAugmented Generation
* Инструменты поиска (`search_knowledge_base`) и добавления (`add_to_knowledge_base`) в базу знаний
* Чанкинга больших документов через `RecursiveCharacterTextSplitter`
* Взаимодействия с Qdrant через `QdrantVectorStore`
## Стек технологий
| Технология | Версия |
|------------|--------|
| Python | 3.10+ |
| Ollama | 0.1+ |
| Qdrant | 1.x |
| LangChain | 0.2+ |
## Установка зависимостей
```bash
# 1️⃣ Загрузить модели в Ollama
ollama pull llama3
ollama pull nomic-embed-text
# 2️⃣ Установить Python‑пакеты
pip install langchain langchain-qdrant langchain-ollama
```
> **Важно**
> Qdrant должен быть запущен локально (по умолчанию `localhost:6333`).
> Если у вас нет Docker, установите Qdrant через официальную инструкцию:
> ```bash
> docker run -p 6333:6333 qdrant/qdrant
> ```
## Запуск
```bash
python solution.py --help
```
### Основные команды
| Флаг | Описание |
|------|----------|
| `--add FILE` | Добавить документ из файла в базу знаний |
| `--search QUERY [--max N]` | Выполнить семантический поиск по базе |
| `--agent` | Запустить интерактивного агента, который сам будет использовать RAG |
#### Пример добавления документа
```bash
python solution.py --add docs/guide.txt
```
#### Пример поиска
```bash
python solution.py --search "Как настроить Qdrant?" --max 5
```
#### Запуск интерактивного агента
```bash
python solution.py --agent
```
После запуска агент будет ждать ваших вопросов и отвечать, используя найденную информацию из базы.
## Пример использования в коде
```python
from langchain_ollama import ChatOllama
from langchain_qdrant import QdrantVectorStore
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.tools import tool
from langchain.agents import create_agent, AgentExecutor, Tool
from langchain.schema import Document
# Инициализация клиента Qdrant
store = QdrantVectorStore(
url="http://localhost:6333",
collection_name="knowledge_base",
embedding_function=OllamaEmbeddings(model="nomic-embed-text")
)
# Чанкинг текста
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = splitter.split_text("Многострочный текст...")
# Добавление в базу
store.add_documents([Document(page_content=d) for d in docs])
# Поиск
results = store.similarity_search_with_score("Как настроить Qdrant?", k=3)
for doc, score in results:
print(f"[{score:.2f}] {doc.page_content[:200]}...")
```
## Структура проекта
```
project/
├── solution.py # Основной скрипт
└── docs/ # Пример документов для добавления
```
## Лицензия
MIT © 2026.