diff --git a/src/wetgit/ai/semantic.py b/src/wetgit/ai/semantic.py index 5639196..2461958 100644 --- a/src/wetgit/ai/semantic.py +++ b/src/wetgit/ai/semantic.py @@ -29,6 +29,7 @@ COLLECTION = "wetgit_artikelen" VECTOR_DIM = 1024 # mistral-embed output dimension MISTRAL_BATCH_SIZE = 32 +QDRANT_UPLOAD_BATCH = 200 # punten per PUT — voorkomt writetimeout op reuzen-regelingen CHUNK_CHAR_LIMIT = 1800 CHUNK_OVERLAP = 200 @@ -177,13 +178,15 @@ class SemanticSearch: }, }) - if points: + for i in range(0, len(points), QDRANT_UPLOAD_BATCH): + batch = points[i:i + QDRANT_UPLOAD_BATCH] resp = httpx.put( f"{self.qdrant_url}/collections/{COLLECTION}/points", - json={"points": points}, + json={"points": batch}, timeout=60, ) resp.raise_for_status() + if points: logger.debug("Qdrant upsert %s — %d punten", bwb_id, len(points)) return len(points)