小红书,美团,微博,今日头条……内容如海。作为互联网时代的生活基础设施,信息流产品是多数应用软件的一项必备属性。
然而,你是否曾为重复的微博段子、类似的热点文章、雷同的商品推荐而心烦?若某一款内容资讯产品持续一天推荐重复内容,既会影响用户的信息获取,又无形中浪费了很多推荐位(如果这些位置放的是广告,那就是赤裸裸的收入损失啊!)
对于一款信息流产品,如何找到一款数据处理利器嵌入产品开发之中,实现有效的新闻去重、新闻/广告召回,是打造多元丰饶的信息体验的重中之重。
SmartNews,这家估值 20 亿美元、目前美国新闻类应用程序中估值最高的公司,曾是 Milvus 向量数据库的使用者,后成为 Milvus 数据库的共同开发者。从单向调用到共同开发,让我们一起聆听他们的经验之谈吧!
SmartNews 总部位于日本东京,成立于 2012 年,在日本市场一直高居新闻类 App 的榜首,在美国市场则是粘性最强的新闻类 App。根据 App Annie 的统计,截止于 2021 年 7 月,SmartNews 用户月均浏览时间在所有新闻类应用程序中位列第一,超过 AppleNews 和 Google News 的总和。
伴随着用户量和用户粘性的快速提升,SmartNews 在广告推荐的工程和算法领域面临更多的挑战。例如:海量离散特征在大规模机器学习系统中的使用、通过向量相似度搜索来加速非结构化数据检索等。
2021 年初,SmartNews 动态广告算法团队向 AI 基础设施团队提出了广告优化搜索召回功能的需求。彼时,工程团队都是自行封装 Faiss,开发维护挑战较大,加上整个 SmartNews 正在扩大和深化机器学习的应用,于是 AI 基础架构团队决定提供通用的向量管理和近邻搜索服务。
经过近两个月的调研选型,有多种语言 SDK、支持在线持续更新、已经拥有上千家企业用户的开源向量数据库 Milvus 进入了 AI 基础设施工程师 Shu 的视野。
在 SmartNew 的广告业务中,为了解决海量的用户和千万级的动态广告(Dynamic Ads)的匹配和推荐,向量数据库 Milvus 成了 SmartNews 的非结构化数据处理神剑——通过将两种无法比较的数据映射成计算机能识别的向量、实现对他们的计算,连接用户与商品。今年第二季度,Shu 在 SmartNews 公司内 Kubernetes 集群上完成 Milvus 1.0(单机/集群、CPU/GPU)的部署。
Milvus 部署教程(文档地址:https://milvus.io/docs)
Milvus 1.0 上线后的第一个使用案例是由广告团队提出的广告向量召回项目,初期约百万级的向量数据,严格要求 P99 latency < 10ms。经过反复的试验和基准测试(benchmark),Shu 和业务团队一起选定了速度更快的 Milvus 1.0 单机模式。
6 月上旬,Shu 和算法团队同学将 Milvus 数据库应用于更多的相关业务场景,在 SmartNews 尝试了线上实时更新数据/索引并进行聚合。
截止目前,Milvus 数据库在 SmartNews 的数个案例场景中被使用,包括广告推荐等。
技术的跃迁要求每一个开发者必须充分利用他人的知识、经验和额外的智力来解决不断出现的新问题。
对 Milvus 数据库逐渐上手之后,Shu 等 SmartNews 开发人员又发现了动态重加载(hot reload)、向量自动过期(item TTL)、同 ID 覆蓋向量(item update/replace)等新的向量数据库相关功能需求。与此同时,Milvus 社区中有不少用户存在类似需求,SmartNews AI 基础设施负责人 Dennis Zhao 就决定向社区贡献动态重加载相关功能,由 SmartNews 的工程团队主要负责设计开发参与设计。Dennis Zhao 表示:“SmartNews 团队一直受益于 Milvus 社区,如果一个功能既是我们产品亟需的又是对社区伙伴们有用的,我们很乐意去实现和分享。”
动态重加载是一种在调试过程中进行代码编辑的功能。有了这一功能,开发者们不需要在代码断点停止或者重启应用程序,就可以对代码进行修改,并立即看到代码修改的效果。
7月下旬,SmartNews 工程师 Yusup 向 Milvus 社区提出用表重命名(collection alias)方式实现动态重加载功能的设计方案。所谓表重命名,即开发者对特定数据仓库的诉求是内容可变的情况下名字不变,就好像一个柜子的编号和位置长期不变、柜子中拿进拿出的东西总是在随时间而变化。
由于模型的不断迭代以及动态广告的不断更新,SmartNews 需要每天更新近一亿向量,而当时 Milvus 数据库的更新机制是先删除再插入,以这种机制更新上亿向量,往往需要耗费数小时。重新创建新的集合存放更新的向量,就会涉及到新旧集合的切换,不停为新的内容打造新的「柜子」。如何让切换更加平滑, 对上层业务没有感知,表重命名就显得很必要了。
从这一需求出发, Milvus 社区的工程师着手帮助 SmartNews 团队理解 Milvus 的架构,一个半月后,Milvus 社区收到并接受了由 Yusup 提交的动态重加载完整实现代码,并发布在了不久后上线的 Milvus 2.0 rc7 中。目前,由 AI 基础设施团队牵头,SmartNews 正进行着Milvus 2.0的部署,并开始迁移现有的 Milvus 1.0 项目。
Milvus CLI 文档:create alias
Milvus 数据库支持表重命名之后,企业进行线上业务切换时更加平滑,尤其对于一些用户请求量比较大的互联网企业,极大地提升了用户体验。负责沟通 SmartNews 的 Milvus 社区数据工程师小龙说:“表重命名来源于 SmartNews 的实际业务需求,也由 SmartNews 开发实现,让 Milvus 真正做到了从用户中来,到用户中去,期待未来 Milvus 能有更多这样的贡献者,共同建设更繁荣的社区。”
“目前 SmartNews 已经在一些广告业务中采用 Milvus 数据库作为离线计算的向量数据库。伴随着 Milvus 2.0 正式版的临近,特别是动态重加载功能的实现,SmartNews 的工程团队期待未来更多的业务场景中,借助 Milvus 数据库构建更加实时、可靠的系统和服务。” Dennis Zhao 说道。
作为开源社区的一员,SmartNews 对于技术人才的开源项目也颇为关注哦
在交流过程中,SmartNews AI 基础设施负责人 Dennis Zhao 表示,如果候选人的 GitHub 中的项目代码优雅、注释清晰且坚持维护,这对候选人是大大的加分项。目前 SmartNews 北京和上海办公室的算法/后端/ 前端等热招岗位持续招聘中,对打造信息流产品感兴趣的开发小伙伴,欢迎关注公众号「SmartNews CN」或点击下方链接了解更多详情!
热招职位|SmartNews中国区研发中心持续招聘中
Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。
Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 数据库是 LF AI & Data 基金会的毕业项目,能够管理大量非结构化数据集,在新药发现、推荐系统、聊天机器人等方面具有广泛的应用。
上一篇
下一篇
随着以色列和哈马斯之间的冲突进入第五天,全世界的注意力都聚焦在加沙地带,这世界上绝大多数人都不想看到这一令人震惊的血 ...
Hello~大傢好!我是前國傢開發銀行助學貸款銀行經辦小仙女一枚。前兩天已經跟各位小同學詳細講解瞭國傢開發銀行助學貸款的政...