Dicklesworthstone/llama_embeddings_fastapi_service

FastAPI-сервис для семантического поиска по тексту с использованием предвычисленных эмбеддингов и продвинутых мер сходства, с встроенной поддержкой различных типов файлов через textract.

RAG⭐ 1 054Python
Открыть на GitHub ↗

Что это за инструмент

FastAPI-сервис для генерации текстовых эмбеддингов, семантического поиска и работы с локальными LLM, поддерживающий различные форматы файлов и аудио.

Зачем нужен

Инструмент упрощает интеграцию локальных LLM (через llama_cpp) в приложения, предоставляя REST API для получения эмбеддингов и текстовых завершений. Он автоматизирует обработку документов (PDF, Word, аудио) и обеспечивает быстрый семантический поиск с использованием FAISS и продвинутых метрик сходства.

Что можно реализовать

  • Построение системы RAG с локальными моделями, где документы предварительно обрабатываются и индексируются.
  • Семантический поиск по базе знаний, используя FAISS для быстрого отбора и дополнительные метрики для уточнения результатов.
  • Автоматическая транскрипция аудиофайлов (MP3/WAV) с помощью Whisper и последующее получение эмбеддингов для анализа контента.
  • Генерация структурированных ответов (например, JSON) от локальных LLM с помощью грамматических ограничений.
  • Мониторинг работы сервиса через веб-интерфейс с просмотром логов в реальном времени.

Ключевые возможности

  • Поддержка множества методов пулинга эмбеддингов (mean, svd, ica, factor_analysis и др.).
  • Использование Rust-библиотеки fast_vector_similarity для сложных метрик сходства (spearman_rho, kendall_tau, hoeffding_d).
  • Автоматическая обработка разных типов файлов через textract, включая OCR для отсканированных PDF.
  • Кэширование эмбеддингов в SQLite для избежания повторных вычислений.
  • Встроенный Swagger UI и веб-просмотрщик логов для удобства разработки.

👤 Кому подойдёт: разработчики, работающие с локальными LLM, инженеры данных, строящие системы семантического поиска, и исследователи, изучающие методы пулинга эмбеддингов.

Релизы

Релизы ещё не отслежены — появятся после ближайшего опроса.