https://github.com/gorse-io/gorse
Gorse open source recommender system engine
https://github.com/gorse-io/gorse
collaborative-filtering go knn machine-learning recommender-system
Last synced: 10 days ago
JSON representation
Gorse open source recommender system engine
- Host: GitHub
- URL: https://github.com/gorse-io/gorse
- Owner: gorse-io
- License: apache-2.0
- Created: 2018-08-14T11:01:09.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-05-11T13:44:19.000Z (9 months ago)
- Last Synced: 2025-05-11T14:00:01.882Z (9 months ago)
- Topics: collaborative-filtering, go, knn, machine-learning, recommender-system
- Language: Go
- Homepage: https://gorse.io
- Size: 11.9 MB
- Stars: 8,925
- Watchers: 64
- Forks: 813
- Open Issues: 103
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-go - gorse - An offline recommender system backend based on collaborative filtering written in Go. (Machine Learning / Search and Analytic Databases)
- awesome-repositories - gorse-io/gorse - Gorse open source recommender system engine (Go)
- my-awesome - gorse-io/gorse - filtering,go,knn,machine-learning,recommender-system pushed_at:2026-01 star:9.3k fork:0.8k Gorse open source recommender system engine supports multimodal content via embedding (Go)
- AiTreasureBox - gorse-io/gorse - 11-03_9178_0](https://img.shields.io/github/stars/gorse-io/gorse.svg)|Gorse open source recommender system engine| (Repos)
- awesome-production-machine-learning - Gorse - io/gorse.svg?style=social) - Gorse aims to be a universal open-source recommender system that can be quickly introduced into a wide variety of online services. (Industry Strength Recommender System)
- awesome - gorse-io/gorse - Gorse open source recommender system engine supports multimodal content via embedding (Go)
- awesome-arsenal - Gorse - 推荐系统。 (武器库 / 后端)
- awesome-go-extra - gorse - 08-14T11:01:09Z|2022-08-25T13:43:07Z| (Machine Learning / Advanced Console UIs)
- awesome-hacking-lists - gorse-io/gorse - Gorse open source recommender system engine (Go)
- stars - gorse-io/gorse - Gorse open source recommender system engine (Go)
README
# Gorse Recommender System Engine


[](https://github.com/gorse-io/gorse/actions/workflows/build_test.yml)
[](https://codecov.io/gh/gorse-io/gorse)
[](https://discord.gg/x6gAtNNkAE)
[](https://twitter.com/gorse_io)
[](https://gurubase.io/g/gorse)
Gorse is an open-source recommendation system engine written in Go. Gorse aims to be a universal open-source recommender system that can be quickly introduced into a wide variety of online services. By importing items, users, and interaction data into Gorse, the system will automatically train models to generate recommendations for each user. Project features are as follows.

- **Multi-source:** Recommend items from latest, user-to-user, item-to-item, collaborative filtering and etc.
- **AutoML:** Search the best recommendation model automatically in the background.
- **Distributed prediction:** Support horizontal scaling in the recommendation stage after single node training.
- **RESTful APIs:** Expose RESTful APIs for data CRUD and recommendation requests.
- **Online evaluation:** Analyze online recommendation performance from recently inserted feedback.
- **GUI Dashboard:** Provide GUI dashboard for data management and system monitoring.
## Quick Start
The playground mode has been prepared for beginners. Just set up a recommender system for GitHub repositories by the following commands.
```bash
docker run -p 8088:8088 zhenghaoz/gorse-in-one --playground
```
The playground mode will download data from [GitRec](https://gitrec.gorse.io/) and import it into Gorse. The dashboard is available at `http://localhost:8088`.

After the "Generate item-to-item recommendation" task is completed on the "Tasks" page, try to insert several feedbacks into Gorse. Suppose Bob is a developer who interested in LLM related repositories. We insert his star feedback to Gorse.
```bash
read -d '' JSON << EOF
[
{ \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"ollama:ollama\", \"Value\": 1.0, \"Timestamp\": \"2022-02-24\" },
{ \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"huggingface:transformers\", \"Value\": 1.0, \"Timestamp\": \"2022-02-25\" },
{ \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"rasbt:llms-from-scratch\", \"Value\": 1.0, \"Timestamp\": \"2022-02-26\" },
{ \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"vllm-project:vllm\", \"Value\": 1.0, \"Timestamp\": \"2022-02-27\" },
{ \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"hiyouga:llama-factory\", \"Value\": 1.0, \"Timestamp\": \"2022-02-28\" }
]
EOF
curl -X POST http://127.0.0.1:8088/api/feedback \
-H 'Content-Type: application/json' \
-d "$JSON"
```
Then, fetch 10 recommended items from Gorse. We can find that LLM-related repositories are recommended for Bob.
```bash
curl http://127.0.0.1:8088/api/recommend/bob?n=10
```
For more information:
- Read [official documents](https://gorse.io/docs/)
- Visit [official demo](https://gitrec.gorse.io/)
- Discuss on [Discord](https://discord.gg/x6gAtNNkAE) or [GitHub Discussion](https://github.com/gorse-io/gorse/discussions)
## Architecture
Gorse is a single-node training and distributed prediction recommender system. Gorse stores data in MySQL, MongoDB, Postgres, or ClickHouse, with intermediate results cached in Redis, MySQL, MongoDB and Postgres.
1. The cluster consists of a master node, multiple worker nodes, and server nodes.
1. The master node is responsible for model training, non-personalized recommendation, configuration management, and membership management.
1. The server node is responsible for exposing the RESTful APIs and online real-time recommendations.
1. Worker nodes are responsible for offline recommendations for each user.
In addition, the administrator can perform system monitoring, data import and export, and system status checking via the dashboard on the master node.

## Contributors
Any contribution is appreciated: report a bug, give advice or create a pull request. Read [CONTRIBUTING.md](CONTRIBUTING.md) for more information.
## Acknowledgments
`gorse` is inspired by the following projects:
- [Guibing Guo's librec](https://github.com/guoguibing/librec)
- [Nicolas Hug's Surprise](https://github.com/NicolasHug/Surprise)
- [Golang Samples's gopher-vector](https://github.com/golang-samples/gopher-vector)