[Bug] 知识库大批量向量写入后检索分数持续退化不自愈,需重建 HNSW 索引才能恢复
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
- #7693 của @ump45nose — đã đóng, không merge
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 28/100
Hướng nghiên cứu
The payload names the per-knowledge partial HNSW index embedding_hnsw_idx_{knowledge_id} on the embedding table, filtered by knowledge_id, and the bulk paragraph and problem-vector writes that precede the drop. Start by finding where that index is created and where batch vector writes happen, then reproduce the score drop after a large import with a REINDEX as the comparison. Done means a clear statement of whether index maintenance or rebuild is needed, with a reproducible before-and-after check. The payload does not settle whether the fix belongs in index maintenance or in the write path, so confirm scope with maintainers first.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
MaxKB 版本
v2.10.x(生产环境为 v2 定制部署,2026-10 复现)
请描述您遇到的问题
知识库经历大批量向量写入后(分批导入、批间等待向量化完成,符合规范操作),检索分数在一小时左右后出现整体退化并恒定不自愈;仅对全库重建向量并重建索引后可恢复。
具体表现(同一知识库前后对照):
- 精确标题查询的命中分数从 1.0 跌至 0.38~0.54
- 短查询分数从 0.9 量级跌至 0.37~0.57,top1 命中错误段落
- 连续多轮复测分数逐位一致,跨小时、隔夜均无变化(非暂态)
- keywords(全文检索)模式始终正常
- 同一嵌入模型的存量旧知识库始终正常(0.90~0.97)
- 内容层数据零差异(文档数/段落数/问题数/字符总量与源数据完全一致)
即:数据完整、嵌入模型服务健康、检索服务本身正常,退化发生在向量索引层。
复现步骤
- 新建知识库,绑定 embedding 模型
- 分批批量导入大量段落(我们场景:11
27 个文档、4911108 段),每批等待向量化完成 - 批量补挂大量关联问题(数百至上千条,分批写入)
- 写入完成后初期检索正常,约 50~60 分钟后同题复测分数明显下降且此后恒定
- 对该库执行全量重新向量化(会删除并重建该库 HNSW 索引)后,检索分数立即恢复
背景机制:MaxKB 为每个知识库在 embedding 表上建一个部分 HNSW 索引
(embedding_hnsw_idx_{knowledge_id} ... WHERE knowledge_id = '<kb_id>')。
大量增量插入(尤其高频短文本,如 FAQ 关联问题向量)后,HNSW 图结构退化、
近似检索召回率下降,这与 pgvector 的已知特性一致;删除操作在 HNSW 中为
标记删除,死节点同样加剧失真。逐文档 refresh 只重写数据行、不重建索引,
因此无法恢复。
预期的正确行为
批量写入完成后检索质量应保持稳定,或至少有索引维护机制避免持续退化。
备注
- 客户侧临时缓解:批量写入完成后对该索引执行 REINDEX(秒级到分钟级)即可恢复
- 涉及库规模:单库 11
27 文档、4911515 段落、440~1349 条关联问题向量
- Ngôn ngữ chính
- Python
- Star
- 23.1k
- Fork
- 3.2k
- Merge trung bình
- 41 phút
- Pull request đã merge (30 ngày)
- 480
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của 1Panel-dev/MaxKB
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
1Panel-dev/MaxKB#7780 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] 默认用cas登录 退出后自动又登录进去了Có thể đã có người làm @zyyfit đã nhận hôm nay. Đang mở
1Panel-dev/MaxKB#7828 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] 上传excel长文件 上传的文档跟文档内容提取的顺序不一致Có thể đã có người làm @zyyfit đã nhận 1 ngày trước. Đang mở
1Panel-dev/MaxKB#7809 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] 用户组加载大量用户之后页面崩了Có thể đã có người làm @zyyfit đã nhận 1 ngày trước. Đang mở
1Panel-dev/MaxKB#7798 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] 输入栏支持快捷标签Có thể đã có người làm @baixin513 đã nhận 2 ngày trước. Đang mở
1Panel-dev/MaxKB#7747 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của 1Panel-dev/MaxKB
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
UKGovernmentBEIS/inspect_ai#6512 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/c++ area/core kind/bug-report
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
tensorflow/quantum#1140 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
Kav-K/GPTDiscord#501 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
UKGovernmentBEIS/inspect_evals#2863 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày