v1.5.3

sergeyzwezdin/hubav1.5.3Jun 14, 2026by danielaskdd

AI Summary

This release introduces offline VDB rebuild for vector drift recovery and concurrency improvements under gunicorn. It includes critical upgrade notes for existing Milvus deployments, requiring a one-time automatic migration of legacy collections.

Key Highlights

  • Offline VDB rebuild tool for vector drift recovery
  • MAX_ASYNC now acts as a true cross-worker limit under gunicorn
  • Workspace path traversal validation added for security
  • Server mode (uvicorn/gunicorn) and worker count status display

New Features

  • Offline VDB rebuild for vector drift recovery
  • MAX_ASYNC cross-worker concurrency limit
  • Server mode and worker count status display
  • WebUI injection of system-suggested user prompts

Full Release Notes

## ⚠️ Upgrade Notes (existing Milvus deployments)

Due to PR #3228, upgrading an existing Milvus deployment triggers a one-time automatic migration on the next initialize_storages(): the legacy collection is copied into the new model-suffixed collection (schema-upgraded and byte-truncated) before the service becomes ready. Plan for the extra startup time and write throughput on large collections.

* The migration runs only once. After the suffixed collection exists, every subsequent startup validates and loads it directly and does not re-scan or re-migrate the legacy collection.
* The legacy data is never deleted automatically. For safety the old {workspace}_{namespace} collection is kept, not dropped, so vector storage is temporarily duplicated after the upgrade. This is intentional — the migration does not reclaim the space for you.
  * Action required: once you have confirmed the migration succeeded and the new system works correctly against the model-suffixed collection, manually drop the old {workspace}_{namespace} collection yourself to reclaim storage. Until you do, the duplicated vectors remain on disk.
* Legacy collections whose data is incompatible (different vector dimension, or an old simple schema with no vector field) are not migrated; a fresh suffixed collection is created instead and the legacy data is left untouched.

## What's New
* feat(tools): add offline VDB rebuild for vector drift recovery by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3243
* feat(concurrency): make MAX_ASYNC a true cross-worker limit under gunicorn + aggregated queue stats by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3253
* refact(Milvus): Fix Milvus dynamic field overflow + isolate collections by embedding model by @ye-guan-xing in https://github.com/HKUDS/LightRAG/pull/3228

## What's Changed
* fix(pipeline): retry malformed multimodal analysis JSON by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3242
* Add workspace path traversal validation by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3244
* 🐛 fix(mongo): close MongoClient on ClientManager release by @skymacro in https://github.com/HKUDS/LightRAG/pull/3251
* Fix Qdrant/PostgreSQL resurrecting cleared data: clear workspace's legacy rows on drop by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3254
* fix(neo4j): bind APOC labelFilter as parameter to prevent Cypher injection by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3257
* fix(milvus): survive transient connection failures during schema migration by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3258
* fix(milvus): bound data-node memory during schema migration (OOM mitigation) by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3259
* fix(milvus): load source collection before migration query_iterator by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3260
* refactor(concurrency): use asyncio.get_running_loop().time() in async contexts by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3264
* feat(status): show server mode (uvicorn/gunicorn) and worker count by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3265
* feat(webui): inject two one-time system-suggested user prompts by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3266
* chore(deps): bump the react group in /lightrag_webui with 2 updates by @dependabot[bot] in https://github.com/HKUDS/LightRAG/pull/3247
* chore(deps): bump the frontend-minor-patch group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/HKUDS/LightRAG/pull/3250
* chore(deps-dev): bump typescript-eslint from 8.60.0 to 8.60.1 in /lightrag_webui in the build-tools group by @dependabot[bot] in https://github.com/HKUDS/LightRAG/pull/3249
* chore(deps): bump the ui-components group across 1 directory with 13 updates by @dependabot[bot] in https://github.com/HKUDS/LightRAG/pull/3270
* fix(parser): strip C0 control separators from parsed body before persist by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3272
* chore(pipeline): remove dead _write_lightrag_document_from_content_list by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3273
* fix(bedrock): use modelId for Cohere embeddings invoke_model call by @kimnamu in https://github.com/HKUDS/LightRAG/pull/3268
* fix: centralize sync-wrapper event-loop guard with accurate errors by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3271
* fix(mineru): surface backend transport failures in doc_status error_msg by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3274
* fix(llm): close Anthropic AsyncClient on error and non-streaming return by @skymacro in https://github.com/HKUDS/LightRAG/pull/3261
* fix: DRY refactor of WebUI NDJSON stream parsing by @returnSGD in https://github.com/HKUDS/LightRAG/pull/3269
* chore: bump pre-commit hooks (ruff v0.6.4 → v0.15.17) and reformat by @danielaskdd in https://github.com/HKUDS/LightRAG/pull/3276
* docs: add Japanese README by @eltociear in https://github.com/HKUDS/LightRAG/pull/3275

## New Contributors
* @ye-guan-xing made their first contribution in https://github.com/HKUDS/LightRAG/pull/3228
* @skymacro made their first contribution in https://github.com/HKUDS/LightRAG/pull/3251
* @kimnamu made their first contribution in https://github.com/HKUDS/LightRAG/pull/3268
* @returnSGD made their first contribution in https://github.com/HKUDS/LightRAG/pull/3269

**Full Changelog**: https://github.com/HKUDS/LightRAG/compare/v1.5.2...v1.5.3