add README.md
This commit is contained in:
@@ -1,46 +1,52 @@
|
|||||||
# Агент с RAG‑памятью
|
# RAG Agent with ChromaDB
|
||||||
|
|
||||||
## Что делает проект
|
## Overview
|
||||||
Реализован AI‑агент, использующий локальное векторное хранилище ChromaDB и Ollama для эмбеддингов. Агент умеет добавлять документы (разбивая их на чанки) и выполнять семантический поиск.
|
This repository implements a simple RAG (Retrieval‑Augmented Generation) agent that uses **ChromaDB** as the vector store and **Ollama** for embeddings and LLM inference. The agent can:
|
||||||
|
|
||||||
## Структура файлов
|
1. Add documents to the knowledge base.
|
||||||
| Файл | Назначение |
|
2. Search the knowledge base semantically.
|
||||||
|------|------------|
|
3. Interact via a lightweight CLI.
|
||||||
| `main.py` | Точка входа, демонстрация работы агента. |
|
|
||||||
| `requirements.txt` | Пакеты‑зависимости. |
|
|
||||||
| `README.md` | Это описание. |
|
|
||||||
| `chunker.py` | Разбиение текста на чанки (500/100). |
|
|
||||||
| `vector_store.py` | Работа с ChromaDB: добавление и поиск. |
|
|
||||||
| `tools.py` | Декорированные инструменты RAG‑агента. |
|
|
||||||
| `agent.py` | Создание агента через `create_agent`. |
|
|
||||||
| `cli.py` | CLI для интерактивного теста. |
|
|
||||||
| `init_documents.py` | Скрипт загрузки всех файлов из каталога в базу. |
|
|
||||||
|
|
||||||
## Установка
|
## File Structure
|
||||||
|
- `requirements.txt` – Python dependencies.
|
||||||
|
- `chunker.py` – Text chunking utilities (RecursiveCharacterTextSplitter).
|
||||||
|
- `vector_store.py` – Wrapper around ChromaDB collection.
|
||||||
|
- `tools.py` – LangChain tools for search and add operations.
|
||||||
|
- `agent.py` – Agent creation with LangChain `create_agent`.
|
||||||
|
- `cli.py` – Simple command‑line interface.
|
||||||
|
- `init_documents.py` – Helper to load all `.txt` files from a directory into the vector store.
|
||||||
|
|
||||||
|
## Installation
|
||||||
```bash
|
```bash
|
||||||
|
# Pull Ollama models
|
||||||
|
ollama pull llama3
|
||||||
|
ollama pull nomic-embed-text
|
||||||
|
|
||||||
|
# Install Python packages
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
# Ollama: pull nomic-embed-text (для эмбеддингов)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Примеры использования
|
## Usage
|
||||||
```bash
|
1. **Load documents** (optional):
|
||||||
python cli.py add path/to/file.txt # Добавить документ
|
```bash
|
||||||
python cli.py search "Python" # Поиск по базе
|
python init_documents.py
|
||||||
```
|
```
|
||||||
|
2. **Run the CLI**:
|
||||||
|
```bash
|
||||||
|
python cli.py
|
||||||
|
```
|
||||||
|
Type any question or `/quit` to exit.
|
||||||
|
|
||||||
## Архитектура
|
## Architecture
|
||||||
1. **LLM** – `ChatOpenAI` через BroJS, но для эмбеддингов используется Ollama.
|
- **Chunking**: `chunker.split_text()` splits large texts into 500‑char chunks with 100‑char overlap using LangChain’s `RecursiveCharacterTextSplitter`.
|
||||||
2. **Embeddings** – `OllamaEmbeddings(model="nomic-embed-text")`.
|
- **Vector Store**: `vector_store.ChromaVectorStore` handles adding documents and similarity search. Embeddings are generated by `langchain_ollama.OllamaEmbeddings` (`nomic-embed-text`).
|
||||||
3. **Vector store** – ChromaDB коллекция «rag_collection» в папке chromadb.
|
- **Tools**: Two tools decorated with `@tool`: `search_knowledge_base` and `add_to_knowledge_base`. They interact with the vector store.
|
||||||
4. **Chunking** – `RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)`.
|
- **Agent**: Created via LangChain’s `create_agent`, configured to use the two tools and a simple system prompt. The LLM is an Ollama `llama3` instance.
|
||||||
5. **Tools** – `search_knowledge_base`, `add_to_knowledge_base` с декоратором `@tool`.
|
|
||||||
6. **Agent** – `create_agent` с системным промптом и доступом к инструментам.
|
|
||||||
7. **CLI** – простая команда‑интерфейс для добавления/поиска.
|
|
||||||
---
|
|
||||||
|
|
||||||
### Тесты
|
## Testing
|
||||||
Для проверки можно запустить:
|
Run the CLI and try:
|
||||||
```bash
|
|
||||||
python cli.py add sample.txt
|
|
||||||
python cli.py search "Python"
|
|
||||||
```
|
```
|
||||||
|
/quit
|
||||||
|
Hello, what can you do?
|
||||||
|
```
|
||||||
|
The agent should respond using the knowledge base or add new documents if prompted.
|
||||||
|
|||||||
Reference in New Issue
Block a user