14年程序员实战:创业搜索架构三重突破
|
那天在机房蹲着调 ES 分片,天花板漏水,一滴一滴砸在 UPS 散热口上,滋啦滋啦——不是烧了,是水蒸气糊住传感器,监控面板报了个“温度突降”,操,谁家温度会突降八度还带雾? 我原以为把倒排索引压进向量检索通道能稳住召回率,结果上线第三天凌晨两点十七分,用户搜“折叠屏手机壳防摔”,返回三条:一个硅胶表带、两个旧款 iPad 保护套,其中一条标题里根本没出现“折叠”俩字。张工盯着日志说:“term frequency 是对的。”我点点头,顺手把桌上半盒凉透的黄焖鸡扒拉到显示器右侧,酱汁蹭到键盘 F12 键缝里,现在按下去还有黏感。 优胜劣汰?真不是修辞。我们砍掉整个 query rewrite pipeline 的那天,是李姐甩过来一张 Excel,第一列写“搜索词”,第二列写“点击率”,第三列空白,第四列写“人工标注意图”。她用红笔在第 87 行画了个叉:“这个‘苹果手机贴膜 防蓝光’,你们硬给扩成‘iOS 屏幕涂层光谱抑制方案’,人点进来发现是淘宝详情页截图,连参数单位都没标,点了就走——这叫什么智能?这叫自欺。”她说完低头啃了口包子,韭菜馅儿漏出来一点,沾在口罩挂耳绳上。
文章配图,仅供参考 三重突破?呵。第一重:敢把 LTR 模型训练样本从五百万干到三十二万,只留真实成交后七十二小时内触发过二次搜索的 query-pair。不筛噪音,你永远不知道 ranker 学的是啥——它可能正在拟合客服工单编号里的日期格式。第二重:把 embedding 聚类中心全扔掉,换成用户 session 里真实跳转路径的熵值拐点。不是算相似度,是算哪条路径让鼠标悬停时间突然变长——上周四下午四点零六分,有个用户在“游戏本散热支架”和“机械键盘茶轴”之间来回切窗口十七次,最后买了个USB-C拓展坞。这事儿我记住了,但不知道为什么。我说不准。 第三重……其实不算技术突破。是老陈干的。他卸载了所有 APM 工具,只留一个 logtail 和一台旧 ThinkPad X230,屏幕裂了,用胶带横竖贴出个米字格。每天上午十点整,他手动 grep 当日搜索日志里带“怎么”开头的 query,挑前二十条,抄到本子上,手写改写建议,末尾打星号。有天我凑过去看,他正写:“‘怎么让拼多多发货快’→‘拼多多极速发货入口在哪’”,旁边批注:“别管履约链路,用户要的是按钮位置。”我刚想开口说 NLU 模块已覆盖 93% 的‘怎么’句式,他接了个电话,是女儿老师问作业交没交,他“哎哟”一声挂了,把本子往边上一推,墨水洇开一小片,像片云。 雨还在下。机房空调今天抽风,冷风直冲我后脖颈,但我没动。因为左边那台节点又开始抖——不是宕机,是 IO wait 突然跳到 97%,top 里看不出啥,iotop 却显示有个进程在疯狂读 /dev/random。查了一圈,原来是新上的 AB 测试框架在每个请求里都 init 一次 crypto/rand。我说这事儿肯定要改,可到底该改成 sync.Pool 还是直接复用全局 seed,我到现在拿不准。倒是王磊路过时瞄了一眼,说:“上次阿里云那个案例,他们用的是 /dev/urandom 加缓存层。”我没搭腔,因为他三个月前在我方案评审会上说过一模一样的话,后来他自己写的缓存层爆过两次 OOM。 我们上周撤掉了实时语义泛化服务,就是那个把“老头乐”映射到“低速电动车”的模块。撤的时候没人开会,就我在 Kibana 里删了三行 pipeline 配置,按回车。两秒后搜索 QPS 上涨 0.3%,CTR 下跌 1.8%,DAU 不变。我说不准这算好算坏,但我知道,上个月底那个把“考研政治冲刺押题”错标成“公务员面试模拟”的样本,现在不会进了训练集——因为规则引擎直接挡在了入口,没进 embedding 层。这点我敢打包票。 有天夜里十二点多,服务器报警邮件弹出来,subject 写着“query timeout exceed 1200ms for /search”。我爬起来打开笔记本,还没连上跳板机,看见窗外路灯底下站着个穿灰夹克的男人,在喂流浪猫。他蹲着,左手攥着塑料袋,右手慢慢倒猫粮,没看手机。我盯着看了十九秒,忽然想起我们最早用 SolrCloud 时候的熔断策略——超时三秒就 fallback 到 BM25,可当时根本没人管“fallback 后的排序逻辑要不要重跑 score”,反正展示区写着“为您找到相关结果”,字不大,但够亮。 我现在想把 query parser 拆出来单跑,用 Lua 写个轻量 state machine,不碰 AST,就做 token 边界修复。比如“iPhone16pro max 256g”里那个空格——它到底是分隔符还是品牌名一部分?我们原来靠词典+规则判断,现在想试试滑动窗口加 n-gram 概率阈值。但这事我得先去楼下便利店买包烟。不是为提神,是老板娘总把收银台第二格抽屉拉开一半,露出底下那叠未拆封的“黄山(新制)”,我每次扫码付钱,她都要低头找零钱,指甲油剥了一小块,在灯下泛白。 明早九点,我和运维约了重启那台跑 BERT rerank 的 GPU 节点。不是升级驱动,也不是换卡——就是让它彻底断电三分钟,再通电。我不确定能不能解决 embedding 缓存漂移的问题。但我确认一件事:当搜索框输入法候选栏跳出“苹果”时,下面第五个词是“苹果手机维修店”,而用户没点它,反而清空重输“iPhone 屏幕碎了怎么办”。这事发生过七百三十二次。这比所有 AUC 数值都硬。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


创业前端架构:合规·可信·防护三位一体
无障碍创业:PHP工程师的15年技术跃迁路
元数据驱动:无障碍设计创业的双轮技术基石
政策合规:数据安全创业的深度学习加速器
2024电商创业者悄悄放弃的3个技术增长惯性
创业信息流设计:流量、合规、效率的三角平衡术
创业媒体增长:技术驱动流量与合规双轮并进
