feat(ingestion): index embedded chunks into Qdrant on upload
Why: - POST /v1/files was reporting chunks_indexed=0/points_created=0 unconditionally — chunks were parsed and embedded but never written to Qdrant, so nothing was actually searchable after upload. Changes: - upload_source_file() now calls index_chunks() after embedding, inside the same INGESTION_TIMEOUT_SECONDS window, and marks the job failed (error_code=index_failed, 502) if it raises. - Job counters (points_created, points_soft_deleted) and the response's chunks_indexed now reflect the real indexing result instead of a hardcoded zero. - Wired PointStorage through AppResources/lifespan/the files router. Impact: - A successful upload is now searchable in Qdrant by the time 201 returns.
This commit is contained in:
@@ -49,6 +49,15 @@ class EmbedderError(IngestionError):
|
||||
"""
|
||||
|
||||
|
||||
class PointIndexingError(IngestionError):
|
||||
"""Upserting or soft-deleting Qdrant points failed.
|
||||
|
||||
Maps to `502` — like `EmbedderError`, this is an upstream dependency
|
||||
failing, not a malformed request. Kept distinct from `EmbedderError` so the
|
||||
job's `error_code` says which dependency broke.
|
||||
"""
|
||||
|
||||
|
||||
class IngestionAtCapacityError(IngestionError):
|
||||
"""`INGESTION_MAX_CONCURRENCY` in-process ingestions are already running.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user