CINXE.COM
TF-Ranking: A Scalable TensorFlow Library for Learning-to-Rank
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="description" content="Posted by Xuanhui Wang and Michael Bendersky, Software Engineers, Google AI Ranking, the process of ordering a list of items in a way that maximize..."><meta name="keywords" content="open source,Deep Learning,Information Retrieval,TensorFlow"><link rel="canonical" href="http://research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" /><meta property="og:title" content="TF-Ranking: A Scalable TensorFlow Library for Learning-to-Rank"><meta property="og:url" content="http://research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/"><meta property="og:description" content="Posted by Xuanhui Wang and Michael Bendersky, Software Engineers, Google AI Ranking, the process of ordering a list of items in a way that maximize..."><meta property="og:image" content="https://storage.googleapis.com/gweb-research2023-media/images/72065375fc4d494b20b3e6e4441739ca-i.width-800.format-jpeg.jpg"><meta property="og:image:secure_url" content="https://storage.googleapis.com/gweb-research2023-media/images/72065375fc4d494b20b3e6e4441739ca-i.width-800.format-jpeg.jpg"><meta property="og:type" content="Website"> <title>TF-Ranking: A Scalable TensorFlow Library for Learning-to-Rank</title> <meta name="description" content="Posted by Xuanhui Wang and Michael Bendersky, Software Engineers, Google AI Ranking, the process of ordering a list of items in a way that maximize..." /> <meta name="viewport" content="width=device-width, initial-scale=1 viewport-fit=cover"/> <link rel="icon" type="image/png" href="/gr/static/assets/favicon.ico"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" href="https://fonts.googleapis.com/css2?family=Product+Sans&family=Google+Sans+Display:ital@0;1&family=Google+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&family=Google+Sans+Text:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap" as="style"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Product+Sans&family=Google+Sans+Display:ital@0;1&family=Google+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&family=Google+Sans+Text:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap" rel="stylesheet"> <link href="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.css" rel="stylesheet" /> <link href="https://www.gstatic.com/glue/v27_1/glue-material.min.css" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="/gr/static/css/googleresearch.css?id=0c26ea1fed8bdd0324f9f4fad1f6a470"> <script> window.dataLayer = window.dataLayer || []; dataLayer.push({ publishDate: '20181205', wordCount: '1076' }); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-K8QBZ7Q'); </script> <!-- End Google Tag Manager --> </head> <body class=" js-google-tag-wrapper" data-gt-page-path="http://research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" data-env="production"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-K8QBZ7Q" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <header class="global-header glue-header glue-header--single not-glue"> <a href="#page-content" class="glue-header__skip-content">Jump to Content</a> <div class="glue-header__bar glue-header__bar--mobile not-glue"> <div class="glue-header__tier not-glue"> <!-- mobile lockup component --> <div class="glue-header__container"> <div class="glue-header__lock-up"> <!-- Hamburger button component --> <div class="glue-header__hamburger"> <button class="glue-header__drawer-toggle-btn" aria-label="Open the navigation drawer"> <svg class="glue-icon glue-icon--24px" role="presentation" aria-hidden="true"> <use href="/gr/static/assets/icons/glue-icons.svg#menu"></use> </svg> </button> </div> <div class="glue-header__logo"> <a class="glue-header__logo-link" href="/" title="Google Research"> <!-- Logo component --> <div class="glue-header__logo-container"> <svg role="presentation" aria-hidden="true" alt='Google' class="glue-icon glue-icon glue-header__logo-svg"> <use href="/gr/static/assets/icons/glue-icons.svg#google-color-logo"></use> </svg> </div> <span class="glue-header__logo--product">Research</span> </a> </div> </div> </div> </div> </div> <div class="glue-header__bar glue-header__bar--desktop glue-header__drawer"> <div class="glue-header__tier"> <!-- desktop lockup component --> <div class="glue-header__container"> <div class="glue-header__lock-up"> <div class="glue-header__logo"> <a class="glue-header__logo-link" href="/" title="Google Research"> <!-- Logo component --> <div class="glue-header__logo-container"> <svg role="presentation" aria-hidden="true" alt='Google' class="glue-icon glue-icon glue-header__logo-svg not-glue --dark-logo"> <use href="/gr/static/assets/icons/glue-icons.svg#google-solid-logo"></use> </svg> <svg role="presentation" aria-hidden="true" alt='Google' class="glue-icon glue-icon glue-header__logo-svg --light-logo"> <use href="/gr/static/assets/icons/glue-icons.svg#google-color-logo"></use> </svg> </div> <span class="glue-header__logo--product">Research</span> </a> </div> </div> </div> <!-- linkbar component --> <div class="glue-header__container glue-header__container--linkbar"> <nav class="glue-header__link-bar navigation js-gt-global-nav-wrapper"> <ul class="glue-header__list"> <li class="glue-header__item js-sub-nav-parent --parent" data-gt-primary="Who we are" > <button class="glue-header__link js-sub-nav-target" aria-haspopup="true" aria-expanded="false" > <span class=""> Who we are <span class="icon icon--caret"></span> </span> </button> <div class="navigation__sub js-sub-nav" role="menu"> <div class="navigation__sub__container"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Who we are <span class="sr-text">menu</span> </button> <hr/> </div> <div class="block-nav_drawer_columns_content"> <div class="navigation__sub--content" data-gt-secondary="Defining the technology of today and tomorrow."> <div class="navigation__sub__wrapper"> <div class="navigation__sub__heading"> <h2 class="headline-3">Defining the technology of today and tomorrow.</h2> </div> <ul class="navigation__sub__columns"> <li data-gt-secondary="Philosophy"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Philosophy </h2> <p class="navigation__sub__columns__description caption">We strive to create an environment conducive to many different types of research across many different time scales and levels of risk.</p> <a href="http://research.google/philosophy/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Philosophy</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/philosophy/" > Philosophy </a> </div> </li> <li data-gt-secondary="People"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> People </h2> <p class="navigation__sub__columns__description caption">Our researchers drive advancements in computer science through both fundamental and applied research.</p> <a href="http://research.google/people/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our People</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/people/" > People </a> </div> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="glue-header__item js-sub-nav-parent --parent" data-gt-primary="Research areas" > <button class="glue-header__link js-sub-nav-target" aria-haspopup="true" aria-expanded="false" > <span class=""> Research areas <span class="icon icon--caret"></span> </span> </button> <div class="navigation__sub js-sub-nav" role="menu"> <div class="navigation__sub__container"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Research areas <span class="sr-text">menu</span> </button> <hr/> </div> <div class="block-nav_drawer_columns_link_list"> <div class="navigation__sub--list"> <div class="navigation__sub__wrapper"> <ul class="navigation__sub__columns"> <li data-gt-secondary="Research areas"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading">Research areas</h2> <ul> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/" > Explore all research areas </a> </li> </ul> </div> <div class="navigation__sub__columns__mobile"> <button class="glue-header__link js-sub-nav-target" data-panel="nested" role="menuitem" aria-haspopup="true"> Research areas <span class="icon icon--caret"></span> </button> <div class="navigation__nested-sub js-sub-nav-parent"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile" role="menuitem" aria-haspopup="true"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Research areas <span class="sr-text">menu</span> </button> <hr/> </div> <ul> <li role="menuitem"> <a href="http://research.google/research-areas/" class="navigation__sub__columns__mobile__link" > Explore all research areas <span> </span> </a> </li> </ul> </div> </div> </li> <li data-gt-secondary="Foundational ML & Algorithms"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading">Foundational ML & Algorithms</h2> <ul> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/algorithms-and-theory/" > Algorithms & Theory </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/data-management/" > Data Management </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/data-mining-and-modeling/" > Data Mining & Modeling </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/information-retrieval-and-the-web/" > Information Retrieval & the Web </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/machine-intelligence/" > Machine Intelligence </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/machine-perception/" > Machine Perception </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/machine-translation/" > Machine Translation </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/natural-language-processing/" > Natural Language Processing </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/speech-processing/" > Speech Processing </a> </li> </ul> </div> <div class="navigation__sub__columns__mobile"> <button class="glue-header__link js-sub-nav-target" data-panel="nested" role="menuitem" aria-haspopup="true"> Foundational ML & Algorithms <span class="icon icon--caret"></span> </button> <div class="navigation__nested-sub js-sub-nav-parent"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile" role="menuitem" aria-haspopup="true"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Foundational ML & Algorithms <span class="sr-text">menu</span> </button> <hr/> </div> <ul> <li role="menuitem"> <a href="http://research.google/research-areas/algorithms-and-theory/" class="navigation__sub__columns__mobile__link" > Algorithms & Theory <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/data-management/" class="navigation__sub__columns__mobile__link" > Data Management <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/data-mining-and-modeling/" class="navigation__sub__columns__mobile__link" > Data Mining & Modeling <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/information-retrieval-and-the-web/" class="navigation__sub__columns__mobile__link" > Information Retrieval & the Web <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/machine-intelligence/" class="navigation__sub__columns__mobile__link" > Machine Intelligence <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/machine-perception/" class="navigation__sub__columns__mobile__link" > Machine Perception <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/machine-translation/" class="navigation__sub__columns__mobile__link" > Machine Translation <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/natural-language-processing/" class="navigation__sub__columns__mobile__link" > Natural Language Processing <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/speech-processing/" class="navigation__sub__columns__mobile__link" > Speech Processing <span> </span> </a> </li> </ul> </div> </div> </li> <li data-gt-secondary="Computing Systems & Quantum AI"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading">Computing Systems & Quantum AI</h2> <ul> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/distributed-systems-and-parallel-computing/" > Distributed Systems & Parallel Computing </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/hardware-and-architecture/" > Hardware & Architecture </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/mobile-systems/" > Mobile Systems </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/networking/" > Networking </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/quantum-computing/" > Quantum Computing </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/robotics/" > Robotics </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/security-privacy-and-abuse-prevention/" > Security, Privacy, & Abuse Prevention </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/software-engineering/" > Software Engineering </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/software-systems/" > Software Systems </a> </li> </ul> </div> <div class="navigation__sub__columns__mobile"> <button class="glue-header__link js-sub-nav-target" data-panel="nested" role="menuitem" aria-haspopup="true"> Computing Systems & Quantum AI <span class="icon icon--caret"></span> </button> <div class="navigation__nested-sub js-sub-nav-parent"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile" role="menuitem" aria-haspopup="true"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Computing Systems & Quantum AI <span class="sr-text">menu</span> </button> <hr/> </div> <ul> <li role="menuitem"> <a href="http://research.google/research-areas/distributed-systems-and-parallel-computing/" class="navigation__sub__columns__mobile__link" > Distributed Systems & Parallel Computing <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/hardware-and-architecture/" class="navigation__sub__columns__mobile__link" > Hardware & Architecture <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/mobile-systems/" class="navigation__sub__columns__mobile__link" > Mobile Systems <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/networking/" class="navigation__sub__columns__mobile__link" > Networking <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/quantum-computing/" class="navigation__sub__columns__mobile__link" > Quantum Computing <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/robotics/" class="navigation__sub__columns__mobile__link" > Robotics <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/security-privacy-and-abuse-prevention/" class="navigation__sub__columns__mobile__link" > Security, Privacy, & Abuse Prevention <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/software-engineering/" class="navigation__sub__columns__mobile__link" > Software Engineering <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/software-systems/" class="navigation__sub__columns__mobile__link" > Software Systems <span> </span> </a> </li> </ul> </div> </div> </li> <li data-gt-secondary="Science, AI & Society"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading">Science, AI & Society</h2> <ul> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/climate-and-sustainability/" > Climate & Sustainability </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/economics-and-electronic-commerce/" > Economics & Electronic Commerce </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/education-innovation/" > Education Innovation </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/general-science/" > General Science </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/health-bioscience/" > Health & Bioscience </a> </li> <li> <a class="navigation__sub__columns__list-link caption js-drawer-link" href="http://research.google/research-areas/human-computer-interaction-and-visualization/" > Human-Computer Interaction and Visualization </a> </li> </ul> </div> <div class="navigation__sub__columns__mobile"> <button class="glue-header__link js-sub-nav-target" data-panel="nested" role="menuitem" aria-haspopup="true"> Science, AI & Society <span class="icon icon--caret"></span> </button> <div class="navigation__nested-sub js-sub-nav-parent"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile" role="menuitem" aria-haspopup="true"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Science, AI & Society <span class="sr-text">menu</span> </button> <hr/> </div> <ul> <li role="menuitem"> <a href="http://research.google/research-areas/climate-and-sustainability/" class="navigation__sub__columns__mobile__link" > Climate & Sustainability <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/economics-and-electronic-commerce/" class="navigation__sub__columns__mobile__link" > Economics & Electronic Commerce <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/education-innovation/" class="navigation__sub__columns__mobile__link" > Education Innovation <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/general-science/" class="navigation__sub__columns__mobile__link" > General Science <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/health-bioscience/" class="navigation__sub__columns__mobile__link" > Health & Bioscience <span> </span> </a> </li> <li role="menuitem"> <a href="http://research.google/research-areas/human-computer-interaction-and-visualization/" class="navigation__sub__columns__mobile__link" > Human-Computer Interaction and Visualization <span> </span> </a> </li> </ul> </div> </div> </li> </ul> </div> </div></div> </div> </div> </li> <li class="glue-header__item js-sub-nav-parent --parent" data-gt-primary="Our work" > <button class="glue-header__link js-sub-nav-target" aria-haspopup="true" aria-expanded="false" > <span class=""> Our work <span class="icon icon--caret"></span> </span> </button> <div class="navigation__sub js-sub-nav" role="menu"> <div class="navigation__sub__container"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Our work <span class="sr-text">menu</span> </button> <hr/> </div> <div class="block-nav_drawer_columns_content"> <div class="navigation__sub--content" data-gt-secondary=""> <div class="navigation__sub__wrapper"> <ul class="navigation__sub__columns"> <li data-gt-secondary="Projects"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Projects </h2> <p class="navigation__sub__columns__description caption">We regularly open-source projects with the broader research community and apply our developments to Google products.</p> <a href="http://research.google/resources/our-projects/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Projects</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/resources/our-projects/" > Projects </a> </div> </li> <li data-gt-secondary="Publications"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Publications </h2> <p class="navigation__sub__columns__description caption">Publishing our work allows us to share ideas and work collaboratively to advance the field of computer science.</p> <a href="http://research.google/pubs/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Publications</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/pubs/" > Publications </a> </div> </li> <li data-gt-secondary="Resources"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Resources </h2> <p class="navigation__sub__columns__description caption">We make products, tools, and datasets available to everyone with the goal of building a more collaborative ecosystem.</p> <a href="http://research.google/resources/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Resources</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/resources/" > Resources </a> </div> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="glue-header__item js-sub-nav-parent --parent" data-gt-primary="Programs & events" > <button class="glue-header__link js-sub-nav-target" aria-haspopup="true" aria-expanded="false" > <span class=""> Programs & events <span class="icon icon--caret"></span> </span> </button> <div class="navigation__sub js-sub-nav" role="menu"> <div class="navigation__sub__container"> <div class="navigation__sub__mobile-heading"> <button class="glue-header__link js-sub-nav-close-mobile"> <span class="sr-text">Back to</span> <span class="icon icon--caret"></span> Programs & events <span class="sr-text">menu</span> </button> <hr/> </div> <div class="block-nav_drawer_columns_content"> <div class="navigation__sub--content" data-gt-secondary="Shaping the future, together."> <div class="navigation__sub__wrapper"> <div class="navigation__sub__heading"> <h2 class="headline-3">Shaping the future, together.</h2> <a href="http://research.google/programs-and-events/" class="js-drawer-link" > Collaborate with us </a> </div> <ul class="navigation__sub__columns"> <li data-gt-secondary="Student programs"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Student programs </h2> <p class="navigation__sub__columns__description caption">Supporting the next generation of researchers through a wide range of programming.</p> <a href="http://research.google/programs-and-events/student-engagement/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Student programs</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/programs-and-events/student-engagement/" > Student programs </a> </div> </li> <li data-gt-secondary="Faculty programs"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Faculty programs </h2> <p class="navigation__sub__columns__description caption">Participating in the academic research community through meaningful engagement with university faculty.</p> <a href="http://research.google/programs-and-events/faculty-engagement/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Faculty programs</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/programs-and-events/faculty-engagement/" > Faculty programs </a> </div> </li> <li data-gt-secondary="Conferences & events"> <div class="navigation__sub__columns__desktop"> <h2 class="headline-6 navigation__sub__columns__heading"> Conferences & events </h2> <p class="navigation__sub__columns__description caption">Connecting with the broader research community through events is essential for creating progress in every aspect of our work.</p> <a href="http://research.google/conferences-and-events/" class="glue-inline-link js-drawer-link" > <span class="sr-text">Learn more about our Conferences & events</span> <span aria-hidden="true">Learn more</span> </a> </div> <div class="navigation__sub__columns__mobile"> <a class="glue-header__link" href="http://research.google/conferences-and-events/" > Conferences & events </a> </div> </li> </ul> <div class="navigation__sub__cta"> <a class="glue-button glue-button--high-emphasis js-drawer-link" href="http://research.google/programs-and-events/" target="_blank" rel="noreferrer noopener" > Collaborate with us </a> </div> </div> </div> </div> </div> </div> </li> <li class="glue-header__item " data-gt-primary="Careers" > <a class="glue-header__link " href="http://research.google/careers/" > <span class=""> Careers </span> </a> </li> <li class="glue-header__item " data-gt-primary="Blog" > <a class="glue-header__link " href="http://research.google/blog/" > <span class=""> Blog </span> </a> </li> </ul> </nav> </div> <!-- search (hide on search page) --> <div class="glue-header__search js-header-search"> <div class="glue-header__search__input"> <div class="search-input " data-type="header"> <input type="search" class="caption --empty-search js-search-bar js-gt-search-input" placeholder="Search"> <button class="search-input__button --search js-gt-search-btn"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--18px "> <use href="/gr/static/assets/icons/glue-icons.svg#search"></use> </svg> </button> <button class="search-input__button --clear"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--18px "> <use href="/gr/static/assets/icons/glue-icons.svg#close"></use> </svg> </button> </div> </div> <button class="glue-header__search__btn js-header-search-btn"> <svg role="presentation" aria-hidden="true" aria-hidden="true" class="glue-icon glue-icon--24px search"> <use href="/gr/static/assets/icons/glue-icons.svg#search"></use> </svg> <svg role="presentation" aria-hidden="true" aria-hidden="true" class="glue-icon glue-icon--24px close"> <use href="/gr/static/assets/icons/glue-icons.svg#close"></use> </svg> <span class="sr-text js-header-search-sr-text">Search</span> </button> </div> </div> </div> <div class="glue-header__drawer-backdrop"> <div class="glue-header__mobile_close"> <button class="glue-header__drawer-toggle-btn js-mobile-nav-close" aria-label="Close the navigation drawer"> <svg class="glue-icon glue-icon--24px" role="presentation" aria-hidden="true"> <use href="/gr/static/assets/icons/glue-icons.svg#close"></use> </svg> </button> </div> </div> </header> <main id="page-content"> <div class="blog-detail-page --legacy " > <section class="basic-hero bhoig --theme-dark --large-image" data-gt-id="basic_hero" data-gt-component-name=""> <div class="glue-page"> <div class="glue-grid"> <div class="bhoig__image-wrapper glue-grid__col--span-4 glue-grid__col--span-5-md glue-grid__col--span-4-lg"> <div class="bhoig__image-bg" style=""> <picture> <img src="https://storage.googleapis.com/gweb-research2023-media/original_images/72065375fc4d494b20b3e6e4441739ca-image1.png" alt="" class=""/> </picture> </div> </div> <div class="bhoig__breadcrumb-wrapper glue-grid__col--span-10 glue-grid__col--span-9-md glue-grid__col--span-10-lg"> <nav class="glue-breadcrumbs" aria-label="Breadcrumbs"> <ol class="glue-breadcrumbs__list"> <li class="glue-breadcrumbs__item"> <a class="glue-breadcrumbs__link attribution" href="/">Home</a> <svg role="presentation" aria-hidden="true" class="glue-icon "> <use href="/gr/static/assets/icons/glue-icons.svg#chevron-right"></use> </svg> </li> <li class="glue-breadcrumbs__item"> <a class="glue-breadcrumbs__link attribution" href="/blog/">Blog</a> <svg role="presentation" aria-hidden="true" class="glue-icon "> <use href="/gr/static/assets/icons/glue-icons.svg#chevron-right"></use> </svg> </li> </ol> </nav> </div> <h1 class="headline-1 bhoig__headline glue-grid__col--span-8 glue-grid__col--span-7-md glue-grid__col--span-8-lg">TF-Ranking: A Scalable TensorFlow Library for Learning-to-Rank</h1> <div class="basic-hero__description bhoig__description glue-grid__col--span-8 glue-grid__col--span-7-md glue-grid__col--span-8-lg"> <div class="basic-hero--blog-detail__description"><p>December 5, 2018</p><span class="dot-separator"></span><p>Posted by Xuanhui Wang and Michael Bendersky, Software Engineers, Google AI</p></div> </div> <div class="bhoig__cta glue-grid__col--span-8 glue-grid__col--span-7-md glue-grid__col--span-8-lg"> </div> </div> </div> </section> <div class="glue-page"> <div class="glue-grid blog-detail-page__grid"> <div class="glue-grid__col glue-grid__col--span-4-sm glue-grid__col--span-12-md glue-grid__col--span-9-lg"> <div class="quicklinks-wrapper--mobile"> <div class="block-quick_links"> <section class="quicklinks"> <h2 class="eyebrow">Quick links</h2> <ul class="quicklinks__list"> <li class="quicklinks__item quicklinks__item--share js-quicklinks-share"> <button class="quicklinks__share-button js-quicklinks-share__button" aria-expanded="false" aria-controls="js-quicklinks-share__list"> <span class="icon icon--share"></span> <span class="quicklinks__item__text">Share</span> </button> <section class="glue-social glue-social--monochrome quicklinks__share-list js-quicklinks-share__list glue-elevation-level-1 js-gt-share-wrapper"> <div class="glue-social__group"> <ul class="glue-social__list" role="list"> <li class="glue-social__item"> <a class="glue-social__link" href="https://twitter.com/intent/tweet?text=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Share on Twitter" target="_blank" rel="noopener" data-gt-method="x"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/twitter-x.svg#twitter-x"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.facebook.com/sharer/sharer.php?u=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Share on Facebook" target="_blank" rel="noopener" data-gt-method="facebook"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-facebook glue-icon--24px"> <use href="/gr/static/assets/icons/facebook.svg#facebook"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.linkedin.com/shareArticle?url=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/&mini=true" title="Share on LinkedIn" target="_blank" rel="noopener" data-gt-method="linkedin"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-linkedin glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#post-linkedin"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="mailto:name@example.com?subject=Check%20out%20this%20site&body=Check%20out%20http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Send via Email" data-gt-method="email"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharemail glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#email"></use> </svg> </a> </li> <li class="glue-social__item"> <div class="glue-social__popover"> <div class="glue-social__icon-trigger" aria-label="Get shareable link" title="Get shareable link" id="share-static-popover-trigger"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharelink glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#link"></use> </svg> </div> <div class="glue-social__dialog" id="share-popover-dialog"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharelink glue-icon--24px"> <use href="/public/icons/glue-icons.svg#link"></use> </svg> <div class="glue-social__copy" glue-copy-success="Copied to clipboard" glue-copy-fail="Press Ctrl+C or ⌘+C to copy"> <input class="glue-social__copy-input" readonly="" type="text" value="http://research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" aria-label="URL"> <button class="glue-social__copy-btn" id="share-copy-btn" data-gt-method="link-copied">Copy link</button> </div> <div aria-label="Close" class="glue-social__close-btn"> × </div> </div> </div> </li> </ul> </div> </section> </li> </ul> </section> </div> </div> <div class="blog-detail-wrapper js-gt-blog-detail-wrapper" data-gt-publish-date="20181205"> <div class="rich-text --theme- --mode-" data-gt-id="rich_text" data-gt-component-name=""> <a name='more'></a><br /> <br /> Ranking, the process of ordering a list of items in a way that maximizes the utility of the entire list, is applicable in a wide range of domains, from search engines and recommender systems to <a href="http://www.aclweb.org/anthology/K17-1011" target="_blank" rel="noopener noreferrer">machine translation</a>, <a href="https://arxiv.org/abs/1805.00188" target="_blank" rel="noopener noreferrer">dialogue systems</a> and even <a href="https://www.ncbi.nlm.nih.gov/pubmed/26163693" target="_blank" rel="noopener noreferrer">computational biology.</a> In applications like these (and many others), researchers often utilize a set of supervised machine learning techniques called <a href="https://en.wikipedia.org/wiki/Learning_to_rank" target="_blank" rel="noopener noreferrer">learning-to-rank</a>. In many cases, these learning-to-rank techniques are applied to datasets that are prohibitively large <span id="docs-internal-guid-9f2d3c8c-7fff-3bf2-7d1f-326389124115"><span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">—</span></span> scenarios where the scalability of <a href="https://www.tensorflow.org/" target="_blank" rel="noopener noreferrer">TensorFlow</a> could be an advantage. However, there is currently no out-of-the-box support for applying learning-to-rank techniques in TensorFlow. To the best of our knowledge, there are also no other open source libraries that specialize in applying learning-to-rank techniques at scale.<br /> <br /> Today, we are excited to share <a href="https://github.com/tensorflow/ranking" target="_blank" rel="noopener noreferrer">TF-Ranking</a>, a scalable TensorFlow-based library for learning-to-rank. As described in our recent <a href="https://arxiv.org/abs/1812.00073" target="_blank" rel="noopener noreferrer">paper</a>, TF-Ranking provides a unified framework that includes a suite of state-of-the-art learning-to-rank algorithms, and supports <a href="https://www.springer.com/us/book/9783642142666" target="_blank" rel="noopener noreferrer">pairwise or listwise loss functions</a>, <a href="https://arxiv.org/abs/1811.04415" target="_blank" rel="noopener noreferrer">multi-item scoring</a>, <a href="https://ai.google/research/pubs/pub47258" target="_blank" rel="noopener noreferrer">ranking metric optimization</a>, and <a href="http://www.cs.cornell.edu/people/tj/publications/joachims_etal_17a.pdf" target="_blank" rel="noopener noreferrer">unbiased learning-to-rank</a>.<br /> <br /> TF-Ranking is fast and easy to use, and creates high-quality ranking models. The unified framework gives ML researchers, practitioners and enthusiasts the ability to evaluate and choose among an array of different ranking models within a single library. Moreover, we strongly believe that a key to a useful open source library is not only providing sensible defaults, but also empowering our users to develop their own custom models. Therefore, we provide flexible API's, within which the users can define and plug in their own customized loss functions, scoring functions and metrics.<br /> <br /> <b>Existing Algorithms and Metrics Support</b><br /> The objective of learning-to-rank algorithms is minimizing a <a href="https://en.wikipedia.org/wiki/Loss_function" target="_blank" rel="noopener noreferrer">loss function</a> defined over a list of items to optimize the utility of the list ordering for any given application. TF-Ranking supports a wide range of standard pointwise, pairwise and listwise loss functions as described in <a href="https://en.wikipedia.org/wiki/Learning_to_rank#Approaches" target="_blank" rel="noopener noreferrer">prior work</a>. This ensures that researchers using the TF-Ranking library are able to reproduce and extend previously published baselines, and practitioners can make the most informed choices for their applications. Furthermore, TF-Ranking can handle sparse features (like raw text) through <a href="https://www.tensorflow.org/api_docs/python/tf/feature_column/embedding_column" target="_blank" rel="noopener noreferrer">embeddings</a> and scales to hundreds of millions of training instances. Thus, anyone who is interested in building real-world data intensive ranking systems such as web search or news recommendation, can use TF-Ranking as a robust, scalable solution.<br /> <br /> Empirical evaluation is an important part of any machine learning or information retrieval research. To ensure compatibility with prior work, we support many of the commonly used ranking metrics, including <a href="https://en.wikipedia.org/wiki/Mean_reciprocal_rank" target="_blank" rel="noopener noreferrer">Mean Reciprocal Rank</a> (MRR) and <a href="https://en.wikipedia.org/wiki/Discounted_cumulative_gain" target="_blank" rel="noopener noreferrer">Normalized Discounted Cumulative Gain</a> (NDCG). We also make it easy to visualize these metrics at training time on <a href="https://github.com/tensorflow/tensorboard" target="_blank" rel="noopener noreferrer">TensorBoard</a>, an open source TensorFlow visualization dashboard.<br /> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody> <tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-OKX1y8NRMHg/XAcD4ZpM1xI/AAAAAAAADl8/Putab3G-V2II18eW2t9f42BYErnvFpztwCLcBGAs/s1600/image1.png" target="_blank" rel="noopener noreferrer"><img border="0" data-original-height="1009" data-original-width="1600" height="402" src="https://3.bp.blogspot.com/-OKX1y8NRMHg/XAcD4ZpM1xI/AAAAAAAADl8/Putab3G-V2II18eW2t9f42BYErnvFpztwCLcBGAs/s640/image1.png" width="640" /></a></td></tr> <tr><td class="tr-caption" style="text-align: center;">An example of the NDCG metric (Y-axis) along the training steps (X-axis) displayed in the TensorBoard. It shows the overall progress of the metrics during training. Different methods can be compared directly on the dashboard. Best models can be selected based on the metric.</td></tr> </tbody></table> <b>Multi-Item Scoring</b><br /> TF-Ranking supports a novel scoring mechanism wherein multiple items (e.g., web pages) can be <a href="https://arxiv.org/abs/1811.04415" target="_blank" rel="noopener noreferrer">scored jointly</a>, an extension of the traditional scoring paradigm in which single items are scored independently. One challenge in multi-item scoring is the difficulty for inference where items have to be grouped and scored in subgroups. Then, scores are accumulated per-item and used for sorting. To make these complexities transparent to the user, TF-Ranking provides a List-In-List-Out (LILO) API to wrap all this logic in the exported TF models.<br /> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody> <tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-Kn07HhwV-mI/XAcEK6R6wjI/AAAAAAAADmE/ShAy-h7znxoaS9oRkJ6mqnoz0UTKGyP8QCLcBGAs/s1600/image2.png" target="_blank" rel="noopener noreferrer"><img border="0" data-original-height="740" data-original-width="1356" height="348" src="https://4.bp.blogspot.com/-Kn07HhwV-mI/XAcEK6R6wjI/AAAAAAAADmE/ShAy-h7znxoaS9oRkJ6mqnoz0UTKGyP8QCLcBGAs/s640/image2.png" width="640" /></a></td></tr> <tr><td class="tr-caption" style="text-align: center;">The TF-Ranking library supports multi-item scoring architecture, an extension of traditional single-item scoring.</td></tr> </tbody></table> As we demonstrate in <a href="https://arxiv.org/abs/1811.04415" target="_blank" rel="noopener noreferrer">recent work</a>, multi-item scoring is competitive in its performance to the state-of-the-art learning-to-rank models such as RankNet, MART, and LambdaMART on a public <a href="https://www.microsoft.com/en-us/research/project/mslr/" target="_blank" rel="noopener noreferrer">LETOR</a> benchmark. <br /> <br /> <b>Ranking Metric Optimization</b><br /> An important research challenge in learning-to-rank is direct optimization of ranking metrics (such as the previously mentioned NDCG and MRR). These metrics, while being able to measure the performance of ranking systems better than the standard classification metrics like <a href="https://en.wikipedia.org/wiki/Receiver_operating_characteristic" target="_blank" rel="noopener noreferrer">Area Under the Curve</a> (AUC), have the unfortunate property of being either <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/MSR-TR-2010-82.pdf" target="_blank" rel="noopener noreferrer">discontinuous or flat</a>. Therefore standard stochastic gradient descent optimization of these metrics is problematic.<br /> <br /> In <a href="https://ai.google/research/pubs/pub47258" target="_blank" rel="noopener noreferrer">recent work,</a> we proposed a novel method, LambdaLoss, which provides a principled probabilistic framework for ranking metric optimization. In this framework, metric-driven loss functions can be designed and optimized by an <a href="https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm" target="_blank" rel="noopener noreferrer">expectation-maximization</a> procedure. The TF-Ranking library integrates the recent advances in direct metric optimization and provides an implementation of LambdaLoss. We are hopeful that this will encourage and facilitate further research advances in the important area of ranking metric optimization.<br /> <br /> <b>Unbiased Learning-to-Rank</b><br /> <a href="https://ai.google/research/pubs/pub45286" target="_blank" rel="noopener noreferrer">Prior research</a> has shown that given a ranked list of items, users are much more likely to interact with the first few results, regardless of their relevance. This observation has inspired research interest in <a href="http://www.cs.cornell.edu/people/tj/publications/joachims_etal_17a.pdf" target="_blank" rel="noopener noreferrer">unbiased learning-to-rank</a>, and led to the development of unbiased evaluation and several unbiased learning algorithms, based on training instances re-weighting. In the TF-Ranking library, metrics are implemented to support unbiased evaluation and losses are implemented for unbiased learning by natively supporting re-weighting to overcome the inherent biases in user interactions datasets. <br /> <br /> <b>Getting Started with TF-Ranking</b><br /> TF-Ranking implements the <a href="https://www.tensorflow.org/guide/estimators" target="_blank" rel="noopener noreferrer">TensorFlow Estimator</a> interface, which greatly simplifies machine learning programming by encapsulating training, evaluation, prediction and export for serving. TF-Ranking is well integrated with the rich TensorFlow ecosystem. As described above, you can use <a href="https://github.com/tensorflow/tensorboard" target="_blank" rel="noopener noreferrer">Tensorboard</a> to visualize ranking metrics like NDCG and MRR, as well as to pick the best model checkpoints using these metrics. Once your model is ready, it is easy to deploy it in production using <a href="https://www.tensorflow.org/serving/" target="_blank" rel="noopener noreferrer">TensorFlow Serving</a>.<br /> <br /> If you’re interested in trying TF-Ranking for yourself, please check out our <a href="https://github.com/tensorflow/ranking" target="_blank" rel="noopener noreferrer">GitHub repo</a>, and walk through the <a href="https://github.com/tensorflow/ranking/tree/master/tensorflow_ranking/examples" target="_blank" rel="noopener noreferrer">tutorial examples</a>. TF-Ranking is an active research project, and we welcome your feedback and contributions. We are excited to see how TF-Ranking can help the information retrieval and machine learning research communities.<br /> <br /> <b>Acknowledgements</b><br /> <i>This project was only possible thanks to the members of the core TF-Ranking team: Rama Pasumarthi, Cheng Li, Sebastian Bruch, Nadav Golbandi, Stephan Wolf, Jan Pfeifer, Rohan Anil, Marc Najork, Patrick McGregor and Clemens Mewald. We thank the members of the TensorFlow team for their advice and support: Alexandre Passos, Mustafa Ispir, Karmel Allison, Martin Wicke, and others. Finally, we extend our special thanks to our collaborators, interns and early adopters: Suming Chen, Zhen Qin, Chirag Sethi, Maryam Karimzadehgan, Makoto Uchida, Yan Zhu, Qingyao Ai, Brandon Tran, Donald Metzler, Mike Colagrosso, and many others at Google who helped in evaluating and testing the early versions of TF-Ranking.</i> </div> </div> <section aria-label="List of footnotes" data-gt-id="footnotes" data-gt-component-name="Footnotes"> <ol class="js-footnotes footnotes"> </ol> </section> <section class="blog-labels" data-gt-id="blog_labels" data-gt-component-name="Blog Labels"> <ul class="blog-labels__list"> <span class="caption">Labels:</span> <li class="caption"> <a class="caption" href="/blog/label/machine-intelligence">Machine Intelligence</a> <div class="blog-labels__spacer"></div> </li> <li class="caption"> <a class="caption" href="/blog/label/open-source-models-datasets">Open Source Models & Datasets</a> <div class="blog-labels__spacer"></div> </li> <li class="caption"> <a class="caption" href="/blog/label/product">Product</a> </li> </ul> </section> </div> <div class="glue-grid__col glue-grid__col--span-4-sm glue-grid__col--span-12-md glue-grid__col--span-3-lg"> <div class="quicklinks-wrapper--desktop quicklinks-wrapper--sticky"> <div class="block-quick_links"> <section class="quicklinks"> <h2 class="eyebrow">Quick links</h2> <ul class="quicklinks__list"> <li class="quicklinks__item quicklinks__item--share js-quicklinks-share"> <button class="quicklinks__share-button js-quicklinks-share__button" aria-expanded="false" aria-controls="js-quicklinks-share__list"> <span class="icon icon--share"></span> <span class="quicklinks__item__text">Share</span> </button> <section class="glue-social glue-social--monochrome quicklinks__share-list js-quicklinks-share__list glue-elevation-level-1 js-gt-share-wrapper"> <div class="glue-social__group"> <ul class="glue-social__list" role="list"> <li class="glue-social__item"> <a class="glue-social__link" href="https://twitter.com/intent/tweet?text=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Share on Twitter" target="_blank" rel="noopener" data-gt-method="x"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/twitter-x.svg#twitter-x"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.facebook.com/sharer/sharer.php?u=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Share on Facebook" target="_blank" rel="noopener" data-gt-method="facebook"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-facebook glue-icon--24px"> <use href="/gr/static/assets/icons/facebook.svg#facebook"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.linkedin.com/shareArticle?url=http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/&mini=true" title="Share on LinkedIn" target="_blank" rel="noopener" data-gt-method="linkedin"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-linkedin glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#post-linkedin"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="mailto:name@example.com?subject=Check%20out%20this%20site&body=Check%20out%20http%3A//research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" title="Send via Email" data-gt-method="email"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharemail glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#email"></use> </svg> </a> </li> <li class="glue-social__item"> <div class="glue-social__popover"> <div class="glue-social__icon-trigger" aria-label="Get shareable link" title="Get shareable link" id="share-static-popover-trigger"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharelink glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#link"></use> </svg> </div> <div class="glue-social__dialog" id="share-popover-dialog"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--color-sharelink glue-icon--24px"> <use href="/public/icons/glue-icons.svg#link"></use> </svg> <div class="glue-social__copy" glue-copy-success="Copied to clipboard" glue-copy-fail="Press Ctrl+C or ⌘+C to copy"> <input class="glue-social__copy-input" readonly="" type="text" value="http://research.google/blog/tf-ranking-a-scalable-tensorflow-library-for-learning-to-rank/" aria-label="URL"> <button class="glue-social__copy-btn" id="share-copy-btn" data-gt-method="link-copied">Copy link</button> </div> <div aria-label="Close" class="glue-social__close-btn"> × </div> </div> </div> </li> </ul> </div> </section> </li> </ul> </section> </div> </div> </div> </div> </div> <section class="related-posts offset-two-up --theme-dark" data-gt-id="related_blog_posts" data-gt-component-name="Related Blog Posts"> <div class="glue-page glue-grid"> <div class="offset-two-up__left-col glue-grid__col glue-grid__col--span-4-sm glue-grid__col--span-12-md glue-grid__col--span-3-lg"> <h3 class="offset-two-up__headline headline-3">Other posts of interest</h3> </div> <div class="glue-grid__col glue-grid__col--span-4-sm glue-grid__col--span-12-md glue-grid__col--span-9-lg"> <ul class="card-stack--basic nested-glue-grid-override"> <li class="glue-grid__col glue-grid__col--span-4-md glue-grid__col--span-4-sm"> <a class="glue-card not-glue " href="/blog/re-invoke-tool-invocation-rewriting-for-zero-shot-tool-retrieval/" aria-label="" > <div class="glue-card__inner"> <div class="related-posts__image"> <img src="https://storage.googleapis.com/gweb-research2023-media/original_images/ReInvoke-1-Overview.jpg" alt="" /> </div> <div class="glue-card__content --no-media"> <p class="glue-label glue-spacer-1-bottom">November 21, 2024</p> <span class="headline-5 js-gt-item-id"> Re-Invoke: Tool invocation rewriting for zero-shot tool retrieval </span> </div> <ul class="glue-card__link-list"> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Machine Intelligence <span class="glue-card__link-list__spacer">·</span> </span> </li> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Natural Language Processing </span> </li> </ul> </div> </a> </li> <li class="glue-grid__col glue-grid__col--span-4-md glue-grid__col--span-4-sm"> <a class="glue-card not-glue " href="/blog/scaling-wearable-foundation-models/" aria-label="" > <div class="glue-card__inner"> <div class="related-posts__image"> <img src="https://storage.googleapis.com/gweb-research2023-media/original_images/ScalingWearables1-HeroFinal.jpg" alt="" /> </div> <div class="glue-card__content --no-media"> <p class="glue-label glue-spacer-1-bottom">November 20, 2024</p> <span class="headline-5 js-gt-item-id"> Scaling wearable foundation models </span> </div> <ul class="glue-card__link-list"> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Generative AI <span class="glue-card__link-list__spacer">·</span> </span> </li> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Health & Bioscience <span class="glue-card__link-list__spacer">·</span> </span> </li> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Machine Intelligence </span> </li> </ul> </div> </a> </li> <li class="glue-grid__col glue-grid__col--span-4-md glue-grid__col--span-4-sm"> <a class="glue-card not-glue " href="/blog/scalable-learning-of-segment-level-traffic-congestion-functions/" aria-label="" > <div class="glue-card__inner"> <div class="related-posts__image"> <img src="https://storage.googleapis.com/gweb-research2023-media/original_images/TrafficCongestion2-Overview.png" alt="" /> </div> <div class="glue-card__content --no-media"> <p class="glue-label glue-spacer-1-bottom">November 19, 2024</p> <span class="headline-5 js-gt-item-id"> Scalable learning of segment-level traffic congestion functions </span> </div> <ul class="glue-card__link-list"> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Climate & Sustainability <span class="glue-card__link-list__spacer">·</span> </span> </li> <li class="glue-card__link-list__item"> <span class="not-glue caption"> Machine Intelligence </span> </li> </ul> </div> </a> </li> </ul> </div> </div> </section> </div> </main> <footer class="glue-footer"> <div class="glue-page"> <section class="glue-social"> <div class="glue-social__group glue-social--monochrome"> <p class="glue-social__title glue-social__title--inline"> Follow us </p> <nav class="js-gt-follow-us-wrapper" aria-label="Social media links"> <ul class="glue-social__list" role="list"> <li class="glue-social__item"> <a class="glue-social__link" href="https://twitter.com/GoogleAI" title="Follow us on x" target="_blank" rel="noopener" data-gt-method="x"" > <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/twitter-x.svg#twitter-x"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.linkedin.com/showcase/googleresearch/" title="Follow us on linkedin" target="_blank" rel="noopener" data-gt-method="linkedin"" > <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#post-linkedin"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://www.youtube.com/c/GoogleResearch" title="Follow us on youtube" target="_blank" rel="noopener" data-gt-method="youtube"" > <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/glue-icons.svg#video-youtube"></use> </svg> </a> </li> <li class="glue-social__item"> <a class="glue-social__link" href="https://github.com/google-research" title="Follow us on github" target="_blank" rel="noopener" data-gt-method="github"" > <svg role="presentation" aria-hidden="true" class="glue-icon glue-icon--social glue-icon--24px"> <use href="/gr/static/assets/icons/github.svg#github"></use> </svg> </a> </li> </ul> </nav> </div> </section> </div> <div class="glue-fullbleed"></div> <section class="glue-page"> <nav class="glue-footer__global" aria-label="Footer resource links"> <div class="glue-footer__logo"> <a href="https://www.google.com" title="Google" class="glue-footer__link"> <svg role="presentation" aria-hidden="true" class="glue-icon glue-footer__logo-img"> <use href="/gr/static/assets/icons/glue-icons.svg#google-solid-logo"></use> </svg> </a> </div> <ul class="glue-footer__global-links glue-no-bullet js-gt-global-nav-wrapper" role="list"> <li class="glue-footer__global-links-list-item" data-gt-primary="About Google"> <a class="glue-footer__link" href="https://about.google/" target="_blank" rel="noopener"> About Google </a> </li> <li class="glue-footer__global-links-list-item" data-gt-primary="Google Products"> <a class="glue-footer__link" href="https://about.google/intl/en/products/" target="_blank" rel="noopener"> Google Products </a> </li> <li class="glue-footer__global-links-list-item" data-gt-primary="Privacy"> <a class="glue-footer__link" href="https://policies.google.com/privacy" target="_blank" rel="noopener"> Privacy </a> </li> <li class="glue-footer__global-links-list-item" data-gt-primary="Terms"> <a class="glue-footer__link" href="https://policies.google.com/terms" target="_blank" rel="noopener"> Terms </a> </li> </ul> <ul class="glue-footer__global-links glue-footer__global-links--extra glue-no-bullet" role="list"> <li class="glue-footer__global-links-list-item glue-footer__global-links-list-item--extra"> <a class="glue-footer__link" href="https://support.google.com/?hl=en"> <svg role="presentation" aria-hidden="true" aria-hidden="true" class="glue-icon glue-icon--24px glue-icon--footer-help"> <use href="/gr/static/assets/icons/glue-icons.svg#help"></use> </svg> Help </a> </li> <li class="glue-footer__global-links-list-item glue-footer__global-links-list-item--extra"> <button class="glue-footer__link google-feedback js-feedback-button" href="" data-product-id="5137383" > Submit feedback </button> </li> </ul> </nav> </section> </footer> <script src="https://www.gstatic.com/glue/v27_1/material-components-web.min.js"></script> <script src="https://www.youtube.com/player_api"></script> <script type="text/javascript" src="/gr/static/js/googleresearch.js?id=b70549917812130af912601ad763f13e"></script> <script type="text/javascript" src="https://support.google.com/inapp/api.js"></script> <script src="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.js" data-glue-cookie-notification-bar-category="2B"> </script> </body> </html>