Система для работы с документами на основе RAG подхода. Позволяет загружать документы различных форматов, создавать векторную базу данных и выполнять семантический поиск с генерацией ответов.
- Поддержка различных форматов документов (PDF, TXT, DOCX, MD)
- Умное разбиение документов на чанки с сохранением контекста
- Уникальная идентификация каждого фрагмента (source:page:chunk)
- Поддержка различных embedding моделей (OpenAI, Bedrock)
- Вывод топ-5 релевантных фрагментов с метаданными
- Генерация ответов на основе контекста
- Размер чанка: 1000 символов
- Перекрытие между чанками: 200 символов
- Разделители: параграфы, строки, пробелы
- Каждый чанк получает уникальный индекс в рамках документа
- Используется косинусное сходство между векторами
- Score = 1.0: полное совпадение
- Score = 0.0: полное несовпадение
- Чем ближе score к 1.0, тем релевантнее чанк
- Система возвращает 5 чанков с наивысшей релевантностью
Каждый чанк содержит:
- Источник (имя файла)
- Номер страницы (начиная с 1)
- Индекс чанка (начиная с 0)
- Оценку релевантности (score)
.
├── data/ # Директория с документами
├── database.py # Основной класс для работы с базой данных
├── document_loaders.py # Загрузчики документов разных форматов
├── get_embedding_function.py # Конфигурация embedding моделей
├── test_rag.py # Тесты системы
└── requirements.txt # Зависимости проекта
- Клонируйте репозиторий:
git clone <repository-url>
cd <repository-name>
- Создайте виртуальное окружение:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.env
на основе.env.example
:
cp .env.example .env
- Заполните
.env
вашими API ключами:
OPENAI_API_KEY=your-api-key
-
Поместите ваши документы в директорию
data/
-
Запустите интерактивный режим:
python database.py
- Задавайте вопросы. Система покажет:
- 5 наиболее релевантных фрагментов
- Источник каждого фрагмента
- Номер страницы
- Индекс чанка
- Оценку релевантности
- Сгенерированный ответ
from database import ChromaDatabase
from document_loaders import load_documents
# Инициализация базы данных
db = ChromaDatabase()
# Загрузка документов
documents = load_documents("path/to/docs")
db.add_documents(documents)
# Запрос к базе
response = db.query("Ваш вопрос")
print(response)
pytest test_rag.py -v
Настройки системы хранятся в .env
:
OPENAI_API_KEY
- API ключ OpenAIEMBEDDING_TYPE
- Тип embedding модели (openai, bedrock)OPENAI_MODEL
- Модель OpenAI (по умолчанию: gpt-3.5-turbo)
MIT