Skip to content

v1.0.3 修复 ChromaDB 跨进程 HNSW 索引不兼容

Latest

Choose a tag to compare

@QM-newer QM-newer released this 29 May 02:18

修复 ChromaDB 跨进程 HNSW 索引不兼容问题,并新增向量库自动恢复机制。语音模块(voice/)无变动。


🐛 问题根因

ChromaDB 1.5.x 的 Rust HNSW 后端在 Windows 跨进程场景下存在序列化不兼容:

  • 同一进程内构建完索引可以立即查询 ✅
  • 新进程加载时触发 "Error loading hnsw index"
  • 导致 load_vector_index() 返回 None,整个 RAG pipeline 失效

🔧 解决方案:三级恢复策略

直接从 chroma.sqlite3 读取文档和元数据(绕过损坏的 HNSW 索引文件),删除旧索引后重建。

📁 涉及改动

文件 改动
src/indexing/vector_builder.py 新增 _extract_records_from_chroma_sqlite();三级恢复逻辑
src/factory.py 加载时传入 v6 SQLite 作为 fallback
scripts/rebuild_vector_store.py 新增:独立向量库重建工具
indices/vector_store/ 新增:跨进程兼容的新版向量索引
requirements.txt 新增 langchain-corelangchain-chroma

✅ 验证

修复后所有测试用例正常命中 RAG,置信度 0.75–0.95。