{"id":2021,"date":"2026-09-11T10:36:53","date_gmt":"2026-09-11T10:36:53","guid":{"rendered":"https:\/\/cms.research.wpp.com\/?post_type=research_feed&#038;p=2021"},"modified":"2026-09-11T11:49:52","modified_gmt":"2026-09-11T11:49:52","slug":"embedding-alignment-for-profile-matching","status":"publish","type":"research_feed","link":"https:\/\/cms.research.wpp.com\/?research_feed=embedding-alignment-for-profile-matching","title":{"rendered":"Embedding Alignment for Profile Matching\u00a0"},"content":{"rendered":"<p>Can two companies collaborate on audience sizing and enrichment without sharing raw customer data, and without having to use the same AI embedding model? In this initial phase, we tested whether independent customer embedding spaces can be aligned using a geometric transformation guided by a small sample of shared customer profiles. We found that models built on similar foundations align almost seamlessly, and even entirely different models reliably place customers into their correct behavioural neighbourhoods for effective audience discovery. Furthermore, this alignment remains robust even with very few shared customer records. These findings prove that cross-model audience matching is viable in practice, establishing a strong foundation for our next goal: aligning spaces without needing any shared customers at all.<\/p>\n<p><!--more--><\/p>\n<h2>The Problem<\/h2>\n<p>Consider two large B2C companies: a global e-commerce platform and a major telecom provider. Both have millions of customers and very rich data, such as purchase and web traffic history. If those two datasets could be joined, each company would learn from the other and greatly expand its understanding of its customer base. They could use this to improve their offerings, their marketing, and their personalisation features.<\/p>\n<p>But such a join is simply not possible, due to privacy laws and other applicable regulations. The raw data cannot be moved, and it cannot be shared with anyone.<\/p>\n<p>One AI-based &#8220;join&#8221; approach that has been gaining popularity is to use semantic embeddings: each customer profile is encoded by an embedding model (typically LLM-based), which converts it into a vector of a few hundred floating-point numbers. These numbers act as the coordinates of the profile in a semantic space. Similar customers are mapped to nearby points within that space; dissimilar customers are mapped to distant ones.<\/p>\n<p>Suppose both companies apply this process, converting their millions of customer profiles into millions of embedding vectors. Company A can then send the embedding of a customer as a query to Company B, which uses a vector index to quickly identify and count similar customers on its side. It can respond with just the count (audience sizing) or with aggregate descriptive labels that characterise the query user&#8217;s neighbours (audience enrichment). All without either side ever sharing raw customer data. Right?<\/p>\n<p><strong>Not quite.<\/strong> There are at least two problems to worry about.<\/p>\n<p>First, an embedding is an obfuscated version of a customer profile, but it is not necessarily a safe one. Both directions of the exchange can leak. Every query embedding A sends reveals information about A&#8217;s own customer, and the counts and labels B returns can be probed by adversarially designed queries to reconstruct parts of B&#8217;s space, potentially exposing real customer data.<\/p>\n<p>Second, the query-based approach only works if both partners use the same encoder, the same profile-to-embedding converter. If they do not, we are comparing apples and oranges: the two semantic spaces are unrelated, and the notion of a &#8220;neighbour&#8221; across them is meaningless. In practice, the data of each partner is likely to have a different schema that will require a different encoder. For instance, the purchase history of a user has different columns than their web traffic history. Even if we assumed that both sides have the same type of data, there is no guarantee that they will choose the same encoder.<\/p>\n<p>In this blog post, we describe the first phase of our research on the second problem: methods for aligning spaces produced by different encoders. The first problem (adversarial embedding-based attacks) is on our roadmap and will be tackled next.<\/p>\n<h3>Starting in Easy Mode<\/h3>\n<p>Before complicating the problem, we must first establish whether such an embeddings-based alignment is viable under ideal conditions. To this end, in this opening phase of our research, we make three simplifying assumptions:<\/p>\n<ul style=\"list-style: none; padding-left: 0; margin: 0 0 20px;\">\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Identical Feature Structure. <\/strong>Each of the two partners holds the exact same underlying dataset (identical feature columns and distributions).<\/li>\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Pretrained Embedding Encoders. <\/strong>To generate embeddings, we assume that each side represents tabular rows as text strings and encodes them using off-the-shelf text-encoder models. In real-world enterprise deployments, a partner may opt for specialised, custom encoders.<\/li>\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Anchor Points. <\/strong>We assume knowledge that a specific set of records exists on both sides (i.e. a set of shared users with accounts on both the e-commerce platform and the telecom vendor). We refer to these as \u201canchors\u201d. These anchors guide our alignment algorithm, allowing us to benchmark how cleanly we can rotate one embedding space into another. In practice, there is no guarantee that such anchors will exist or will be known to exist.<\/li>\n<\/ul>\n<p>We are fully aware that we cannot rely on these three assumptions when dealing with real data partners. Still, we use them to create an idealised setting that allows us to test the feasibility of different methods: if a method can\u2019t work in this simplest of settings, then it will immediately collapse once even one of our three assumptions is removed.<\/p>\n<h2>Methodology<\/h2>\n<h3>Dataset Source<\/h3>\n<p>To simulate a real-world scenario under the above assumptions, we take a starting dataset and copy it into two identical chunks, representing \u201cPartner 1\u201d and \u201cPartner 2\u201d.<\/p>\n<p>To this end, we use the <a style=\"font-weight: 600; text-decoration: none;\" href=\"https:\/\/community.ibm.com\/community\/user\/blogs\/steven-macko\/2019\/07\/11\/telco-customer-churn-1113\" target=\"_blank\" rel=\"noopener\">IBM Telco Customer Churn<\/a> dataset, which is a standard tabular dataset with 7,043 rows and 33 raw columns containing customer demographics, account information, and service usage. Before encoding, we drop 8 redundant, uninformative, or leaking columns, leaving 23 feature columns.<\/p>\n<p>With our two datasets equal, we have 7,043 anchors (ground-truth correspondences) available to us, which we partition into a training set and a testing set. The training anchors are provided to the alignment algorithm to learn the mapping between spaces, while the testing anchors are strictly held out to evaluate alignment quality.<\/p>\n<h3>Encoding the Dataset<\/h3>\n<p>Once we have our two datasets, we convert the raw tabular data into continuous vectors (embeddings). As mentioned earlier, each tabular row is converted into a single text string by combining its column names and values, and then passed through a sentence embedding model. For this experiment, we use five open-source embedding models: <code>gte-base<\/code>, <code>mpnet-base<\/code>, <code>baai-base<\/code> (BGE), <code>mini-lm<\/code>, and <code>gte-large<\/code>, chosen to provide a representative range of architectures, dimensions, and performance.<\/p>\n<h3>Real Anchor Alignment<\/h3>\n<p>With our embeddings generated, we use the training anchors to align Partner 1\u2019s embedding space with Partner 2\u2019s space. We do this using Orthogonal Procrustes analysis, which finds the optimal rotation and reflection matrix to map Partner 1\u2019s training anchors onto Partner 2\u2019s training anchors. Once computed, this transformation matrix is applied across all of Partner 1\u2019s data.<\/p>\n<p>We also run PCA on both spaces prior to alignment to reduce dimensionality and filter high-frequency noise, which significantly improves alignment performance and stability.<\/p>\n<h3>Evaluation Metrics<\/h3>\n<p>To measure the success of the alignment, we evaluate our held-out test anchors. For every test anchor in Partner 1 (the query <em>Q<\/em>), we search across the entire Partner 2 embedding space (the full target pool of 7,043 customers) using Euclidean distance. We then compute:<\/p>\n<ul style=\"list-style: none; padding-left: 0; margin: 0 0 20px;\">\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Recall@<em>k<\/em>: <\/strong>The proportion of test queries where the true corresponding customer <em>T<\/em> in Partner 2 ranks within the top <em>k<\/em> nearest neighbours (e.g., Recall@1, Recall@5, Recall@10, Recall@50).<\/li>\n<\/ul>\n<h2>Results<\/h2>\n<h3>Overall Alignment Results<\/h3>\n<p>First, we apply this methodology across different combinations of embedding models, using 75% of the dataset (5,282 records) as training anchors and holding out the remaining 25% (1,761 records) for testing. This is a very generous (and unrealistic) setting, as we basically assume that 75% of customers are known to exist on both sides. Later in this blog post, we will address this by gradually reducing this percentage to observe the method\u2019s robustness.<\/p>\n<p>We get the following results:<\/p>\n<div style=\"overflow-x: auto; margin: 22px 0; border: 1px solid rgba(148,163,184,0.3); border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);\">\n<table style=\"width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.5;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P1 Embedding Model<\/th>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P2 Embedding Model<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@1<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@5<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@10<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@20<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@30<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@40<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@50<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.83<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.95<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.97<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.83<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.80<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.80<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.74<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.90<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.73<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.89<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.97<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-large<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.71<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.92<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.95<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.66<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.88<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.58<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.85<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.90<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.97<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.98<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.58<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.81<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.88<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.92<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.97<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>As we can see, when using identical embeddings for both partners, the alignment is perfect, with Recall@1 of 100%. This is expected, as the two embedding spaces are identical, and so Procrustes is not even needed to align them.<\/p>\n<p>When using different embeddings for each partner (e.g., <code>mini-lm<\/code> vs. <code>mpnet-base<\/code>), the alignment drops at varying degrees of severity. Recall@1 falls to around 58% in the worst case but still reaches 100% for the best case. Overall, diminished recall scores are expected, as different embedding models capture different semantic features in the data.<\/p>\n<p>Furthermore, Recall@20 exceeds 92% across all tested pairs, demonstrating that even when the exact top match is missed, the alignment reliably places the true counterpart within a close neighbourhood.<\/p>\n<p>We look at some specific cases in more detail below:<\/p>\n<h3>The Lowest Performing Embedding Combination (mini-lm vs. mpnet-base)<\/h3>\n<p>First, we look at the embedding combination which resulted in the lowest alignment performance: <code>mini-lm<\/code> vs. <code>mpnet-base<\/code>.<\/p>\n<p>While Recall@1 is 58%, Recall@20 reaches 92%. This suggests that while the 1-to-1 alignment is imperfect, it still captures meaningful semantic correspondences between the two spaces.<\/p>\n<p>Such a difference in alignment is largely explained by the two models capturing different geometric structures in the data. This is reinforced by the plot below, which shows both embedding spaces pre-alignment projected down to 2 dimensions with independent PCA: Partner 2 exhibits 4 distinct clusters, whereas Partner 1 is more evenly spread. Because Orthogonal Procrustes is strictly an orthogonal rotation and reflection, it cannot alter intrinsic cluster topologies, preventing a perfect mapping.<\/p>\n<figure style=\"margin: 22px 0;\"><img decoding=\"async\" style=\"width: 100%; height: auto; display: block; border-radius: 12px;\" src=\"https:\/\/cms.research.wpp.com\/wp-content\/uploads\/2026\/09\/before_alignment-1-scaled.png\" alt=\"\" \/><figcaption style=\"font-size: 0.9em; opacity: 0.75; font-style: italic; margin-top: 8px; text-align: center;\">PCA 2D projection before Procrustes Alignment.<\/figcaption><\/figure>\n<div style=\"border: 1px solid rgba(148,163,184,0.3); border-left: 6px solid #2563eb; border-radius: 12px; padding: 18px 22px; margin: 22px 0; background: rgba(37,99,235,0.05);\">\n<h3 style=\"margin: 0 0 8px;\">Note: Interpretation of 2D Visualisations<\/h3>\n<p style=\"margin: 0;\">The plot above is generated by projecting high-dimensional embedding spaces (64 to 1024 dimensions) down to 2 dimensions using PCA. Consequently, 2D proximity cannot be interpreted as a direct representation of geometric relationships in high-dimensional space. Furthermore, each partner\u2019s embedding space is fitted with an independent PCA (2 components) and overlaid to illustrate intrinsic cluster shapes and structural distributions (cross-partner distances in this plot are not directly comparable).<\/p>\n<\/div>\n<h3>The Best Non-Identical Embedding Combination (baai-base vs. gte-base)<\/h3>\n<p>In contrast, we look at the non-identical embedding combination which resulted in the best alignment performance: <code>baai-base<\/code> vs. <code>gte-base<\/code>.<\/p>\n<p>Here, Recall@1 is 100%, demonstrating that the two embedding spaces can be mapped onto one another almost flawlessly with a simple orthogonal rotation.<\/p>\n<p>This remarkable alignment is explained by their shared architectural lineage: both models were initialised from <code>bert-base-uncased<\/code> before being fine-tuned on separate corpora. Because downstream fine-tuning largely preserved the global coordinate structure, the two spaces remain related by a near-pure orthogonal rotation.<\/p>\n<h2>Further Results: Varying Anchor Availability<\/h2>\n<p>So far, our experiments have assumed access to 75% of the dataset as known anchor points. This is an optimistic assumption for real-world enterprise collaboration. We therefore systematically vary the proportion of training anchors provided to Procrustes across 75%, 50%, 25%, 10%, 5%, and 1% (corresponding to 5,282, 3,521, 1,760, 704, 352, and 70 training anchors, respectively), while holding the evaluation test set fixed at 25% (1,761 records). This gives us an indication of how much cooperation between companies is needed to achieve acceptable results.<\/p>\n<p>From these experiments, we observe the following:<\/p>\n<h3>Same Encoder<\/h3>\n<p>As in the initial experiments, when both partners use the same embedding model, Recall@1 remains 100% regardless of the number of training anchors used. Even at the extreme limit of 1% training anchors (70 points), alignment is flawless because again both representations share identical underlying geometry, meaning Procrustes is unnecessary:<\/p>\n<div style=\"overflow-x: auto; margin: 22px 0; border: 1px solid rgba(148,163,184,0.3); border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);\">\n<table style=\"width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.5;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P1 Embedding Model<\/th>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P2 Embedding Model<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchor Prop.<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchors Used<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@1<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@5<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@10<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@20<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@30<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@40<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@50<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.75<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">5282<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.50<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">3521<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.25<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1760<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.10<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">704<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.05<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">352<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.01<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">70<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Top Performing Embedding Pairs<\/h3>\n<p>The top-performing non-identical pair in initial testing was <code>baai-base<\/code> and <code>gte-base<\/code>. As shown below, alignment performance remains high across all anchor budgets, highlighting the structural compatibility between these two spaces (both initialised from <code>bert-base-uncased<\/code>).<\/p>\n<p>Performance only begins to soften at the extreme low-anchor regime of 1% training anchors (70 points), where Recall@1 is 98.7% and Recall@50 reaches 99.4%:<\/p>\n<div style=\"overflow-x: auto; margin: 22px 0; border: 1px solid rgba(148,163,184,0.3); border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);\">\n<table style=\"width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.5;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P1 Embedding Model<\/th>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P2 Embedding Model<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchor Prop.<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchors Used<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@1<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@5<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@10<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@20<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@30<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@40<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@50<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.75<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">5282<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.50<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">3521<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.25<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1760<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: rgba(5,150,105,0.06); color: #065f46; font-weight: 600;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.10<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">704<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.05<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">352<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1.00<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">baai-base<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">gte-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.01<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">70<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.99<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>General Non-Identical Embedding Combinations<\/h3>\n<p>For the remaining non-identical embedding combinations, test anchor recall decreases as fewer training anchors are provided.<\/p>\n<p>To illustrate these trends, the table below shows results for <code>mini-lm<\/code> vs. <code>mpnet-base<\/code> across all anchor training proportions:<\/p>\n<div style=\"overflow-x: auto; margin: 22px 0; border: 1px solid rgba(148,163,184,0.3); border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.02);\">\n<table style=\"width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.5;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P1 Embedding Model<\/th>\n<th style=\"text-align: left; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">P2 Embedding Model<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchor Prop.<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Anchors Used<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@1<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@5<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@10<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@20<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@30<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@40<\/th>\n<th style=\"text-align: right; padding: 10px 14px; border: 1px solid rgba(148,163,184,0.25); background: #f8fafc; font-weight: 600; color: #334155; font-size: 0.9em; white-space: nowrap;\">Recall@50<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.75<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">5282<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.58<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.81<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.88<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.92<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.94<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.97<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.50<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">3521<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.57<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.80<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.88<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.95<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.96<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.25<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">1760<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.53<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.76<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.84<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.90<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.91<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.95<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.10<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">704<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.49<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.72<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.81<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.88<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.91<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.92<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.93<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.05<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">352<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.40<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.65<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.73<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.81<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.86<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.89<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.91<\/td>\n<\/tr>\n<tr style=\"background: #fcfcfd;\">\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mini-lm<\/code><\/td>\n<td style=\"text-align: left; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\"><code style=\"font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 0.9em; background: rgba(0,0,0,0.04); padding: 2px 6px; border-radius: 5px;\">mpnet-base<\/code><\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.01<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">70<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.07<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.20<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.29<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.37<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.44<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.49<\/td>\n<td style=\"text-align: right; padding: 9px 14px; border: 1px solid rgba(148,163,184,0.2);\">0.55<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Even for this lowest-performing combination, performance remains relatively strong down to moderate anchor budgets: Recall@20 exceeds 80% even when providing only 5% of anchors (352 points). Alignment degrades sharply only at the extreme 1% regime (70 anchors), where Recall@1 drops to 7% and Recall@50 to 55%, indicating that an under-sampled anchor set struggles to stabilise the global transformation against geometric drift.<\/p>\n<figure style=\"margin: 22px 0;\"><img decoding=\"async\" style=\"width: 100%; height: auto; display: block; border-radius: 12px;\" src=\"https:\/\/cms.research.wpp.com\/wp-content\/uploads\/2026\/09\/recall1_vs_anchors_mini_lm_mpnet.png\" alt=\"\" \/><figcaption style=\"font-size: 0.9em; opacity: 0.75; font-style: italic; margin-top: 8px; text-align: center;\">Recall@1 vs. Anchor Budget for mini-lm vs. mpnet-base.<\/figcaption><\/figure>\n<h2>Next Steps<\/h2>\n<ul style=\"list-style: none; padding-left: 0; margin: 0 0 20px;\">\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Zero-Anchor Matching. <\/strong>Our immediate next step is examining methods to align spaces when no ground-truth anchors are shared. This will involve using dataset schemas and marginal distributions to construct synthetic anchors. Interestingly, as we observed diminished performance at the 1% anchor budget, synthetic anchor methods may also help stabilise low-anchor regimes.<\/li>\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Heterogeneous Cross-Domain Datasets. <\/strong>To make our approach applicable to real enterprise partnerships, we need to validate that alignment methods work when partner datasets feature different schemas and feature sets.<\/li>\n<li style=\"margin: 0 0 10px;\"><span style=\"color: #2563eb; font-weight: 800; margin-right: 0.5em;\">\u25b8<\/span><strong>Specialised Tabular Encoders. <\/strong>In practice, enterprises will likely choose specialised architectures to encode tabular records (such as tabular AutoEncoders or self-supervised models) rather than sentence transformers. We will investigate whether specialised tabular encoders yield more consistent, robust geometric representations across different partners.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Can two companies collaborate on audience sizing and enrichment without sharing raw customer data, and without having to use the same AI embedding model? In this initial phase, we tested whether independent customer embedding spaces can be aligned using a geometric transformation guided by a small sample of shared customer profiles. We found that models [&hellip;]<\/p>\n","protected":false},"author":36,"featured_media":0,"template":"","meta":{"_acf_changed":false,"_ppma_block_editor_authors":""},"tags":[],"content_types":[{"id":50,"name":"Blog Post","slug":"article"}],"ppma_author":[{"id":36,"display_name":"Simon Philp","first_name":"Simon","last_name":"Philp","nickname":"simon.philp","user_nicename":"simon-philp","user_email":"simon.philp@satalia.com","biographical_info":"Simon is a Data Scientist with experience applying Bayesian methods and predictive modeling to design innovative, data-driven solutions for complex operational challenges. His background spans machine learning, deep learning, and advanced statistical analysis, alongside leading impactful AI initiatives that drive organizational efficiency. During his time as a Research Assistant with the Met Office, he utilized Bayesian techniques to model environmental patterns, bringing together rigorous research and practical, real-world application.\r\n\r\nSimon holds a Master's degree with Distinction in Data Science and Analytics from the University of Leeds and a First-Class Honours degree in Mathematics from Durham University. This strong academic and research foundation supports his work in translating complex mathematical concepts into robust, scalable technology that automates processes and delivers measurable value.","avatar_url":"https:\/\/cms.research.wpp.com\/wp-content\/uploads\/2026\/06\/author.jpeg","job_title":"Data Scientist","is_lead":false,"display_as_researcher":true,"order_priority":null}],"class_list":["post-2021","research_feed","type-research_feed","status-publish","hentry","content_type-article"],"acf":{"content":"","content_quarter":"Q3 2026","related_pods":[2022]},"research_categories":[],"raw_acf":{"content":"","content_quarter":"Q3 2026","related_pods":["2022"],"featured":"","legacy_perspective_source_id":""},"_links":{"self":[{"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=\/wp\/v2\/research_feed\/2021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=\/wp\/v2\/research_feed"}],"about":[{"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=\/wp\/v2\/types\/research_feed"}],"author":[{"embeddable":true,"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=\/wp\/v2\/users\/36"}],"acf:post":[{"embeddable":true,"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=\/wp\/v2\/research_pods\/2022"}],"wp:attachment":[{"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2021"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2021"},{"taxonomy":"content_type","embeddable":true,"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcontent_types&post=2021"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/cms.research.wpp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fppma_author&post=2021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}