Gorse v0.5 正式发布
Gorse v0.5 正式发布
在长达一年半的开发后,Gorse v0.5 正式发布。本次发布包含破坏性更改,因此值得写一篇文章来介绍新特性和升级指南。
新特性
新的数据结构
用户的
Subscribe字段移除。在早期的设计中,Subscribe字段用于存储用户订阅的标签,但实际上并没有被使用。类似订阅这样的业务逻辑驱动的推荐建议使用外部推荐API来实现。用户和物品的
Labels字段支持任意JSON对象。在此基础上,部分推荐算法可以指定使用的嵌套字段。例如在物物推荐算法中,可以指定使用Labels.embedding嵌入向量来计算物品相似度。反馈新增
Value字段。Value字段用于表示反馈的强度,例如视频观看的百分比、商品的评分等。一方面,正负反馈可以根据Value字段设置阈值来区分;另一方面,未来的更新会结合Value字段作为权重更好地训练推荐模型。插入反馈时,可以选择累加(POST)Value字段,或者覆盖(PUT)原有的Value字段。
新的推荐算法
最新物品在物品表上直接查询获得。最新物品可以实时获得,无需等待推荐系统排序生成。借助数据库索引,最新物品的查询速度非常快,将作为内置(无需配置)的推荐算法提供。
新增非个性化推荐算法,可以根据自定义规则对物品进行排序。例如,可以根据物品的标签字段对物品进行排序,从而实现“按评分最高推荐”或“按价格最低推荐”等功能。
移除热门物品推荐算法。由于非个性化推荐算法完全可以实现热门物品推荐的功能,并且比热门推荐更加灵活,因此移除了热门物品推荐算法和香港的RESTful API。
新增物物推荐算法,替换 v0.4 中相似物品推荐算法。相比相似物品推荐算法,物物推荐算法有以下优势:
- 可以创建多个物物推荐算法实例
- 可以指定使用的物品标签字段
- 支持基于嵌入向量的相似度计算
新增用户到用户推荐算法,替换 v0.4 中的相似用户推荐算法。新算法的优势和物物推荐算法类似。
新增外部推荐API,可以将外部的业务逻辑集成到推荐流水线中。例如,可以将用户订阅内容添加到推荐候选集中,参与最终排序。目前Fetch API的实现还比较简单,未来会支持更多功能。
其他更新内容
其他和推荐流水线无关的重要更新内容将不再赘述,请在文档中自行体会。这些更新包括但不限于:
- 修复因为为每个
Category保存缓存而导致的缓存数据量过大的问题 - 控制台支持OpenID Connect登录
- 主节点到从节点的gRPC通信支持TLS加密
- SQLite支持集群部署(仅限测试环境)
- 所有推荐API支持使用多个
Category参数过滤推荐结果 - ...
升级指南
配置文件更新
参考最新的配置文件示例更新您的配置文件。主要的配置变更包括:
- 正反馈类型支持对
Value字段设置表达式,例如read>=3表示查看次数大于等于3的反馈为正反馈,请按需修改。 - 热门推荐、相似物品推荐和相似用户推荐算法的配置项被移除,请迁移到非个性化推荐算法、物物推荐算法和用户到用户推荐算法。
- 其他配置项的命名和默认值可能有所变更,请仔细对比。
数据库变更
如果您使用的是MongoDB数据库,那么不需要进行任何数据迁移操作。但是关系型数据库(MySQL、Postgres、SQLite)用户需要进行以下变更:
- 用户表删除
Subscribe字段,不删除会导致插入用户失败。 - 反馈表新增
Value字段和Updated字段,但是Gorse会自行添加该字段。 - 如果缓存数据库使用Redis,请确保配置了RediSearch和RedisTimeseries模块,否则缓存将无法写入。
注意
如果您使用的不是MongoDB数据库,实际上最安全的升级方式是重新部署Gorse v0.5并重新导入数据。虽然我们尽力保证数据库的向后兼容性,但由于数据结构的变更,仍然存在数据损坏的风险。
结语
如果您在升级过程中遇到任何问题,请随时在GitHub上提交issue,我们会尽快协助您解决问题。期待您继续使用Gorse推荐系统,并欢迎提出宝贵的建议和反馈!
