Замена RuBERT на sentence-transformers/all-MiniLM-L12-v2, упрощение формулы расчета, поддержка загрузки из отдельных .npy файлов
This commit is contained in:
24
app/main.py
24
app/main.py
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
FastAPI приложение RAG сервиса.
|
||||
FastAPI приложение Embedding сервиса.
|
||||
|
||||
Сервис для векторного скоринга текстов с использованием ruBERT.
|
||||
Сервис для векторного скоринга текстов с использованием sentence-transformers.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
@@ -90,7 +90,7 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
global _autosave_task
|
||||
|
||||
setup_logging()
|
||||
logger.info(f"RAG Service v{__version__} запускается...")
|
||||
logger.info(f"Embedding Service v{__version__} запускается...")
|
||||
|
||||
settings = get_settings()
|
||||
logger.info(f"Настройки: model={settings.model_name}, vectors_path={settings.vectors_path}")
|
||||
@@ -112,7 +112,7 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
# logger.info("Прогрев модели при запуске...")
|
||||
# await service.warmup()
|
||||
|
||||
logger.info("RAG Service готов к работе")
|
||||
logger.info("Embedding Service готов к работе")
|
||||
|
||||
yield
|
||||
|
||||
@@ -125,21 +125,21 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
pass
|
||||
|
||||
# При остановке сохраняем векторы
|
||||
logger.info("RAG Service останавливается, финальное сохранение векторов...")
|
||||
logger.info("Embedding Service останавливается, финальное сохранение векторов...")
|
||||
try:
|
||||
service.save_vectors()
|
||||
logger.info("Векторы сохранены")
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка сохранения векторов: {e}")
|
||||
|
||||
logger.info("RAG Service остановлен")
|
||||
logger.info("Embedding Service остановлен")
|
||||
|
||||
|
||||
# Создание приложения
|
||||
app = FastAPI(
|
||||
title="RAG Service",
|
||||
title="Embedding Service",
|
||||
description="""
|
||||
Сервис векторного скоринга текстов с использованием ruBERT.
|
||||
Сервис векторного скоринга текстов с использованием sentence-transformers.
|
||||
|
||||
## Возможности
|
||||
|
||||
@@ -150,10 +150,10 @@ app = FastAPI(
|
||||
|
||||
## Алгоритм скоринга
|
||||
|
||||
1. Текст преобразуется в вектор через ruBERT (768 измерений)
|
||||
2. Вычисляется косинусное сходство с положительными примерами
|
||||
3. Вычисляется косинусное сходство с отрицательными примерами
|
||||
4. Финальный скор = разница между сходствами, нормализованная в [0, 1]
|
||||
1. Текст преобразуется в вектор через sentence-transformers/all-MiniLM-L12-v2 (384 измерения)
|
||||
2. Вычисляется косинусное сходство с положительными примерами (топ-k ближайших)
|
||||
3. Вычисляется косинусное сходство с отрицательными примерами (топ-k ближайших)
|
||||
4. Финальный скор = (diff * multiplier + 1) / 2, где diff = avg_pos - avg_neg, нормализованный в [0, 1]
|
||||
""",
|
||||
version=__version__,
|
||||
lifespan=lifespan,
|
||||
|
||||
Reference in New Issue
Block a user