Spaces:
Sleeping
Sleeping
Commit ·
9ebcd3b
1
Parent(s): 8b656e5
fix: update sentence-transformers>=2.7.0 for ru-en-RoSBERTa compatibility
Browse files- .env.example +1 -1
- Dockerfile +1 -2
- main.py +10 -5
- requirements.txt +7 -6
.env.example
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
# ============================================
|
| 2 |
-
# Embedding Service v2.
|
| 3 |
# ============================================
|
| 4 |
|
| 5 |
# Model settings
|
|
|
|
| 1 |
# ============================================
|
| 2 |
+
# Embedding Service v2.2.0 Configuration
|
| 3 |
# ============================================
|
| 4 |
|
| 5 |
# Model settings
|
Dockerfile
CHANGED
|
@@ -18,9 +18,8 @@ WORKDIR /app
|
|
| 18 |
|
| 19 |
# Base settings
|
| 20 |
ENV PYTHONUNBUFFERED=1
|
| 21 |
-
ENV TRANSFORMERS_CACHE=/home/user/.cache/transformers
|
| 22 |
-
ENV SENTENCE_TRANSFORMERS_HOME=/home/user/.cache/sentence_transformers
|
| 23 |
ENV HF_HOME=/home/user/.cache/huggingface
|
|
|
|
| 24 |
|
| 25 |
# Model settings
|
| 26 |
ENV EMBEDDING_MODEL=ai-forever/ru-en-RoSBERTa
|
|
|
|
| 18 |
|
| 19 |
# Base settings
|
| 20 |
ENV PYTHONUNBUFFERED=1
|
|
|
|
|
|
|
| 21 |
ENV HF_HOME=/home/user/.cache/huggingface
|
| 22 |
+
ENV SENTENCE_TRANSFORMERS_HOME=/home/user/.cache/sentence_transformers
|
| 23 |
|
| 24 |
# Model settings
|
| 25 |
ENV EMBEDDING_MODEL=ai-forever/ru-en-RoSBERTa
|
main.py
CHANGED
|
@@ -415,6 +415,11 @@ async def metrics_middleware(request: Request, call_next):
|
|
| 415 |
|
| 416 |
# ============== Pydantic Models ==============
|
| 417 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 418 |
class EmbedRequest(BaseModel):
|
| 419 |
"""Запрос на генерацию эмбеддинга из готового текста."""
|
| 420 |
text: str = Field(..., min_length=1, max_length=MAX_TEXT_LENGTH, description="Текст для эмбеддинга")
|
|
@@ -427,7 +432,7 @@ class EmbedRequest(BaseModel):
|
|
| 427 |
return v
|
| 428 |
|
| 429 |
|
| 430 |
-
class EmbedResponse(
|
| 431 |
"""Ответ с эмбеддингом."""
|
| 432 |
embedding: List[float]
|
| 433 |
dimensions: int
|
|
@@ -452,7 +457,7 @@ class PrepareAndEmbedRequest(BaseModel):
|
|
| 452 |
address: Optional[str] = Field(default=None, max_length=500, description="Адрес")
|
| 453 |
|
| 454 |
|
| 455 |
-
class PrepareAndEmbedResponse(
|
| 456 |
"""Ответ с эмбеддингом."""
|
| 457 |
embedding: List[float]
|
| 458 |
dimensions: int
|
|
@@ -498,7 +503,7 @@ class BatchResultItem(BaseModel):
|
|
| 498 |
cached: bool = Field(default=False, description="Результат из кэша")
|
| 499 |
|
| 500 |
|
| 501 |
-
class BatchResponse(
|
| 502 |
"""Ответ на пакетную обработку."""
|
| 503 |
results: List[BatchResultItem]
|
| 504 |
dimensions: int
|
|
@@ -509,7 +514,7 @@ class BatchResponse(BaseModel):
|
|
| 509 |
model_checksum: str
|
| 510 |
|
| 511 |
|
| 512 |
-
class HealthResponse(
|
| 513 |
"""Ответ health check."""
|
| 514 |
status: str
|
| 515 |
model: str
|
|
@@ -536,7 +541,7 @@ class ReindexRequest(BaseModel):
|
|
| 536 |
address: Optional[str] = Field(default=None, max_length=500, description="Адрес")
|
| 537 |
|
| 538 |
|
| 539 |
-
class ReindexResponse(
|
| 540 |
"""Ответ на переиндексацию."""
|
| 541 |
entity_id: str
|
| 542 |
entity_type: str
|
|
|
|
| 415 |
|
| 416 |
# ============== Pydantic Models ==============
|
| 417 |
|
| 418 |
+
class BaseModelConfig(BaseModel):
|
| 419 |
+
"""Базовая модель с отключенным protected namespace для полей model_*"""
|
| 420 |
+
model_config = {"protected_namespaces": ()}
|
| 421 |
+
|
| 422 |
+
|
| 423 |
class EmbedRequest(BaseModel):
|
| 424 |
"""Запрос на генерацию эмбеддинга из готового текста."""
|
| 425 |
text: str = Field(..., min_length=1, max_length=MAX_TEXT_LENGTH, description="Текст для эмбеддинга")
|
|
|
|
| 432 |
return v
|
| 433 |
|
| 434 |
|
| 435 |
+
class EmbedResponse(BaseModelConfig):
|
| 436 |
"""Ответ с эмбеддингом."""
|
| 437 |
embedding: List[float]
|
| 438 |
dimensions: int
|
|
|
|
| 457 |
address: Optional[str] = Field(default=None, max_length=500, description="Адрес")
|
| 458 |
|
| 459 |
|
| 460 |
+
class PrepareAndEmbedResponse(BaseModelConfig):
|
| 461 |
"""Ответ с эмбеддингом."""
|
| 462 |
embedding: List[float]
|
| 463 |
dimensions: int
|
|
|
|
| 503 |
cached: bool = Field(default=False, description="Результат из кэша")
|
| 504 |
|
| 505 |
|
| 506 |
+
class BatchResponse(BaseModelConfig):
|
| 507 |
"""Ответ на пакетную обработку."""
|
| 508 |
results: List[BatchResultItem]
|
| 509 |
dimensions: int
|
|
|
|
| 514 |
model_checksum: str
|
| 515 |
|
| 516 |
|
| 517 |
+
class HealthResponse(BaseModelConfig):
|
| 518 |
"""Ответ health check."""
|
| 519 |
status: str
|
| 520 |
model: str
|
|
|
|
| 541 |
address: Optional[str] = Field(default=None, max_length=500, description="Адрес")
|
| 542 |
|
| 543 |
|
| 544 |
+
class ReindexResponse(BaseModelConfig):
|
| 545 |
"""Ответ на переиндексацию."""
|
| 546 |
entity_id: str
|
| 547 |
entity_type: str
|
requirements.txt
CHANGED
|
@@ -7,13 +7,14 @@ numpy>=1.24.0,<2.0.0
|
|
| 7 |
pydantic==2.5.3
|
| 8 |
python-dotenv==1.0.0
|
| 9 |
|
| 10 |
-
# PyTorch -
|
| 11 |
-
|
| 12 |
-
|
|
|
|
| 13 |
|
| 14 |
-
# Sentence Transformers с совместимо
|
| 15 |
-
sentence-transformers=
|
| 16 |
-
huggingface_hub>=0.
|
| 17 |
|
| 18 |
# Production-ready улучшения (v2.1.0)
|
| 19 |
prometheus-client>=0.19.0 # Метрики для мониторинга
|
|
|
|
| 7 |
pydantic==2.5.3
|
| 8 |
python-dotenv==1.0.0
|
| 9 |
|
| 10 |
+
# PyTorch - CPU версия для уменьшения размера образа
|
| 11 |
+
--extra-index-url https://download.pytorch.org/whl/cpu
|
| 12 |
+
torch>=2.1.0
|
| 13 |
+
transformers>=4.38.0
|
| 14 |
|
| 15 |
+
# Sentence Transformers - обновлённая версия для совместимости с ru-en-RoSBERTa
|
| 16 |
+
sentence-transformers>=2.7.0
|
| 17 |
+
huggingface_hub>=0.20.0
|
| 18 |
|
| 19 |
# Production-ready улучшения (v2.1.0)
|
| 20 |
prometheus-client>=0.19.0 # Метрики для мониторинга
|