Metarank: Echtzeit-Personalisierung als Service
Metarank ist ein Open-Source-Ranking-Dienst. Es kann Ihnen dabei helfen, eine personalisierte semantische/neuronale Suche und Empfehlungen zu erstellen.
Wenn Sie einfach loslegen möchten, versuchen Sie Folgendes:
Mit Metarank können Sie Ihre bestehende Suche und Empfehlungen intelligenter gestalten:
Metarank ist schnell :
Sparen Sie Ihre Entwicklungszeit :
Metarank hilft Ihnen beim Aufbau fortschrittlicher Ranking-Systeme für Suche und Empfehlungen:
Blogbeiträge:
Meetups und Konferenzvorträge:
Sie können mit der Metarank-Demo auf demo.metarank.ai spielen:
Die Demo selbst und die verwendeten Daten sind Open Source und Sie können eine Kopie der Trainingsereignisse und der Konfigurationsdatei im Github-Repo herunterladen.
Lassen Sie uns zeigen, wie Sie in knapp einer Minute mit der Personalisierung von Inhalten mit LambdaMART-basiertem Reranking beginnen können:
Wir werden den Ranklens-Datensatz verwenden, der in unserer Demo verwendet wird. Laden Sie also einfach die Datendatei herunter
curl -O -L https://github.com/metarank/metarank/raw/master/src/test/resources/ranklens/events/events.jsonl.gz
Wir werden wieder die Konfigurationsdatei aus unserer Demo verwenden. Es nutzt den In-Memory-Speicher, sodass keine weiteren Abhängigkeiten erforderlich sind.
curl -O -L https://raw.githubusercontent.com/metarank/metarank/master/src/test/resources/ranklens/config.yml
Im letzten Schritt verwenden wir den standalone
-Modus von Metarank, der Training und Ausführung der API in einem Befehl vereint:
docker run -i -t -p 8080:8080 -v $( pwd ) :/opt/metarank metarank/metarank:latest standalone --config /opt/metarank/config.yml --data /opt/metarank/events.jsonl.gz
Sie werden einige nützliche Ausgaben sehen, während Metarank startet und die Daten durcharbeitet. Sobald dies erledigt ist, können Sie Anfragen an localhost:8080
senden, um personalisierte Ergebnisse zu erhalten.
Hier werden wir mit mehreren Filmen interagieren, indem wir auf einen davon klicken und die Ergebnisse beobachten.
Sehen wir uns zunächst die anfängliche Ausgabe an, die von Metarank ohne bereitgestellt wird, bevor wir damit interagieren
# get initial ranking for some items
curl http://localhost:8080/rank/xgboost
-d ' {
"event": "ranking",
"id": "id1",
"items": [
{"id":"72998"}, {"id":"67197"}, {"id":"77561"},
{"id":"68358"}, {"id":"79132"}, {"id":"103228"},
{"id":"72378"}, {"id":"85131"}, {"id":"94864"},
{"id":"68791"}, {"id":"93363"}, {"id":"112623"}
],
"user": "alice",
"session": "alice1",
"timestamp": 1661431886711
} '
# {"item":"72998","score":0.9602446652021992},{"item":"79132","score":0.7819134441404151},{"item":"68358","score":0.33377910321385645},{"item":"112623","score":0.32591281190727805},{"item":"103228","score":0.31640256043322723},{"item":"77561","score":0.3040782705414116},{"item":"94864","score":0.17659007036183608},{"item":"72378","score":0.06164568676567339},{"item":"93363","score":0.058120639770243385},{"item":"68791","score":0.026919880032451306},{"item":"85131","score":-0.35794106000271037},{"item":"67197","score":-0.48735167237049154}
# tell Metarank which items were presented to the user and in which order from the previous request
# optionally, we can include the score calculated by Metarank or your internal retrieval system
curl http://localhost:8080/feedback
-d ' {
"event": "ranking",
"fields": [],
"id": "test-ranking",
"items": [
{"id":"72998","score":0.9602446652021992},{"id":"79132","score":0.7819134441404151},{"id":"68358","score":0.33377910321385645},
{"id":"112623","score":0.32591281190727805},{"id":"103228","score":0.31640256043322723},{"id":"77561","score":0.3040782705414116},
{"id":"94864","score":0.17659007036183608},{"id":"72378","score":0.06164568676567339},{"id":"93363","score":0.058120639770243385},
{"id":"68791","score":0.026919880032451306},{"id":"85131","score":-0.35794106000271037},{"id":"67197","score":-0.48735167237049154}
],
"user": "test2",
"session": "test2",
"timestamp": 1661431888711
} '
Lassen Sie uns nun mit den Artikeln
93363
interagieren
# click on the item with id 93363
curl http://localhost:8080/feedback
-d ' {
"event": "interaction",
"type": "click",
"fields": [],
"id": "test-interaction",
"ranking": "test-ranking",
"item": "93363",
"user": "test",
"session": "test",
"timestamp": 1661431890711
} '
Jetzt personalisiert Metarank die Elemente, die Reihenfolge der Elemente in der Antwort wird unterschiedlich sein
# personalize the same list of items
# they will be returned in a different order by Metarank
curl http://localhost:8080/rank/xgboost
-d ' {
"event": "ranking",
"fields": [],
"id": "test-personalized",
"items": [
{"id":"72998"}, {"id":"67197"}, {"id":"77561"},
{"id":"68358"}, {"id":"79132"}, {"id":"103228"},
{"id":"72378"}, {"id":"85131"}, {"id":"94864"},
{"id":"68791"}, {"id":"93363"}, {"id":"112623"}
],
"user": "test",
"session": "test",
"timestamp": 1661431892711
} '
# {"items":[{"item":"93363","score":2.2013986484185124},{"item":"72998","score":1.1542776301073876},{"item":"68358","score":0.9828904282341605},{"item":"112623","score":0.9521647429731446},{"item":"79132","score":0.9258841742518286},{"item":"77561","score":0.8990921381835769},{"item":"103228","score":0.8990921381835769},{"item":"94864","score":0.7131600718467729},{"item":"68791","score":0.624462038351694},{"item":"72378","score":0.5269765094008626},{"item":"85131","score":0.29198666089255343},{"item":"67197","score":0.16412780810560743}]}
Sehen Sie sich eine ausführlichere vollständige Quickstart-Referenz an.
Wenn Sie Fragen haben, zögern Sie nicht, unserem Slack beizutreten!
Dieses Projekt wird unter der Apache 2.0-Lizenz veröffentlicht, wie in der Lizenzdatei angegeben.