Замена RuBERT на sentence-transformers/all-MiniLM-L12-v2, упрощение формулы расчета, поддержка загрузки из отдельных .npy файлов
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
Pydantic схемы для API RAG сервиса.
|
||||
Pydantic схемы для API Embedding сервиса.
|
||||
"""
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
@@ -65,7 +65,7 @@ class ScoreResponse(BaseModel):
|
||||
"meta": {
|
||||
"positive_examples": 500,
|
||||
"negative_examples": 350,
|
||||
"model": "DeepPavlov/rubert-base-cased",
|
||||
"model": "sentence-transformers/all-MiniLM-L12-v2",
|
||||
"timestamp": 1706270000
|
||||
}
|
||||
}
|
||||
@@ -111,14 +111,14 @@ class StatsResponse(BaseModel):
|
||||
model_config = {
|
||||
"json_schema_extra": {
|
||||
"example": {
|
||||
"model_name": "DeepPavlov/rubert-base-cased",
|
||||
"model_name": "sentence-transformers/all-MiniLM-L12-v2",
|
||||
"model_loaded": True,
|
||||
"device": "cpu",
|
||||
"vector_store": {
|
||||
"positive_count": 500,
|
||||
"negative_count": 350,
|
||||
"total_count": 850,
|
||||
"vector_dim": 768,
|
||||
"vector_dim": 384,
|
||||
"max_examples": 10000
|
||||
}
|
||||
}
|
||||
@@ -180,39 +180,21 @@ class ScoringParamsResponse(BaseModel):
|
||||
score_multiplier: float = Field(
|
||||
...,
|
||||
description=(
|
||||
"Базовый множитель для усиления разницы в скорах. "
|
||||
"Используется как основа для расчета финального множителя. "
|
||||
"Множитель для масштабирования разницы в скорах. "
|
||||
"Используется в формуле: score = (diff * score_multiplier + 1) / 2, "
|
||||
"где diff = avg_pos - avg_neg (разница средних сходств топ-k примеров). "
|
||||
"Чем больше значение, тем сильнее влияние разницы между положительными и отрицательными примерами на итоговый score. "
|
||||
"Рекомендуемое значение: 5.0"
|
||||
)
|
||||
)
|
||||
k_min: int = Field(
|
||||
k: int = Field(
|
||||
...,
|
||||
description=(
|
||||
"Минимальное количество ближайших примеров для расчета среднего сходства. "
|
||||
"Количество ближайших примеров для расчета среднего сходства. "
|
||||
"Алгоритм берет топ-k самых похожих примеров из каждого типа (положительные/отрицательные) "
|
||||
"и вычисляет среднее косинусное сходство. "
|
||||
"Меньшее значение k делает алгоритм более чувствительным к различиям, но может быть менее стабильным. "
|
||||
"Рекомендуемое значение: 5"
|
||||
)
|
||||
)
|
||||
k_max: int = Field(
|
||||
...,
|
||||
description=(
|
||||
"Максимальное количество ближайших примеров для расчета среднего сходства. "
|
||||
"Алгоритм выбирает k в диапазоне [k_min, k_max] в зависимости от количества доступных примеров. "
|
||||
"Большее значение k делает алгоритм более стабильным, но менее чувствительным к различиям. "
|
||||
"Должно быть >= k_min. Рекомендуемое значение: 10"
|
||||
)
|
||||
)
|
||||
base_multiplier_factor: float = Field(
|
||||
...,
|
||||
description=(
|
||||
"Множитель для базового score_multiplier. "
|
||||
"Финальный множитель рассчитывается как: score_multiplier * base_multiplier_factor * адаптивный_коэффициент. "
|
||||
"Этот параметр усиливает влияние разницы между положительными и отрицательными примерами. "
|
||||
"Чем больше значение, тем больше диапазон итогового score (от 0 до 1). "
|
||||
"Рекомендуемое значение: 15.0"
|
||||
"Рекомендуемое значение: 3"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -220,9 +202,7 @@ class ScoringParamsResponse(BaseModel):
|
||||
"json_schema_extra": {
|
||||
"example": {
|
||||
"score_multiplier": 5.0,
|
||||
"k_min": 5,
|
||||
"k_max": 10,
|
||||
"base_multiplier_factor": 15.0
|
||||
"k": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -234,42 +214,22 @@ class UpdateScoringParamsRequest(BaseModel):
|
||||
None,
|
||||
gt=0,
|
||||
description=(
|
||||
"Базовый множитель для усиления разницы в скорах. "
|
||||
"Используется как основа для расчета финального множителя. "
|
||||
"Множитель для масштабирования разницы в скорах. "
|
||||
"Используется в формуле: score = (diff * score_multiplier + 1) / 2, "
|
||||
"где diff = avg_pos - avg_neg (разница средних сходств топ-k примеров). "
|
||||
"Чем больше значение, тем сильнее влияние разницы между положительными и отрицательными примерами на итоговый score. "
|
||||
"Должен быть > 0. Рекомендуемое значение: 5.0"
|
||||
)
|
||||
)
|
||||
k_min: Optional[int] = Field(
|
||||
k: Optional[int] = Field(
|
||||
None,
|
||||
ge=1,
|
||||
description=(
|
||||
"Минимальное количество ближайших примеров для расчета среднего сходства. "
|
||||
"Количество ближайших примеров для расчета среднего сходства. "
|
||||
"Алгоритм берет топ-k самых похожих примеров из каждого типа (положительные/отрицательные) "
|
||||
"и вычисляет среднее косинусное сходство. "
|
||||
"Меньшее значение k делает алгоритм более чувствительным к различиям, но может быть менее стабильным. "
|
||||
"Должно быть >= 1. Рекомендуемое значение: 5"
|
||||
)
|
||||
)
|
||||
k_max: Optional[int] = Field(
|
||||
None,
|
||||
ge=1,
|
||||
description=(
|
||||
"Максимальное количество ближайших примеров для расчета среднего сходства. "
|
||||
"Алгоритм выбирает k в диапазоне [k_min, k_max] в зависимости от количества доступных примеров. "
|
||||
"Большее значение k делает алгоритм более стабильным, но менее чувствительным к различиям. "
|
||||
"Должно быть >= 1 и >= k_min. Рекомендуемое значение: 10"
|
||||
)
|
||||
)
|
||||
base_multiplier_factor: Optional[float] = Field(
|
||||
None,
|
||||
gt=0,
|
||||
description=(
|
||||
"Множитель для базового score_multiplier. "
|
||||
"Финальный множитель рассчитывается как: score_multiplier * base_multiplier_factor * адаптивный_коэффициент. "
|
||||
"Этот параметр усиливает влияние разницы между положительными и отрицательными примерами. "
|
||||
"Чем больше значение, тем больше диапазон итогового score (от 0 до 1). "
|
||||
"Должен быть > 0. Рекомендуемое значение: 15.0"
|
||||
"Должно быть >= 1. Рекомендуемое значение: 3"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -277,9 +237,7 @@ class UpdateScoringParamsRequest(BaseModel):
|
||||
"json_schema_extra": {
|
||||
"example": {
|
||||
"score_multiplier": 5.0,
|
||||
"k_min": 5,
|
||||
"k_max": 10,
|
||||
"base_multiplier_factor": 15.0
|
||||
"k": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user