MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu's Sponsored Search
Miao Fan Jiacheng Guo Shuai Zhu Shuo Miao Mingming Sun Ping Li




MOBIUS: Next Generation of Query-Ad Matching in Baidu's Sponsored Search]MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu's Sponsored Search








fanmiao, guojiacheng, zhushuai, miaoshuo, sunmingming01, liping11@baidu.com


  ^1 Cognitive Computing Lab (CCL), Baidu Research, Baidu Inc.
  ^2 Baidu Search Ads (Phoenix Nest), Baidu Inc.











§ ABSTRACT 
Baidu runs the largest commercial web search engine in China, serving hundreds of millions of online users every day in response to a great variety of queries. In order to build a high-efficiency sponsored search engine, we used to adopt a three-layer funnel-shaped structure to screen and sort hundreds of ads from billions of ad candidates subject to the requirement of low response latency and the restraints of computing resources. Given a user query, the top matching layer is responsible for providing semantically relevant ad candidates to the next layer, while the ranking layer at the bottom concerns more about business indicators (e.g., CPM, ROI, etc.) of those ads. The clear separation between the matching and ranking objectives results in a lower commercial return. The Mobius project has been established to address this serious issue. It is our first attempt to train the matching layer to consider CPM as an additional optimization objective besides the query-ad relevance, via directly predicting CTR (click-through rate) from billions of query-ad pairs. Specifically, this paper will elaborate on how we adopt active learning to overcome the insufficiency of click history at the matching layer when training our neural click networks offline, and how we use the SOTA ANN search technique for retrieving ads more efficiently (Here “ANN” stands for approximate nearest neighbor search).  We contribute the solutions to Mobius-V1 as the first version of our next generation query-ad matching system.













  
    < g r a p h i c s >

 

  

  “Mobius” is the internal code name of this project. Coincidentally, the well-known  “Mobius Loop” is also the bird's-eye view of Baidu's Technology Park in Beijing, China. 
  



