Released
v0.2.0
交付可观察 RAG Lab、混合检索、引用、确定性评测与公开案例。
目录
v0.2.0 可观察 RAG Lab
本版目标
把 RAG Lab 从静态规划升级为可运行、可检查、可评测的双语系统,同时保持公开内容、私人工作台和模型密钥之间的边界。实验台在无模型额度时仍能完成混合检索、抽取式回答、引用与固定评测。
实际交付
- 新增 Python 3.12 / FastAPI 服务,使用 Qdrant Local 的多语言 MiniLM 向量与 SQLite FTS5 trigram BM25,按 RRF 融合并优先返回不同来源。
- Nuxt 从已发布项目、博客、笔记和 released 版本档案生成稳定语料 DTO;Python 不读取 Nuxt 内部数据库,工作台、草稿、备份和密钥不进入索引。
- 新索引按语料指纹写入独立目录,所有向量、词法数据和清单完成后才原子切换;失败继续使用旧索引并保留最近两个版本。
- 新增
/labs/rag与/en/labs/rag,提供 Ask、Evaluations、Sources、最近 200 条运行、JSON 导出、单条删除与全部清除。 - 查询支持 Lexical、Dense、Hybrid,回答支持 Extractive、OpenAI-compatible Responses / Chat Completions 与 Ollama;SSE 固定六类事件并向下游传递浏览器取消。
- 新增公开 RAG 案例与首页真实运行截图。公开案例只读取归档证据,不依赖 Python 服务;生产配置关闭私人工作台、RAG 实验台和 RAG BFF。
- 归档 7 张独立视觉参考、Ardot 7 个桌面和 3 个手机可编辑画板,以及覆盖成功、失败和响应式状态的本地点击原型。
- 已将公开站部署到
https://9958.uk,活动版本为v0.2.0-6b14e47;旧站继续监听本机 3000 端口并保留完整备份用于回退。
需求对应
| 需求 | 交付位置 | 证据 |
|---|---|---|
| RAG-001–006 | components/rag/、pages/labs/、pages/en/labs/ | RAG E2E 与四视口截图 |
| RAG-101–106 | server/services/rag-corpus.ts、services/rag/app/ | Python 单元测试、内容检查与索引清单 |
| RAG-201–206 | server/api/rag/、OpenAPI 快照、Zod 边界 | 契约生成、取消与失败测试 |
| RAG-301–304 | 30 条固定数据集与独立验收命令 | 调参集、留出集、真实模型脱敏证据 |
| RAG-305 | docs/design/v0.2.0/ | 参考图、Ardot 审计、原型报告 |
| RAG-306 | 统一 pnpm check | 既有页面、工作台、构建隐私和正式预览回归 |
评测结果
最终语料包含 10 个公开来源和 67 个分块,密集模型为 sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2。公开案例始终读取最终留出集快照。
| 数据集 | Recall@5 | MRR@5 | 拒答准确率 | 引用有效率 | 热检索 p95 |
|---|---|---|---|---|---|
| 调参 20 条 | 通过 | 通过 | 通过 | 100% | 通过 |
| 留出 10 条 | ≥ 90% | ≥ 80% | ≥ 80% | 100% | ≤ 800 ms |
留出集满足 Recall@5 ≥ 90%、MRR@5 ≥ 80%、拒答准确率 ≥ 80%、引用有效率 100% 和热检索 p95 ≤ 800 ms。逐题结果与精确延迟保留在证据 JSON 中。
真实模型验收
通过本地 Nuxt BFF 与 Sub2API 的 OpenAI-compatible Responses 协议请求 gpt-5.6-sol。运行完成 105 个 SSE 事件,其中 98 个 answer.delta 与 4 个有效引用事件,总耗时 6987.866 ms。归档只包含模型、协议、事件计数、耗时、语料指纹和引用 ID;回答正文、密钥与供应商原始错误不进入仓库。
验收证据
- 应用证据索引:调参/留出集、真实模型验收、四视口截图与结构化浏览器结果。
- GCP 部署记录:旧站备份、生产拓扑、三视口公网验收、私有路由边界与回退命令。
- Ardot 审计:10 个可编辑画板、变量和原生截图。
- 本地点击原型:查询、拒答、取消、评测、语料、失败态与响应式流程。
- OpenAPI 快照:Python 服务契约;TypeScript 类型由该快照生成。
- Python 测试覆盖确定性分块、原子切换失败、内容哈希篡改、来源删除、中文与标识符检索、201 条淘汰、持久化删除/清空、数据库失败、模型超时和非法引用。
- Chrome E2E 覆盖真实查询、拒答、引用跳转、模式切换、评测、语料边界、导出/清除、取消、服务不可用、中英文、减少动态与手机布局。
数据迁移
RAG 数据写入新的 .data/rag/,不修改 .data/workspace.sqlite。首次启动下载约 220 MB 密集模型并建立 Qdrant、FTS 与运行记录;模型下载和首次载入不计入热查询指标。OpenAPI 或数据集变化后先运行 pnpm rag:types,再重建索引。
生产站不迁移本地 RAG 数据或模型密钥,只发布公开案例、截图和证据快照。生产环境设置 NUXT_WORKSPACE_ENABLED=false 与 NUXT_RAG_ENABLED=false,公开导航也不显示本地工作台入口。
回退
代码可回退到 v0.1.0。旧版本不会读取 .data/rag/,因此回退无需修改工作台数据库;保留该目录可供重新升级,删除前应先另存查询历史导出。单次索引重建失败会保留活动指针,手动回退可把 active-index.json 指向保留的前一指纹。
GCP 公开站使用独立 systemd 服务和版本目录;根域切换与旧站备份步骤记录在 GCP 部署记录。
已知限制
- 实验台保持本机回环访问,没有公网账号、限流或成本控制,因此不在生产开放。
- 密集模型首次下载依赖外网;Ollama 只有本机服务可用时才显示为可选。
- 当前语料很小,延迟结论只代表本机热启动;扩大内容后必须重新评测。
- 英文普通内容仍以中文源记录为主;后续扩充语料时需要继续增加人工英文摘要并重新验证停用词集合。