Проект: RAG-система для ювелирных украшений

Интеллектуальная система ответов на вопросы о ювелирных изделиях

Задачи проекта:

Описание проекта:

RAG-система для ювелирных украшений — это консольное приложение, использующее подход Retrieval-Augmented Generation для предоставления точных ответов на вопросы о ювелирных изделиях. Система интегрирует большую языковую модель (LLM) от OpenAI, векторную базу данных FAISS и SQLite для управления документами.

Архитектура решения

Общая архитектура

Система состоит из следующих основных компонентов:

Ключевые компоненты

DocumentStorage (SQLite)

  • Хранение полного текста и метаданных документов (путь, хэш, время изменения)
  • Отслеживание изменений файлов по хэшу и времени для исключения повторной обработки
  • Хранение FAISS chunk ID для точного удаления устаревших данных

VectorDatabase (FAISS)

  • Два индекса:
    • Основной индекс: хранение эмбеддингов текстовых чанков для поиска
    • Семантический кэш: хранение пар "вопрос-ответ" для ускорения обработки
  • Поддержка создания и загрузки индексов
  • Использование модели BAAI/bge-m3 для эмбеддингов

LangChain

  • Интеграция GPT-4o-mini с FAISS-ретривером для генерации ответов
  • Использование промпт-шаблонов для структурированных запросов

Unstructured

  • Извлечение текста и метаданных из документов (PDF, DOCX, TXT)

Технический стек

Особенности реализации

Масштабируемость

  • Модульная структура кода
  • Поддержка обработки множества документов
  • Гибкая настройка параметров поиска

Производительность

  • Семантическое кэширование для ускорения ответов
  • Ограничение объема возвращаемых данных
  • Оптимизация запросов к LLM

Надежность

  • Обработка ошибок подключения к базам данных
  • Безопасное закрытие соединений
  • Валидация входных данных

Поддерживаемость

  • Документированный код
  • Использование LangChain для упрощения RAG
  • Модульная настройка компонентов

Ключевые особенности:

Схема обработки запроса

Схема обработки запроса