{"id":25081753,"url":"https://github.com/joseprsm/rexify","last_synced_at":"2025-04-15T07:24:42.085Z","repository":{"id":45465707,"uuid":"384205745","full_name":"joseprsm/rexify","owner":"joseprsm","description":"🦖 Streamlined Recommender Systems with TensorFlow and KubeFlow","archived":false,"fork":false,"pushed_at":"2023-05-09T13:26:27.000Z","size":489,"stargazers_count":18,"open_issues_count":6,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T04:35:09.077Z","etag":null,"topics":["kubeflow","kubeflow-pipelines","recommender-system","rexify","tensorflow","tensorflow-recommenders"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joseprsm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-08T17:46:53.000Z","updated_at":"2024-03-03T15:16:25.000Z","dependencies_parsed_at":"2023-02-16T22:25:22.429Z","dependency_job_id":null,"html_url":"https://github.com/joseprsm/rexify","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joseprsm%2Frexify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joseprsm%2Frexify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joseprsm%2Frexify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joseprsm%2Frexify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joseprsm","download_url":"https://codeload.github.com/joseprsm/rexify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249025069,"owners_count":21200236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kubeflow","kubeflow-pipelines","recommender-system","rexify","tensorflow","tensorflow-recommenders"],"created_at":"2025-02-07T05:18:20.754Z","updated_at":"2025-04-15T07:24:42.065Z","avatar_url":"https://github.com/joseprsm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"https://storage.googleapis.com/rexify/1659986918545.png\" height=\"200\"/\u003e\n    \u003cbr\u003e\n\u003cp\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://circleci.com/gh/joseprsm/rexify\"\u003e\n        \u003cimg alt=\"Build\" src=\"https://img.shields.io/circleci/build/github/joseprsm/rexify?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/joseprsm/rexify/blob/main/LICENSE\"\u003e\n        \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/joseprsm/rexify?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://rexify.readthedocs.io\"\u003e\n        \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-online-success?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/rexify/\"\u003e\n        \u003cimg alt=\"GitHub release\" src=\"https://img.shields.io/github/v/release/joseprsm/rexify?style=flat-square\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nRexify is a library to streamline recommender systems model development.\n\nIn essence, Rexify adapts dynamically to your data, and outputs high-performing TensorFlow\nmodels that may be used wherever you want, independently of your data. Rexify also includes\nmodules to deal with feature engineering as Scikit-Learn Transformers and Pipelines.\n\nWith Rexify, users may easily train Recommender Systems models, just by specifying what their\ndata looks like. Rexify also comes equipped with pre-built machine learning pipelines which can\nbe used serverlessly. \n\n## What is Rexify?\n\nRexify is a low-code personalization tool, that makes use of traditional machine learning \nframeworks, such as Scikit-Learn and TensorFlow, to create scalable Recommender Systems\nworkflows that anyone can use.\n\n### Who is it for?\n\nRexify is a project that simplifies and standardizes the workflow of recommender systems. It is \nmostly geared towards people with little to no machine learning knowledge, that want to implement\nsomewhat scalable Recommender Systems in their applications.\n\n## Installation\n\nThe easiest way to install Rexify is via `pip`:\n\n```shell\npip install rexify\n```\n\n## Quick Tour\n\nRexify is meant to be usable right out of the box. All you need to set up your model is interaction\ndata - something that kind of looks like this:\n\n| user_id | item_id | timestamp  | event_type  |\n|---------|---------|------------|-------------|\n| 22      | 67      | 2021/05/13 | Purchase    |\n| 37      | 9       | 2021/04/11 | Page View   |\n| 22      | 473     | 2021/04/11 | Add to Cart |\n| ...     | ...     | ...        | ...         |\n| 358     | 51      | 2021/04/11 | Purchase    |\n\nAdditionally, we'll have to have configured a schema for the data.\nThis schema is what will allow Rexify to generate a dynamic model and preprocessing steps.\nThe schema should be comprised of two dictionaries (`user`, `ìtem`) and two key-value \npairs: `event_type` (which should point to the column of the event type) and `timestamp` (\nwhich should point to the timestamp column)\n\nEach of these dictionaries should consist of features and internal data types, \nsuch as: `id`, `category`, `number`. More data types will be available \nin the future.\n\n```json\n{\n  \"user\": {\n    \"user_id\": \"id\",\n    \"age\": \"number\"\n  },\n  \"item\": {\n    \"item_id\": \"id\",\n    \"category\": \"category\"\n  },\n  \"timestamp\": \"timestamp\"\n  \"event_type\": \"event_type\"\n}\n```\n\nEssentially, what Rexify will do is take the schema, and dynamically adapt to the data.\n\nThere are two main components in Rexify workflows: `FeatureExtractor` and `Recommender`.\n\nThe `FeatureExtractor` is a scikit-learn Transformer that basically takes the schema of \nthe data, and transforms the event data accordingly. Another method `.make_dataset()`, \nconverts the transformed data into a `tf.data.Dataset`, all correctly configured to be fed\nto the `Recommender` model.\n\n`Recommender` is a `tfrs.Model` that basically implements the Query and Candidate towers. \nDuring training, the Query tower will take the user ID, user features, and context, to \nlearn an embedding; the Candidate tower will do the same for the item ID and its features. \n\nMore information about how the `FeatureExtractor` and the `Recommender` works can be found \n[here](https://rexify.readthedocs.io/en/latest/overview/architecture.html). \n\nA sample Rexify workflow should sort of look like this:\n\n````python\n\nimport pandas as pd\n\nfrom rexify import Schema, FeatureExtractor, Recommender\n\nevents = pd.read_csv('path/to/events/data')\nschema = Schema.load('path/to/schema')\n\nfe = FeatureExtractor(schema, users='path/to/users/data', items='path/to/events/data', return_dataset=True)\nx = fe.fit(events).transform(events)\n\nmodel = Recommender(**fe.model_params)\nmodel.compile()\nmodel.fit(events, batch_size=512)\n````\n\nWhen training is complete, you'll have a trained `tf.keras.Model` ready to be used, as\nyou normally would. \n\nAlternatively, you can also run:\n\n```shell\npython -m rexify.pipeline -p events=$EVENTS_PATH -p users=$USER_PATH -p items=$ITEMS_PATH -p schema=$SCHEMA_PATH\n```\n\nWhich will generate a `pipeline.json` file, that you can use on Kubeflow Pipelines (or Vertex AI Pipelines).\n\n## License\n\n[MIT](https://github.com/joseprsm/rexify/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoseprsm%2Frexify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoseprsm%2Frexify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoseprsm%2Frexify/lists"}