fix(embeddings): не терять батч на таймауте Ollama, уменьшить пачку
Ollama обрабатывает тексты в пачке последовательно (один "slot" в llama.cpp, не параллельно) — 64 реальных документа в одном HTTP-запросе регулярно не укладывались в 120с, весь батч падал с ReadTimeout и терялся без ретрая (embed_documents была без bind/max_retries). Теперь: пачка 16, таймаут 300с, задача ретраится до 3 раз при сбое.
This commit is contained in:
@@ -219,8 +219,13 @@ def check_plagiarism(
|
||||
raise self.retry(exc=exc, countdown=120) from exc
|
||||
|
||||
|
||||
@celery_app.task(name="gpu.embed_documents")
|
||||
def embed_documents(doc_ids: list[int]) -> dict[str, Any]:
|
||||
@celery_app.task(
|
||||
name="gpu.embed_documents",
|
||||
bind=True,
|
||||
max_retries=3,
|
||||
default_retry_delay=30,
|
||||
)
|
||||
def embed_documents(self, doc_ids: list[int]) -> dict[str, Any]:
|
||||
"""
|
||||
Построить эмбеддинги для документов и добавить их в FAISS индекс.
|
||||
|
||||
@@ -254,7 +259,14 @@ def embed_documents(doc_ids: list[int]) -> dict[str, Any]:
|
||||
]
|
||||
ids = [d.id for d in docs]
|
||||
|
||||
vectors = ModelManager.encode(texts)
|
||||
try:
|
||||
vectors = ModelManager.encode(texts)
|
||||
except Exception as exc:
|
||||
# Таймаут/недоступность бэкенда эмбеддингов — не терять батч молча,
|
||||
# а повторить (раньше падало без ретрая, документы просто выпадали
|
||||
# из переиндексации).
|
||||
logger.warning(f"Не удалось построить эмбеддинги для {ids}: {exc}")
|
||||
raise self.retry(exc=exc) from exc
|
||||
|
||||
store = get_backend()
|
||||
store.add_vectors(vectors, ids)
|
||||
|
||||
Reference in New Issue
Block a user