1、背景
知乎,是一个大规模的综合性知识内容平台,注册用户数累计2.2 亿,有超过 3000 万的问题,超过 1.3 亿个回答,存在着大量的推荐场景。
先讲讲推荐系统的总体流程和架构:
显示推荐系统的流程
知乎早期部分推荐系统总体架构
存在哪些问题呢?
首先,对多路召回支持不友好;
其次,召回索引全部基于Redis;
第三点,通用特征和通用监控建设都较困难。
第四点,缺乏统一的校验和落地方案。
第五点,不支持多队列融合。
2、推荐系统重构之路
重构前的思考
1)语言的选择。
2)如何支持多队列混排和支持多路召回的问题。
3)召回索引除了Redis 之外,引入其他索引数据库。
首先,我们先看语言上的选择方案。
我们选择Golang,具体理由
1)Golang 天然的优势,支持高并发并且占用资源相对较少。
2)知乎内部基础组件的 Golang 版生态比较完善。
重构之路——架构设计
3、遇到的问题及应对方案
1)离线任务和模型的管理问题。
2)特征日志问题。
3)服务监控问题。
遇到的问题
特征日至问题:理想与现实
服务监控问题
3、未来挑战
- 数据、规模快速扩张;
- 策略用用和业务隔离的协调;
- 资源调度和性能开销;
- 多IDC机房数据的同步。
4、总结
- 重构语言的选择,关键跟公司技术背景和业务场景结合起来;
- 架构尽量灵活,并不断自我迭代;
- 监控要早点开展,并尽可能底层化、通用化。
作者:孙付伟
来源:Aicon全球人工智能与机器学习技术大会 资料分享
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。