feat: persist isolated vector snapshots and exact retrieval #10

Closed
Kronecker wants to merge 17 commits from kronecker/feat/backend-vector-retrieval AGit into dev
Collaborator

T07 将当前有效审核的文本 chunks 接入本地 Provider 和 pgvector,交付完整向量快照、独立发布及精确余弦检索。此前 #9 仅独立评估,本 PR 完成实际数据库/API 贯通。

依赖:待审 #8 与独立 #9,间接继承 #7/#6;目标 dev。双方阶段文档均保留;本阶段差异可从组合基线 bd0b738 比较,功能提交在其后。请按依赖审阅,不将待审实现视为已合并。

  • 0006_vectors 增加固定空间、版本、chunk_vectors、独立状态和发布历史。复合外键同时限定文本版本/空间/维度,检查实际向量维度、单位范数;同维度不同修订仍不能混用。
  • 仅构建当前有效文本发布的完整快照。模型加载/编码在目录发布锁外,编码前后复核审核语料、代数、指针和实际 chunks。失败或竞争完整回滚,不留下部分版本或替换旧发布。
  • 管理接口沿用 admin/Cookie/CSRF;公开 POST /api/retrieval/vector 按 chunk 精确余弦排序,保存完整出处、原文偏移、模型空间和发布版本。既有 keyword 接口保持,历史接口拓展为 keyword/vector 判别联合,前端类型调用层同步。
  • CPU 编码默认关闭、延迟加载、仅离线固定缓存;API 不下载权重。单进程编码忙立即 503,上限2000 chunks;token 超限422,不截断。RRF、ANN、RAG及领域评测仍待后续阶段。

验证:

  • backend: ruff check / ruff format --check 通过;pytest -q:153 passed, 1 skipped。
  • 跳过项为显式启用的真实模型用例,已在独立 CPU 环境另行运行:1 passed。固定 BGE small 实际生成512维向量,经 HTTP 构建/发布/检索,pgvector保存,后端新进程重启后发布状态、命中与历史一致。
  • 轻量测试使用明确的坐标 fixture,覆盖精确距离、同宽/异宽空间、跨文本约束、锁外推理与版本竞争、错误/数据库失败回滚、权限、迁移兼容;fixture不是实际模型输出或领域实验。
  • frontend npm run build 通过。实际模型测试文字仅为合成占位,不代表真实文旅事实、领域正确率或生产性能。

迁移/回滚:先备份再 alembic upgrade head,vector扩展须位于public,不会移动共享扩展。降级到0005_chunk_indexes删除本阶段向量数据/发布,保留目录、文本、账号和检索历史;旧版历史响应兼容性及运行步骤见 docs/VECTOR_API.md。完整字段、错误、容量和前端交接均在该文档。

Docker容器、前端浏览器联调、核验后的领域问题集仍待验收。环境、模型缓存、原始报告与本机进度不入库。

T07 将当前有效审核的文本 chunks 接入本地 Provider 和 pgvector,交付完整向量快照、独立发布及精确余弦检索。此前 #9 仅独立评估,本 PR 完成实际数据库/API 贯通。 依赖:待审 #8 与独立 #9,间接继承 #7/#6;目标 dev。双方阶段文档均保留;本阶段差异可从组合基线 bd0b738 比较,功能提交在其后。请按依赖审阅,不将待审实现视为已合并。 - 0006_vectors 增加固定空间、版本、chunk_vectors、独立状态和发布历史。复合外键同时限定文本版本/空间/维度,检查实际向量维度、单位范数;同维度不同修订仍不能混用。 - 仅构建当前有效文本发布的完整快照。模型加载/编码在目录发布锁外,编码前后复核审核语料、代数、指针和实际 chunks。失败或竞争完整回滚,不留下部分版本或替换旧发布。 - 管理接口沿用 admin/Cookie/CSRF;公开 POST /api/retrieval/vector 按 chunk 精确余弦排序,保存完整出处、原文偏移、模型空间和发布版本。既有 keyword 接口保持,历史接口拓展为 keyword/vector 判别联合,前端类型调用层同步。 - CPU 编码默认关闭、延迟加载、仅离线固定缓存;API 不下载权重。单进程编码忙立即 503,上限2000 chunks;token 超限422,不截断。RRF、ANN、RAG及领域评测仍待后续阶段。 验证: - backend: ruff check / ruff format --check 通过;pytest -q:153 passed, 1 skipped。 - 跳过项为显式启用的真实模型用例,已在独立 CPU 环境另行运行:1 passed。固定 BGE small 实际生成512维向量,经 HTTP 构建/发布/检索,pgvector保存,后端新进程重启后发布状态、命中与历史一致。 - 轻量测试使用明确的坐标 fixture,覆盖精确距离、同宽/异宽空间、跨文本约束、锁外推理与版本竞争、错误/数据库失败回滚、权限、迁移兼容;fixture不是实际模型输出或领域实验。 - frontend npm run build 通过。实际模型测试文字仅为合成占位,不代表真实文旅事实、领域正确率或生产性能。 迁移/回滚:先备份再 alembic upgrade head,vector扩展须位于public,不会移动共享扩展。降级到0005_chunk_indexes删除本阶段向量数据/发布,保留目录、文本、账号和检索历史;旧版历史响应兼容性及运行步骤见 docs/VECTOR_API.md。完整字段、错误、容量和前端交接均在该文档。 Docker容器、前端浏览器联调、核验后的领域问题集仍待验收。环境、模型缓存、原始报告与本机进度不入库。
Kronecker added 8 commits 2026-10-16 09:52:32 +08:00
saint closed this pull request 2026-10-16 22:52:33 +08:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: saint/border-red-post-nalati#10