用途:为向量数据库构建轻量Web界面,实现可视化、排序、筛选与标注。数据库存放由原始输入(音频片段、相机陷阱图像、文本片段)计算出的嵌入向量,每行对应一个嵌入。
主要能力:界面采用四级层次结构——1) 数据库选择:从指定目录的数据库列表中选一个浏览;2) 标签选择/定义:选择聚焦的标注标签,选项根据数据库中已有标注动态确定,也可定义新标签;3) 排序与筛选配置:按查询向量相似度、分类器分数、排序、分页或过滤已标注项等方式决定如何排序和筛选;4) 行可视化与标注:按第3级配置展示选定数据库的行及其当前标签的标注。
架构要点:静态前端(index.html 完全静态,用 fetch() 请求后端并动态渲染)配 API 后端(Python 服务暴露 /api/... 返回 JSON);后端对首次请求的搜索/推理结果做内存缓存,后续请求快速返回;大媒体片段用流式端点按需切片,不预切盘或转 base64;客户端分页并在翻页时自动暂停媒体播放器;为媒体播放器设定明确宽度防止被压缩;使用多线程后端,SQLite 连接放入 thread-local 存储,避免跨线程共享;流式写入用 try-except 捕获 BrokenPipeError 与 ConnectionResetError;简单排序筛选分页在客户端 JavaScript 完成;共享状态写入用 threading.Lock() 保护;JSON 序列化需显式转换 NumPy 类型,并用 sanitize_float 处理 NaN 和 Infinity;界面遵循 Material Design 3 亮色方案,用 :root 中的 CSS 自定义属性做设计令牌,不依赖外部 CSS 框架;在 iframe 中用内联 snackbar 替代 alert/confirm/prompt,并用 AbortController 设置拉取超时,错误时解析响应 .error 字段。
适用场景:需要浏览和标注嵌入向量数据库的生态学等研究场景,例如生物声学或相机陷阱项目,具体媒体渲染与自定义推理模型由下游技能实现。
限制:严禁向用户生产数据库写入、修改或插入测试标注;如需测试数据库操作,必须先将数据库复制到临时位置(如会话临时目录)并在副本上测试,不得将测试数据留在生产数据库。模板为通用版本,需复制到项目工作目录后适配。