mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-11 19:44:42 +02:00
fix(rag): ubatch=2048 pour llama-embed + retry rag-ingest + nettoie defaults rag
L'instance llama-embed (:1238) tournait avec l'ubatch llama.cpp par défaut (512). En mode --embeddings + pooling, toute l'entrée doit tenir dans un seul ubatch → tout chunk > 512 tokens échouait en HTTP 500 « input too large to process. increase the physical batch size ». ~46 chunks du RAG (CHUNK_MAX=2000 chars ≈ 700 tokens) n'étaient pas indexés. - llama_server : ajoute llama_embed_ubatch_size (2048 = ctx) + flags --batch-size/--ubatch-size dans le template llama-embed.service. - rag-ingest : retry (5×, backoff) sur erreurs transitoires 5xx/réseau de l'embed. - rag/defaults : aligne embed_url/embed_model sur nomic :1238 (étaient des vars mortes pointant encore qwen3-8b :1234 — trompeuses). Résultat : ré-ingestion 436/436 chunks, 0 erreur. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
f0e33c1121
commit
417d49c1ea
4 changed files with 30 additions and 4 deletions
|
|
@ -7,6 +7,7 @@ Usage: rag-ingest [docs_dir]
|
|||
import os
|
||||
import sys
|
||||
import json
|
||||
import time
|
||||
import hashlib
|
||||
import re
|
||||
import urllib.request
|
||||
|
|
@ -57,8 +58,22 @@ def ensure_collection():
|
|||
|
||||
|
||||
def embed(text):
|
||||
result = _request("POST", EMBED_URL, {"model": EMBED_MODEL, "input": text})
|
||||
return result["data"][0]["embedding"]
|
||||
# L'instance llama-embed (:1238) renvoie occasionnellement des 500 transitoires sous charge
|
||||
# soutenue (slot saturé) → retry avec backoff. Les chunks sont bornés (CHUNK_MAX=2000) donc
|
||||
# un 500 n'est pas dû à un dépassement de contexte.
|
||||
last = None
|
||||
for attempt in range(5):
|
||||
try:
|
||||
result = _request("POST", EMBED_URL, {"model": EMBED_MODEL, "input": text})
|
||||
return result["data"][0]["embedding"]
|
||||
except (urllib.error.HTTPError, urllib.error.URLError) as e:
|
||||
last = e
|
||||
code = getattr(e, "code", None)
|
||||
# Ne réessaie que sur erreurs transitoires (5xx) ou réseau
|
||||
if code is not None and code < 500:
|
||||
raise
|
||||
time.sleep(0.5 * (attempt + 1))
|
||||
raise last
|
||||
|
||||
|
||||
def chunk_markdown(rel_path, content):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue