直接回答:这些坑集中在四个地方——数据模型、文本处理、运行方式、以及方向判断。前两类返工成本最高,第三种决定平台能不能长期跑,第四种决定做的方向对不对。提前知道这些,能省下大量来回改的时间。
数据模型上的坑,返工成本最高
坑一:先写功能,后定字段
现象:功能加得很快,但每加一个就要改表结构,历史数据要迁移。
原因:没先想清楚"一个内容对象到底有哪些属性"。采集、切分、检索三个阶段各自需要的字段没有统一设计。
后来的做法:先把三类字段定下来——来源信息(地址、抓取时间、站点)、内容信息(标题、正文、片段)、处理状态(各阶段状态、失败原因)。后续新增字段都往这三类里归,不再随意加。
坑二:把"文章"和"片段"合成一张表
现象:想统计"多少篇文章入库"时要写复杂的去重查询,更新一篇文章要处理一堆关联行。
原因:文章和片段是一对多关系,塞进一张表后两种实体的生命周期混在一起。
后来的做法:拆成两张表,片段表通过外键指向文章表。文章层管内容变更,片段层管检索单元,职责清晰,统计也简单。
坑三:没有记录向量模型的版本
现象:后来换了一次向量模型,分不清库里哪些向量是旧模型生成的。
原因:只记录了向量值,没记录它是谁生成的。
后来的做法:在片段表里加一个模型标识字段,每次写入都带上。换模型时就能准确筛选出需要重算的范围。
文本处理上的坑,直接影响检索质量
坑四:正文提取只用通用算法
现象:抓下来的"正文"里混着导航、推荐位、评论区,切片后检索结果经常指向一堆无关内容。
原因:通用提取算法按标签密度猜测正文范围,对结构不规范的站点会失效。
后来的做法:通用算法打底,重点站点写定向规则。给规则做一个可配置的清单,遇到提取异常的站点就加一条,不必改代码逻辑。
坑五:按字符数硬切片段
现象:片段被从句子中间切断,检索出来的内容读不通,也答不了问题。
原因:只考虑了长度,没考虑语义边界。
后来的做法:优先按标题层级切,其次按段落,最后才考虑长度。单节超过 500 字再拆,拆的时候在句子边界断开。切分规则对检索质量的影响,比换向量模型更大。
坑六:没剥离模板就做内容哈希
现象:增量更新看起来在跑,但每次都比对出"内容已变化",等于每次都全量重算。
原因:页面里的"最新文章""阅读量"这类内容每次访问都不同,哈希自然每次都不一样。
后来的做法:哈希前先做归一化——去掉导航与页脚、去掉动态数字、压缩空白,只对正文主体算哈希。改动很小,效果立竿见影。
坑七:中文处理直接套英文方案
现象:中文内容的检索命中率明显低于英文。
原因:英文按空格分词,中文需要额外处理;同一概念的中文表述变体又更多。
后来的做法:统一术语并在入库时做同义词映射,检索时把常见变体一并纳入。这部分工作在《中文内容在 AI 搜索里的表现比英文差吗》里有更完整的说明。
运行方式上的坑,决定能不能长期跑
坑八:全量重跑
现象:跑一次的时间越来越长,向量化的开销明显上升。
原因:每次都把全部内容重新处理一遍,而其中九成没有任何变化。
后来的做法:改成增量——条件请求过滤、正文哈希判定、只有正文变化才重新向量化。具体流程见《增量更新》。
坑九:任务状态只存在内存里
现象:进程重启后,跑到一半的任务丢了,只能从头再来。
原因:状态没有持久化。
后来的做法:每个页面的处理状态写进数据库,任务变成"查询待处理项并推进状态"。中断后重启就能续跑,也不再怕偶发的进程退出。
认知上的坑,决定方向对不对
坑十:先优化内容,最后才查抓取
现象:花了很多时间改标题、调结构,引用情况却毫无变化。
原因:抓取或索引环节本来就是断的,后面所有优化都没有作用对象。
后来的做法:把抓取与索引的检查放在最前面,并且做成定期任务。这条经验同样适用于不用自建平台的人,排查顺序见《为什么 AI 从来不提我的网站》。
这十条的共同点
回头看,这十条里有七条属于同一类问题:处理顺序错了——先做容易看效果的,后做决定成败的。
所以如果重新做一遍,顺序会是:
1 | 1. 确认抓取与索引是通的 |
越靠前的环节,改动的代价越大。
常见问题(FAQ)
这些坑哪些是可以提前避免的?
数据模型和切分规则这两类可以提前设计,避免成本最高。运行方式和认知类几乎只能踩过才知道——但也正因为如此,知道"顺序比技巧重要"这件事本身,就能省掉一半返工。
已经踩了坑,要不要推倒重来?
多数情况不需要。上面十条里有八条是局部调整:加一个字段、换一个哈希方式、把状态写进数据库。只有数据模型严重不合理时才值得重建,而判断标准很简单——如果每加一个功能都要改表结构,就该重建了。
不做平台,自己做内容也要注意这些吗?
其中三条完全适用:**抓取优先于内容优化、切分与结构影响检索、以及中文术语要统一。**其余的属于工程问题,自建平台才会遇到。
有没有值得抄的现成方案?
建议抄结构而不是抄实现:看别人怎么划分数据对象、怎么设计状态机、怎么处理增量,这些思路普遍适用。具体实现依赖你的数据规模和成本约束,照搬反而会引入不需要的复杂度。
小结
- 十条坑里返工成本最高的是数据模型,其次是被低估的文本切分。
- 增量、状态持久化、成本控制决定平台能否长期运行。
- 中文内容的处理需要额外投入,套英文方案会明显掉质量。
- 最重要的一条认知:抓取与索引的检查必须排在最前面。
- 十条里有七条本质是"顺序错了",顺序比技巧更值得先想清楚。
本系列的其余几篇:整体架构与技术选型、内容采集与结构化流水线、AI 收录监测与效果度量、把检测数据变成一份能读的报告、增量更新、部署与运维。如果你也踩过别的坑,欢迎到留言板补充。