Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hvuhsg/kiko
Kiko general purpose recommendation system
https://github.com/hvuhsg/kiko
Last synced: 7 days ago
JSON representation
Kiko general purpose recommendation system
- Host: GitHub
- URL: https://github.com/hvuhsg/kiko
- Owner: hvuhsg
- Created: 2022-07-25T09:06:54.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-10T15:48:24.000Z (7 months ago)
- Last Synced: 2024-06-20T15:46:03.283Z (5 months ago)
- Language: Go
- Size: 87.9 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# kiko
Kiko general purpose recommendation system---
[![Go](https://github.com/hvuhsg/kiko/actions/workflows/go.yml/badge.svg)](https://github.com/hvuhsg/kiko/actions/workflows/go.yml)
[![Bring Them Home](https://badge.yehoyada.com)](https://www.standwithus.com/)### Key concepts
**Node**: Entity that can have connections to other entities, for example, a player in a sports group or color in a clothing shop.
**Connection**: The desired distance between entity A and entity B.
**Optimization**: The system is constantly trying to update its node placement to be as close as possible to the node's connections. This process is called optimization.### Usage example
If we have a clothing shop and want to know what items to offer to a customer by its purchase history, We can create a node for every product in the store and create nodes for sizes (S, M, L, XL) colors, gender, categories, etc... then connect every node to its appropriate size color category, etc... after that we will create a node for every customer and connect it to the customer purchased items nodes. After all of that process, we will have the option to just ask the system for the 5 most recommended nodes for the customer node and offer them to the customer.### API
The system support REST API as well as a gRPC server.
REST: OpenAPI [schema](/communication/rest/spec.yaml).
gRPC: ProtoBuf [schema](/communication/grpc/spec.proto).
The repo also contains an [insomnia workspace](insomnia.rest) (a better looking postman) with all of the requests and enviroments.