Gorse Recommender System Engine
Gorse is an open-source recommendation system developed in the Go programming language, aimed at providing a universal platform that can easily integrate with various online services. By simply importing data about items, users, and their interactions, Gorse is capable of automatically training models to generate personalized recommendations for individual users.
Key Features
-
Multi-Source Recommendations: Gorse supports a variety of recommendation methods including popularity-based, latest, user-based, item-based, and collaborative filtering approaches, making it versatile in catering to diverse recommendation needs.
-
AutoML: The system offers automated machine learning capabilities, enabling the search and optimization of the best recommendation models without manual intervention in data processing.
-
Distributed Prediction: Gorse is designed for scalability, allowing for horizontal scaling during the recommendation phase after conducting training on a single node. This ensures efficient handling of large datasets and numerous user requests.
-
RESTful APIs: It provides RESTful APIs for effortless data management and easy retrieval of recommendations, streamlining integration with various frontend applications.
-
Online Evaluation: Gorse includes features for analyzing the performance of its recommendations in real-time, based on the most recently received user feedback.
-
Dashboard: A comprehensive graphical user interface is available for overseeing data management, monitoring system health, and checking the status of the cluster.
Quick Start Guide
For newcomers, Gorse offers a playground mode to simplify the initial setup for experimenting with the recommender system, specifically demonstrated with GitHub repositories.
To get started on a Linux or macOS system, execute the following command:
curl -fsSL https://gorse.io/playground | bash
For Docker users, the following command will spin up the environment:
docker run -p 8088:8088 zhenghaoz/gorse-in-one --playground
Once set up, the system downloads sample data from GitRec, loads it into Gorse, and provides access through a dashboard at http://localhost:8088
.
Developers can experiment by adding user interactions into the system. For example, if a user named Bob, who is a frontend developer, has starred several repositories, this data can be inserted into Gorse to generate personalized recommendations.
After inputting Bob’s interactions, pulling relevant recommendations can be done with:
curl http://127.0.0.1:8088/api/recommend/bob?n=10
This fetches a list of 10 tailor-made repository recommendations for Bob, focusing on frontend technologies he’s interested in.
Architecture
Gorse's architecture leverages a combination of different nodes to manage and distribute tasks efficiently:
- Master Node: Responsible for model training, managing configurations, handling non-personalized recommendations, and overseeing system membership.
- Server Node: Handles the exposure of RESTful APIs and manages online, real-time recommendation requests.
- Worker Nodes: Focused on offline recommendation processes for individual users.
Data is stored in several popular databases, including MySQL, MongoDB, Postgres, or ClickHouse, while Redis is used to cache intermediary results. This configuration allows for robust data handling and real-time processing capabilities.
Additionally, the system's dashboard on the master node facilitates easy monitoring, data import/export, and overall system status checks.
Community and Contribution
Gorse is built on continuous contributions from a dedicated community. The project warmly welcomes bug reports, feedback, feature suggestions, or direct code contributions through pull requests. For contributors interested, further instructions can be found in the project's CONTRIBUTING.md
file.
Acknowledgments
Gorse draws inspiration from several noteworthy projects, including:
- Guibing Guo's librec
- Nicolas Hug's Surprise
- Golang Samples's gopher-vector
This foundation has significantly influenced Gorse's development and functionality, contributing to its success as a powerful and adaptable recommendation system.