Skip to content

DmitriiSednev/Langchain-RAG-Tutorial

Repository files navigation

RAG (Retrieval-Augmented Generation) System

Система для работы с документами на основе 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      # Зависимости проекта

Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd <repository-name>
  1. Создайте виртуальное окружение:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows
  1. Установите зависимости:
pip install -r requirements.txt
  1. Создайте файл .env на основе .env.example:
cp .env.example .env
  1. Заполните .env вашими API ключами:
OPENAI_API_KEY=your-api-key

Использование

  1. Поместите ваши документы в директорию data/

  2. Запустите интерактивный режим:

python database.py
  1. Задавайте вопросы. Система покажет:
    • 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 ключ OpenAI
  • EMBEDDING_TYPE - Тип embedding модели (openai, bedrock)
  • OPENAI_MODEL - Модель OpenAI (по умолчанию: gpt-3.5-turbo)

Лицензия

MIT

About

Простое приложение Langchain RAG

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages