推荐一款基于 Golang 的简单实用的推荐引擎

系统 开源
Gorse是一个用Go语言开发的开源推荐系统。Gorse项目的目标是成为一个通用的开源推荐系统,可以快速嵌入到各种在线服务中。

互联网服务个性化才是王道。无论是直播平台、内容推送、在线购物还是在线视频观看,我们所看到的内容,无疑都是被平台精心策划过的。这种策划就是通过推荐系统产生的,推荐系统可以根据我们过去的行为和偏好来预测你可能喜欢什么,系统通过对大量数据的分析来识别用户偏好,从而提供个性化的体验,让用户保持参与度。

比较常用的推荐算法例如:

  • 协同过滤
  • 基于内容的推荐
  • 矩阵分解
  • 深度学习算法
  • 流行度算法
  • 多臂老虎机算法

另外,在大模型发展如日中天的当下,利用大模型来增强推荐系统也是一个非常有前景的设计。可以利用大模型的语义理解、多模态特征融合、在线学习能力、特征提取等能力,构建精准的用户画像、提升内容理解与表示、实现实时推荐和在线学习,从而显著提升推荐系统的精准度和用户体验。但目前,大模型在算力资源依赖、数据隐私和模型泛化等也存在一些挑战。

在各种推荐算法当中,协同过滤算法根据用户行为和用户之间的相似性进行推荐,是一种比较常见的个性化推荐方法。

本文推荐的推荐系统是Gorse

源码地址:https://github.com/gorse-io/gorse

GitHub星:8.4K

Gorse是一个用Go语言开发的开源推荐系统。Gorse项目的目标是成为一个通用的开源推荐系统,可以快速嵌入到各种在线服务中。只要将项目(产品、内容或者服务等)、用户和交互数据导入到Gorse中,系统将自动训练模型,为每个用户生成个性化推荐。

Gorse的执行过程

如下图所示:

Gorse的架构

Gorse支持在单节点训练,在预测推荐过程采用分布式的系统。Gorse的数据存储支持MySQL、MongoDB或Postgres,中间结果缓存支持Redis、MySQL、MongoDB和Postgres。架构图如下:

Gorse架构中,集群由一个主节点、多个工作节点和服务器节点组成。主节点负责模型训练、非个性化物品推荐、配置管理和会员管理。服务器节点负责公开RESTful API和在线实时推荐。工作节点负责为每个用户提供离线建议。此外,管理员还可以通过主节点上的仪表板进行系统监控、数据导入导出、系统状态检查等操作。

Gorse的特征:

  • 支持多源推荐:推荐热门、最新、基于用户、基于项目和协同过滤的项目。
  • 自动匹配模型:在后台自动搜索最佳推荐模型。
  • 分布式预测:在单节点训练后,支持推荐阶段的横向扩展。
  • RESTful API:为数据CRUD和推荐请求公开RESTful API。
  • 在线评估:从最近插入的反馈中分析在线推荐性能。
  • 仪表盘:提供GUI用于数据管理、系统监控和集群状态检查。
  • Docker支持:使用Docker轻松安装

Gorse的优势:

  • 高可扩展和高性能:Gorse针对处理大型数据集和提供实时建议进行了优化,使其适用于流量大的应用程序。
  • 灵活性:支持多种算法,并可轻松自定义以适应不同的用例,无论您是需要协同过滤、基于内容的推荐还是混合模型。
  • 开源:作为一个开源项目,Gorse可以免费使用、修改和集成到您现有的系统中。它受益于社区的持续贡献和改进。
  • 易于集成:Gorse提供了API和清晰的文档,无论您是构建电子商务网站、新闻门户还是流媒体服务。都可以直接集成到应用程序中。

怎么启动?

由于Gorse支持Docker,如果想尝试一下,可以直接以Docker方式启动。

docker run -p 8088:8088 zhenghaoz/gorse-in-one --playground

在浏览器中访问:http://localhost:8088

即可了解Gorse的GUI仪表盘。

如何反馈数据?

在GUI界面的“任务”页面上完成“查找项目的邻居”任务后,即可尝试将几个反馈插入到Gorse中。假设Bob是一名前端开发人员,他在GitHub中加入了几个“前端存储库”。我们把他的星星反馈插入到Gorse。

read -d '' JSON << EOF
[
    { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"vuejs:vue\", \"Timestamp\": \"2022-02-24\" },
    { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"d3:d3\", \"Timestamp\": \"2022-02-25\" },
    { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"dogfalo:materialize\", \"Timestamp\": \"2022-02-26\" },
    { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"mozilla:pdf.js\", \"Timestamp\": \"2022-02-27\" },
    { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"moment:moment\", \"Timestamp\": \"2022-02-28\" }
]
EOF

curl -X POST http://127.0.0.1:8088/api/feedback \
   -H 'Content-Type: application/json' \
   -d "$JSON"

 获得用户推荐?

在反馈数据后,从Gorse的API我们可以发现哪些“前端相关的存储库”被推荐给Bob。

curl http://127.0.0.1:8088/api/recommend/bob?n=10
责任编辑:赵宁宁 来源: andflow
相关推荐

2023-08-21 19:37:21

得物DGraph引擎

2024-02-20 07:32:18

Rsync远程同步工具传输数据

2021-08-06 09:50:13

SpringBoot框架Java

2011-08-16 16:24:28

全文检索数据挖掘

2019-08-30 14:30:11

2021-11-16 14:55:50

命令行Linux开源

2019-02-25 10:18:43

工具代码测试

2021-01-05 15:35:15

电脑软件插件

2023-10-31 08:03:33

开源电子签名组件

2020-12-15 07:54:40

工具Hutoolgithub

2020-12-15 15:08:17

工具Java线程

2020-02-17 07:20:22

SSH远程连接工具Linux

2011-06-17 11:22:33

jQueryjQuery插件

2018-11-26 14:30:08

Python开发工具编程语言

2015-02-09 13:17:37

2009-11-25 10:39:08

无线路由器

2011-04-21 09:37:24

开源商城系统

2024-04-19 13:27:43

插件开发

2021-06-09 09:52:29

开源Pyroscope代码

2020-12-03 09:33:58

前端开发工具
点赞
收藏

51CTO技术栈公众号