[
    ^1Miao Fan, ^2Jiacheng Guo, ^2Shuai Zhu,  ^2Shuo Miao, ^1Mingming Sun, ^1Ping Li
    September 9, 2024
====================================================================================



§ INTRODUCTION

Baidu Search (<www.baidu.com>), as the largest commercial search engine in China, daily serves hundreds of millions of online users in response to a great variety of search queries. It is common knowledge that advertising has been the main revenue source for all major commercial search engine firms in the world. In this paper, we focus on explaining some of the recent exciting development and invention in Baidu's Search Ads system (conventionally known as the “Phoenix Nest” inside Baidu).  As shown by Figure <ref>, it plays a vital role in retrieving advertisements (ads) which are relevant to user queries to attract clicks as advertisers are willing to pay when their ads get clicked. The goal of Baidu sponsored search system is to form and nourish a virtuous circle among online users, advertisers, and our sponsored search platform. 






Conventional sponsored search engines <cit.> generally display ads through a two-step process. The first step is to retrieve relevant ads given a query, and the next step is to rank these ads based on predicted user engagement. As a high-efficiency sponsored search engine for commercial use in Baidu, we used to adopt a three-layer funnel-shaped structure to screen and sort hundreds of ads from billions of ad candidates subject to the requirement of low response latency and the restraints of computing resources. As illustrated in Figure <ref>, the top matching layer is responsible for providing relevant ad candidates to the next layer given a user query and the rich profile of the user. To cover more semantically relevant ads, query expansion <cit.> and natural language processing (NLP) techniques <cit.> are mostly leveraged. The ranking layer at the bottom concerns more about business indicators <cit.>, such as cost per mile (CPM = CTR × Bid), return on investment (ROI), etc., of the filtered ads provided by the upper layer. 

However, this separation/distinction between matching and ranking objectives lead to a lower commercial return for various reasons. Given a user query, we have to employ complex models and to spend a lot of computing resources on ranking hundreds or even thousands of ad candidates. Perhaps most disappointingly, the ranking models report that many relevant ads are not offered by high CPM and will not be displayed.
To address this issue, Baidu Search Ads has set up the “Mobius” project which aims towards the next generation query-ad matching system in Baidu's sponsored search. This project is expected to unify the diverse learning objectives including the query-ad relevance and many other business indicators together, subject to lower response latency, restraints of computing resources and tiny adverse impact on user experience.

In this paper, we introduce Mobius-V1 which is our first attempt for teaching the matching layer to take CPM as an additional optimization objective besides the query-ad relevance. In other words, Mobius-V1 has the capability of accurately and rapidly predicting click-through rate (CTR) for billions of user query & ad pairs. To achieve this goal, we must resolve the following major problems:

    
  * Insufficient click history: The original neural click model employed by the ranking layer was trained by high-frequency ads and user queries. It tends to estimate a query-ad pair at a much higher CTR for display once either a high-frequency ad or a high-frequency query appears, even though they might have low relevance.  
    
  * High computational/storage cost: Mobius is expected to forecast multiple indicators (including relevance, CTR, ROI, etc.) of billions of user query & ad pairs. It naturally faces the challenge of greater consumption on computing resources.


To address the problems above, we first design a “teacher-student” framework inspired by the idea of active learning <cit.> to augment the training data for our large-scale neural click model to predict CTR for billions of user query & ad pairs. Specifically, an offline data generator is responsible for constructing synthetic query-ad pairs given billions of user queries and ad candidates. These query-ad pairs are constantly judged by a teacher agent which is derived from the original matching layer and is good at measuring the semantic relevance of a query-ad pair. It can help detect the bad cases (i.e., high CTR but low relevance) in the synthetic query-ad pairs. Our neural click model, as a student, is taught by the additional bad cases to improve the ability of generalization on tail queries and ads. To save the computing resources and satisfy the requirement of low response latency, we further adopt the most recent state-of-the-art approximate nearest neighbor (ANN) search and Maximum Inner Product Search (MIPS) techniques for indexing and retrieving a large number of ads more efficiently. 

To tackle the aforementioned challenges, Mobius-V1, as the first version of our next generation query-ad matching system, is an integration of the solutions above and has already been deployed in Baidu's sponsored search engine. 






§ VISION OF BAIDU'S SPONSORED SEARCH

For a long period of time, the funnel-shaped structure is a classical architecture of sponsored search engines <cit.>. The major components include the query-ad matching and ad ranking. The query-ad matching is typically a lightweight module which measures the semantic relevance between a user query and billions of ads. In contrast, the ad ranking module should concern much more business indicators such as CPM, ROI, etc., and use complex neural models to sort hundreds of ad candidates for display. This decoupled structure is a wise option to save the expensive computing resources in the early days.
Moreover, it can also facilitate both scientific research and software engineering as the two modules can be assigned to different research/development teams to maximize individual objectives.  

Baidu's sponsored search used to adopt a three-layer funnel-shaped structure which is shown by Figure <ref>. The optimization objective of the top matching layer (denoted by 𝒪_Matching) is to maximize the average relevance score among all the query-ad pairs:

    𝒪_Matching = max1/n∑_i=1^nRelevance (query_i, ad_i).

 
However, according to our long-term analysis on the performance of Baidu's sponsored search engine, we find out that the distinction/separation between matching and ranking objectives tends to lead to lower CPM which is one of the key business indicators for a commercial search engine. It is unsatisfactory when the models in the ranking layer report that many relevant ads provided by the matching layer will not be displayed on search results as they are estimated not to have higher CPM.

With the rapid growth of computing resources, the Baidu Search ads team (“Phoenix Nest”) has recently established the Mobius project which aims towards the next generation query-ad matching system in Baidu's sponsored search. The blueprint of this project as illustrated in Figure <ref> looks forward to unifying multiple learning objectives including the query-ad relevance and many other business indicators into a single module in Baidu's sponsored search, subject to lower response latency, limited computing resources and tiny adverse impact on user experience. 

This paper will report the first version of Mobius, i.e., Mobius-V1, which is our first attempt to teach the matching layer considering CPM as an additional optimization objective besides the query-ad relevance. Here we formulate the objective of Mobius-V1 as follows,

    𝒪_Mobius-V1 = max∑_i=1^nCTR (user_i, query_i, ad_i) × Bid_i, 
        s.t.   1/n∑_i=1^nRelevance (query_i, ad_i) ≥ threshold.

Thus, it  becomes a challenge about how to accurately predict CTR for billions pairs of user quires and ad candidates in Mobius-V1. In the rest of the paper, we will describe how we design, implement, and deploy Mobius-V1, in great details. 



§ MOBIUS: NEXT GENERATION QUERY-AD MATCHING SYSTEM


“Mobius” is Baidu's internal code name of this project. Coincidentally, the well-known “Mobius Loop” is also the bird's eye view of Baidu's Technology Park in Beijing, China; see Figure <ref>.   “Mobius-V1” is our first attempt (which has been successfully deployed) to transfer our neural click model to the matching layer directly facing billions of user query and ads.  As the scale of input data dramatically increases, we need to re-train our neural click model offline and update the techniques of indexing and retrieving ads.



 §.§ Active-Learned CTR Model


For over 6 years, Baidu's sponsored search engine has been using the deep neural networks (DNN) for the CTR model (of gigantic size). Recently, Mobius-V1 has adopted an innovative new architecture. An intuitive and simple way of building Mobius-V1 is to reuse the original CTR model in the ranking layer. It is a large-scale and sparse deep neural network (DNN) which is in favor of memorization. However, it suffers from a severe bias on CTR prediction of either the user queries or the ads in the tail. Consider, as shown in  Figure <ref>, the two queries  “Tesla Model 3” and “White Rose” requested by the same user as in the search log. For the funnel-shaped structure adopted in the past, the relevance between the query “Tesla Model 3” and the ad “Mercedes-Benz” is firstly guaranteed by the matching layer. Then our neural click model in the ranking layer tends to predict a higher CTR on the query-ad pair as “Tesla Model 3” is a high-frequency query and leaves a rich click history on the ad “Mercedes-Benz” in our search log. However, in Mobius-V1 we attempt to use our neural click network to directly handle billions of query-ad pairs lacking the guarantee of relevance. It is natural that many irrelevant query-ad pairs come out (e.g., the query “White Rose” and the ad “Mercedes-Benz” in Figure <ref>). Nevertheless, we have found out that our neural click model still tends to predict higher CTR for those irrelevant query-ad pairs.




According to our analysis on the query log in Baidu's sponsored search, the ads and the user queries suffer from the long-tail effect and the cold start problem. 
Therefore, we can not directly leverage the original neural click model to accurately predict CTR for billions of user queries and ads in the tail. The key to the problem is how we teach our model learning to recognize the “low relevance but high CTR” query-ad pairs as the bad cases. 





To solve this problem, we propose to use the original relevance judger in the matching layer as the teacher to make our neural click model aware of the “low relevance” query-ad pairs.
Our neural click model, as the student, acquires the additional knowledge on relevance from the augmented bad cases in an active learning fashion.
Figure <ref> illustrates the fashion by a flow diagram and Algorithm <ref> shows the training procedure of teaching our neural click model with active learning in pseudo code. 
Generally speaking, the iterative procedure of active learning has two phases: data augmentation and CTR model learning. To be specific, we will elaborate the modules in each phase step by step.

The phase of data augmentation starts from loading a batch of click history (i.e., user query & ad pairs) from query logs into a data augmenter. Every time the data augmenter receives the query-ad pairs, it splits them into two sets: a query set and an ad set. Then we apply a cross join operation (⊗) to the two sets for the sake of constructing more user query & ad pairs. Suppose that there are m queries and n ads in the batch of click history, and then the data augmenter can help generate m × n synthetic query-ad pairs. After listing all possible query-ad pairs, the relevance judger involves in and takes charge of grading the relevance of these pairs. As we want to discover the low relevance query-ad pairs, a threshold is set to reserve those pairs as candidate teaching materials. These low relevance query-ad pairs, as teaching materials, are fed into our neural click model for the first time, and each pair is assigned with CTR predicted by the updated model in the previous iteration. To teach our 3-classes (i.e., click, unclick and bad) neural click model learning to recognize “low relevance but high CTR” query-ad pairs, we may intuitively set another threshold to filter out most low CTR query-ad pairs. However, we consider a better option to balance the exploration and exploitation of the augmented data. We employ a data sampler which selects and labels the augmented data referred to the predicted CTRs of those synthetic query-ad pairs. Once a query-ad pair is sampled as a bad case for our neural click network, this pair is labeled by an additional category, i.e., bad. 

In the phase of learning our CTR model, both the click/unclick history and the labeled bad cases are added into the augmented buffer as the training data. Our neural click network is a large-scale and multi-layer sparse DNN which is composed of two subnets, i.e., user query DNN and ad DNN. As illustrated by Figure <ref>, the user query DNN on the left takes rich user profiles and queries as inputs and the ad DNN on the right regards the ad embeddings as features. Both subnets produce a distributed representation with 96 dimensions each of which is segmented into three vectors (32 × 3). We apply the inner product operation 3 times to the three pairs of vectors between the user query DNN and ad DNN and adopt a softmax layer for CTR prediction.  

Overall, we contribute a type of learning paradigm to train our neural click model offline in Baidu's sponsored search engine. 
For the sake of improving its capability of generalization on CTR prediction for billions of query-ad pairs in the tail, the neural click model (student) can actively query the relevance model (teacher) for labels. This type of iterative supervised learning is known as active learning <cit.>.




 §.§ Fast Ads Retrieval

In Baidu's sponsored search engine, we have been using the deep neural networks (i.e., user query DNN and ad DNN) illustrated by Figure <ref> to acquire both the embeddings of queries and ads, respectively. Given a query embedding, Mobius must retrieve the most relevant and the highest CPM ads from billions of ad candidates as stated in Eq. (<ref>). Of course, it is unpractical to calculate it exhaustively for each query although the brute-force search can theoretically discover all the ads (i.e., 100% ad recall) we are looking for. 
The online services often have restricted latency constraints and the ad retrieval must be done in a short period. Thus, we exploit approximate nearest neighbor (ANN) search techniques to speed up the retrieval process, as shown by Figure <ref>. 





  §.§.§ ANN Search

As shown in Figure <ref>, the mapping function combining user vectors and ad vectors by cosine similarity and then the cosine values go through a softmax layer to produce the final CTR. In this way, the cosine value and the CTR are monotonically correlated. After the model is learned, it will be clear they are positively or negatively correlated. If it is negatively correlated, we can easily transfer it to positively correlated by negating the ad vector. In this way, we reduce the CTR ranking problem into a cosine ranking problem, which is a typical ANN search setting. 


The goal of approximate nearest neighbor (ANN) search is to retrieve, for a given query object, the “most similar” set of objects from a large corpus, by only scanning a small fraction of objects in the corpus. This is a fundamental problem and has been actively studied since the early days in computer science <cit.>. Typically, popular algorithms for ANN have been based on the idea of space-partitioning, including tree-based methods <cit.>, random hashing methods <cit.>, quantization based approaches <cit.>, random partition tree methods <cit.>, etc. For this particular problem (which deals with dense and relatively short vectors), we have found that random partition tree methods are fairly effective. There is a known implementation of random partition tree methods called “ANNOY”, among other variants <cit.>.  







  §.§.§ Maximum Inner Product Search (MIPS)

In the above solution, the business-related weight information is considered after the user vector and ad vector matching. In practice, this weight is vital in ads ranking. To take into account the weight information earlier in the ranking, we formalize the fast ranking process by a weighted cosine problem as follows:

    cos(x, y)× w
        = x^⊤ y× w/xy=(x/x)^⊤(y× w/y),

where w is the business related weight, x is user-query embedding and y is the ad vector. Note that the weighted cosine poses an inner product searching problem, often referred as Maximum Inner Product Search (MIPS) <cit.>. In this line of work, multiple frameworks can be applied for fast inner product search <cit.>. 



  §.§.§ Vector Compression

Storing a high-dimensional floating-point feature vector for each of billions of ads takes a large amount of disk space and poses even more problems if these features need to be in memory for fast ranking. A general solution is compressing floating-point feature vectors into random binary (or integer) hash codes <cit.>, or quantized codes <cit.>. The compression process may reduce the retrieval recall to an extent but it may bring significant storage benefits. For the current implementation, we adopted a quantization based method like K-Means to cluster our index vectors, rather than ranking all ad vectors in the index. When a query comes, we first find the cluster that the query vector is assigned to and fetch the ads that belong to the same cluster from the index. The idea of product quantization (PQ) <cit.> goes one more step further to split vectors into several subvectors and to cluster each split separately. In our CTR model, as mentioned in Section <ref>, we split both query embeddings and ad embeddings into three subvectors. Then each vector can be assigned to a triplet of cluster centroids. For example, if we choose 10^3 centroids for each group of subvectors, 
10^9 possible cluster centroids can be exploited which is adequate for a billion-scale multi-index <cit.> for ads. In Mobius-V1, we employ a variant algorithm called Optimized Product Quantization (OPQ) <cit.>.
















§ EXPERIMENTS

We conducted thorough experiments on Mobius-V1 before integrating it into Baidu's sponsored search engine. Specifically, we first need to conduct the offline evaluation of our CTR prediction model and the new approach on ad indexing. We need to make sure that our CTR model with the updated method on retrieving ads can discover more relevant ads with higher CPM. Then we tried to deploy it online to process a proportion of the query flow in Baidu Search. After Mobius-V1 had passed both the offline evaluation and the online A/B test, we launched it on multiple platforms to monitor the statistics of CPM, CTR and ACP (i.e., average click price).



 §.§ Offline Evaluation


We loaded the search logs to collect the click/unclick history and built a training set which contains 80 billion samples. We also used the search log to construct the test set which has 10 billion records on ad click/unclick history.  We compare the effectiveness of our actively learned CTR model with two baseline approaches. One method is the 2-class CTR model adopted by the original ranking layer which was trained solely by the click history without using any augmented data. The other approach is a 3-class CTR model trained by the randomly augmented data without being judged by the relevance model (teacher). As shown by Table <ref>, our model can maintain a comparable AUC with the original ranking model but significantly improves the relevance model score (from 0.312 to 0.575)  measured by our relevance model. In other words, the low-relevance but high-CPM query-ad pairs are successfully recognized as the bad cases by our new CTR model in Mobius-V1.

Moreover, we delivered the top 100,000 query-ad pairs with the highest CTR predicted by each approach to the Crowdsourcing Team in Baidu, so as to manually grade the query-ad relevance ranging from 0 to 4 (0: no relevance, 4: quite relevant) by human experts. The report of subjective opinions also demonstrates that our CTR model in Mobius-V1 performs well on discovering relevant query-ad pairs. In addition, we used the same set of to retrieve ads from two ad indexing system powered by random partition trees (ANN+Re-Rank) and OPQ (Compressed Code+MIPS), respectively. Table <ref> shows that OPQ increases the ad coverage rate by 33.2%.



 §.§ Online A/B Testing

The online A/B testing was conducted between two different ad retrieval strategies employed by Mobius-V1 from the perspectives of average response time and memory usage. Table <ref> shows that OPQ can provide much lower latency than random partition tree methods and reduce the average response time by 48ms/query. Furthermore, we examined the average response time of the top 3% high-CPM ads which have greater business value but require more computing resources. It shows that OPQ cuts down the query latency by 75% (from 120ms to 30ms) and substantially saves memory consumption.  



 §.§ System Launching

After Mobius-V1 had successfully passed both the offline evaluation and the online A/B test, we decided to launch it on multiple platforms in and outside Baidu. These platforms include the Baidu App on mobile phones, Baidu Search on PCs, and many other affiliated websites/apps that our sponsored search engine serves. Table <ref> shows the statistics on CPM, CTR, and ACP according to our 7-day monitor on the entire online traffic. CPM is the primary metric to evaluate the performance of a sponsored search engine. Compared with the previous system, Mobius-V1 leads to a major improvement of CPM by 3.8% on the Baidu App and 3.5% on the Baidu Search, which are the main portals of our sponsored search engine.  




§ RELATED WORK

Our work on Mobius, which is towards the next-generation query-ad matching system in Baidu's sponsored search engine for commercial use, involves the research on query-ad matching and click-through rate (CTR) prediction. 



 §.§ Query-Ad Matching

Query-ad matching <cit.> is an extensively studied task which aims to retrieve advertisements that are not only the same with but also semantically similar to the given query (e.g., the query “U.S. tourist visa” and the ads about “travel agencies” displayed in Figure <ref>). As queries are commonly short texts, this issue has been mostly addressed by the techniques of query expansion <cit.>, query rewriting <cit.> and semantic matching <cit.>. Besides that we can leverage different NLP tools to directly compute the similarity between queries and textual ads, the semantic relationship between queries and ads can also be captured via learning from ad impressions. DSSM <cit.> is a well-known learning-to-match paradigm which leverages a deep neural architecture to capture query intent and to improve the quality of the learned semantic match given the click information.



 §.§ CTR Prediction


CTR prediction <cit.> is another core task in sponsored search, as it directly influences some business indicators such as CPM. It focuses on predicting the probability that an ad would be clicked if shown as a response to a submitted query. Conventional approaches on CTR prediction preferred handcrafted features of ad impressions obtained from historical click data by Bayesian <cit.> or feature selection methods <cit.>. Along with the recent emergence of Deep Learning <cit.>, many approaches <cit.> for CTR prediction utilize various deep neural nets to primarily alleviate issues of creating and maintaining handcrafted features by learning them automatically from the raw queries and textual ads. Baidu Search Ads (“Phoenix Nest”) has been successfully using ultra-high-dimensional and ultra-large-scale deep neural networks for training CTR models since 2013. 
  








§ CONCLUSIONS

In this paper, we introduce the Mobius project, which is the next generation of the query-ad matching system in Baidu's sponsored search engine, to you by answering the subsequent four questions:

    
  * Q: Motivation — why do we propose the Mobius project? 

    
    A: We used to adopt a three-layer funnel-shaped structure to screen and sort hundreds of ads for display from billions of ad candidates. However, the separation/distinction between matching and ranking objectives leads to a lower commercial return. To address this issue, we set up Mobius-V1 which is our first attempt to make the matching layer take business impact measures (such as CPM) into account instead of simply predicting CTR for billions of query-ad pairs.
    

    
    
  * Q: Challenges — what challenges have we encountered while building Mobius-V1? 

    
    A: The first problem is the insufficient click history for training the neural click model which is expected to have the generalization ability on the long-tail queries and ads. As the original neural click model employed by the ranking layer was trained by high-frequency ads and queries, it tends to estimate a query-ad pair at a higher CTR once either a high-frequency ad or a high-frequency query appears, even though they have no relevance at all. Another problem is the low retrieval efficiency and high memory consumption due to the increasing number of queries and ad candidates that Mobius has to handle. 
    

    
    
  * Q: Solutions — how do we design and implement Mobius to address those challenges? 

    
    A: To overcome the issue of insufficiency of click history, we design a “teacher-student” framework inspired by active learning to augment the training data. Specifically, an offline data generator is responsible for constructing synthetic query-ad pairs given billions of user queries and ad candidates. These query-ad pairs are constantly fed into the teacher agent which is derived from the original matching layer and is good at measuring the semantic relevance of a query-ad pair. The teacher agent can help detect the bad cases (i.e., with higher CTR but lower relevance) as the augmented data from the generated query-ad pairs. Our neural click model in Mobius-V1, as a student, is taught by the additional bad cases to improve the ability of generalization. To save the computing resources and satisfy the requirement of low response latency, we tested a variety of space partitioning algorithm for the approximate nearest neighbor (ANN) search and we have found that for our datasets, OPQ <cit.> is able to achieve good performance for indexing and retrieving billions of ads more efficiently. 
    

    
    
  * Q: Feedbacks — how does Mobius-V1 perform in Baidu's sponsored search engine? 

    
    A: We have already deployed Mobius-V1 in Baidu's sponsored search engine The results from both online and offline experiments demonstrate that this new matching system increases CPM by 3.8% and promotes ad coverage by 33.2%.




§ FUTURE WORK


Since 2013, Baidu Search Ads (a.k.a. Phoenix Nest) has successfully deployed ultra-large-scale deep neural networks for training CTR models. To move beyond the CTR model, Mobius has been established as an innovative and forward-looking project. The idea of unifying the objectives of optimizing the user experience and business target also inspires other featured products such as Feeds. 

For future work, many potential directions can be explored. For example,  we expect to be able to bring more business targets such as ROI (return on investment), as additional learning objectives into the matching layer so that we can discover more business-friendly ads. Along with more optimization objectives for billions of candidate ads and queries, the computational complexity will significantly increase. There ought to be a trade-off between the effectiveness and efficiency of our sponsored search engine given the requirement of lower response latency and the restraints of computing resources.


The crucial step in Mobius project is the fast ads retrieval task via approximate near neighbor search (ANN). The current system has used the cosine similarity to approximate the CTR, based on their monotonic correlation. If the final layer is more complicated, it will be problematic to rank by cosine (or weighted cosine). Searching by complicated measures has been studied, for example <cit.>, which could be adopted by future versions of Mobius. 
Another promising direction is to adopt a GPU-based system for fast ANN, which has been shown highly effective for generic ANN tasks <cit.>. 





We are deeply grateful to the contributions of many colleagues from Baidu. A few names are  Lin Liu, Yue Wang, Anlong Qi, Lian Zhao, Shaopeng Chen, Hanju Guan, and Shulong Tan; but there are certainly many more who have contributed to this large project. 






ACM-Reference-Format


