阅读清单跑通了,不必立刻升级成“大而全的 AI 平台”。选一个自己会用的小功能,写下怎样才算做好,再动手。评估报告已有可运行版本;下面的分页、搜索和后台任务仍是扩展练习,并没有实现或部署。

想补哪一段,就挑哪一项

想理解什么 小项目 第一版边界 怎么检查
请求与数据库 给阅读清单加分页 按 ID 取下一页,不加账户 中间插入新记录,翻页不重复、不漏掉原有记录
搜索为什么找错 为自己选的 10 篇笔记做搜索 标题与摘要关键词搜索,不接 LLM 手写 5 个查询和期望结果,观察同义词漏召回
评估怎样进入工程 运行评估报告后,再补分组门槛 固定样本,逐题比较新旧输出 总分上涨但某类退步,仍能按事先约定的规则拦下
为什么需要后台任务 批量导入一份文档清单 先本地队列和单 worker,不接付费 API 中途退出后重启,重复任务不重复入库

这些不是难度排名。只想知道网站怎么上线,看前面的 CI/CD 一章就够;对 ML 更感兴趣,可以直接做评估报告。

挑 10 篇公开笔记,保存 id、title、summary、url,先用小 JSON 文件,不上向量数据库。给定“token 怎么切”,标题里只有 Tokenization,简单字面匹配可能找不到。这时补一个同义词映射就能看到变化,不必一开始就买 embedding API。

记录每个查询的前几个结果,不只测“接口返回了 200”。后面加 BM25 或 embedding 时,固定文档快照、查询和候选(candidate)数量,看看具体哪个查询改善、哪个变差。

如果要抓外站,还要处理许可、访问限制、文档版本和不可信内容。第一版直接用自己有权使用的文本,别让爬虫成为项目的全部。接着读 TF-IDF / BM25 或现有 RAG 小例子。

评估报告:把“涨了一分”拆开看

评估报告这一章已经把“改善两题、退步一题”做成了能运行的 CLI 和网页,缺题、重复 ID、错误标签类型都会报错。先跑通它,不用再从空文件起步。

下一步可以补一个分组门槛:整体分数不下降,但非关键的 evidence 组退步时,也要拦下(no-evidence 两题都是关键题,一退步现有规则就会拦下)。先写出会失败的样例,再改判断逻辑,最后把报告里的规则说明一起改掉。不要只改返回码,页面却仍说旧规则。

也可以增加运行时间和 token 用量,但别把不同单位直接相加变成一个“综合分”。想进一步估计可靠性,再读评估协议;小样本里的一次上涨,不是模型质量已被证明。

后台任务:接收成功,不等于已经做完

假设一次导入要处理 100 个文件。如果让浏览器一直等,关掉页面就不知道进度。可以先返回任务 ID 和 queued,由 worker 去做;页面再查询 running / succeeded / failed。

变化 需要补的规则
请求返回 202 只说明任务已接收,不显示“导入完成”
worker 中途退出 任务状态(task state)要能恢复,不能只在内存里
同一个任务重试 用稳定的文件 / 版本标识避免重复写入
某个文件失败 记录失败项和原因,不用整批“成功”掩盖

先用本地文件或 SQLite 存任务状态,把重启实验做通,再考虑专门的队列系统。锁、租约、重试间隔和任务幂等都有用,但不用在第一版同时解决所有分布式问题。后训练的中断恢复是另一种场景,可以对照哪些状态不能丢。

做完一个,比开十个坑更有用

给自己的 README 留四样东西:运行命令、一次正常结果、一个失败例子、还没解决什么。再请朋友只按说明跑一遍,看看他卡在哪儿。这个反馈通常比再加一个首页动效更能说明项目哪里还没讲清。

返回小项目导读

本页术语 2
候选 candidate
召回阶段捞出来、等待精排挑选的内容
任务状态 task state
执行任务时保存的目标、已知信息、进度和待确认事项