JUDE: Large-Scale LLM-Based Embedding Generation for Job Recommendations

linkedin · Tech · 2025 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Large-scale job recommendation embeddings

LinkedIn needed higher-quality semantic representations for matching jobs, member profiles, and resumes at massive scale while keeping latency, cost, privacy, and operational complexity manageable. Standardized features, smaller ML models, rigid upstream pipelines, and taxonomies were not enough for the job recommendation and search ranking stack.

Constraints:

Architecture

LinkedIn built JUDE, an end-to-end platform for generating and serving LLM-derived embeddings for job recommendations. The model side uses a shared base LLM with specialized prompt templates for job descriptions and member profiles, fine-tuned on relevance and engagement signals with LoRA, Flash Attention 2, Liger kernels, bfloat16, gradient accumulation/checkpointing, DeepSpeed ZeRO, and engineered losses. The serving side uses Kappa nearline inference: Kafka/Brooklin changelog streams feed Samza pipelines, which extract features, apply prompts, skip unchanged text, call GPU Model Serving over GRPC, and write embeddings to Venice for online ranking plus Kafka/HDFS for offline training. Batch Flyte/Spark/K8S/Ray pipelines bootstrap and backfill embeddings, and hashing/deduplication reduce inference volume.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  Job_document_index["Job document index"] --> Embedding_based_retrieval["Embedding-based retrieval"]
  Embedding_based_retrieval --> Ranking_cascade["Ranking cascade"]
  Relevance_supervision_labels["Relevance supervision labels"] --> Shared_base_LLM["Shared base LLM"]
  Engagement_supervision_labels["Engagement supervision labels"] --> Shared_base_LLM
  Specialized_prompt_templates["Specialized prompt templates"] --> Shared_base_LLM
  Shared_base_LLM --> Fine_tuning_optimization_stack["Fine-tuning optimization stack"]
  Shared_base_LLM --> Loss_engineering_stack["Loss engineering stack"]
  Fine_tuning_optimization_stack --> Model_Cloud_serving["Model Cloud serving"]
  Model_Cloud_serving --> GRPC_model_serving_endpoints["GRPC model serving endpoints"]
  Kafka_Brooklin_changelog_streams["Kafka Brooklin changelog streams"] --> Samza_nearline_pipelines["Samza nearline pipelines"]
  Specialized_prompt_templates --> Samza_nearline_pipelines
  Samza_nearline_pipelines --> Change_detection_deduplication["Change detection deduplication"]
  Change_detection_deduplication --> GRPC_model_serving_endpoints
  GRPC_model_serving_endpoints --> Venice_online_embedding_store["Venice online embedding store"]
  GRPC_model_serving_endpoints --> Kafka_HDFS_offline_sinks["Kafka HDFS offline sinks"]
  Offline_batch_bootstrap["Offline batch bootstrap"] --> Venice_online_embedding_store
  Offline_batch_bootstrap --> Kafka_HDFS_offline_sinks
  Venice_online_embedding_store --> Embedding_based_retrieval
  Loss_engineering_stack --> JUDE_embeddings["JUDE embeddings"]
  JUDE_embeddings --> Ranking_cascade
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Job document index Initial retrieval index where ABM and embedding-based retrieval generate candidate jobs. Embedding-based retrieval, Ranking cascade
Embedding-based retrieval ANN-based retrieval method that uses embeddings and member signals to generate candidate sets. Job document index, Ranking cascade, Venice online embedding store
Ranking cascade Progressive ranking layers that apply more sophisticated models to score job-member pairs. Embedding-based retrieval, JUDE embeddings
Shared base LLM Fine-tuned LLM backbone shared across input types for representation learning. Specialized prompt templates, Fine-tuning optimization stack, JUDE embeddings
Specialized prompt templates Soft task descriptors for job descriptions and member profiles that guide embedding generation. Shared base LLM, Samza nearline pipelines
Relevance supervision labels Scarce high-quality semantic labels enforcing role, location, and qualification matching. Shared base LLM
Engagement supervision labels Larger-scale behavior labels such as job applications aligned with business metrics and user intent. Shared base LLM
Fine-tuning optimization stack LoRA, Flash Attention 2, Liger kernels, bfloat16, gradient accumulation, checkpointing, H100 distributed training, DeepSpeed ZeRO, AdamW, and learning-rate scheduling. Shared base LLM, Model Cloud serving
Loss engineering stack Binary cross-entropy, contrastive InfoNCE, VP-matrix loss, and cross-encoder distillation for embedding quality. Shared base LLM, JUDE embeddings
Kafka Brooklin changelog streams Separate changelog streams for job postings, member profiles, and member resumes. Samza nearline pipelines
Samza nearline pipelines Real-time processing pipelines that extract text, apply prompts, detect changes, invoke model serving, and write sinks. Kafka Brooklin changelog streams, Specialized prompt templates, GRPC model serving endpoints, Venice online embedding store, Kafka HDFS offline sinks
GRPC model serving endpoints Model Cloud and Kubernetes GPU-pod microservice endpoint for LLM embedding inference. Samza nearline pipelines, Model Cloud serving, Venice online embedding store, Kafka HDFS offline sinks
Model Cloud serving LinkedIn model inference stack hosting fine-tuned models for nearline embedding inference. Fine-tuning optimization stack, GRPC model serving endpoints
Venice online embedding store High-performance key-value store for real-time access during document ranking. Samza nearline pipelines, Embedding-based retrieval, Ranking cascade
Kafka HDFS offline sinks Offline embedding topics and HDFS ETL path for training with time-aware Spark joins. Samza nearline pipelines, Offline batch bootstrap
Offline batch bootstrap Flyte/Spark/K8S/Ray pipelines for initial embedding versions and historical backfills. Kafka HDFS offline sinks, Venice online embedding store
Change detection deduplication Hashing-based optimization that skips unchanged text and deduplicates inputs to reduce LLM inference. Samza nearline pipelines, Offline batch bootstrap, GRPC model serving endpoints
JUDE embeddings Dense LLM-derived vectors for jobs, member profiles, and resumes used by recommendation/search ranking models. Shared base LLM, Loss engineering stack, Ranking cascade

Data flow

Job postings, member profiles, and resumes emit separate Kafka/Brooklin changelog streams. Dedicated Samza real-time pipelines extract relevant text, apply the appropriate prompt, skip inference when text has not changed meaningfully, call the LLM Model Serving cluster over GRPC, and write generated embeddings to online Venice storage and offline Kafka/HDFS sinks. Before nearline inference starts, Flyte/Spark/K8S/Ray batch inference bootstraps new embedding versions and performs targeted backfills. The embeddings then serve as features in job recommendation and search L2 ranking models.

4 supporting quotes
“We generate embeddings for three key types of entities: job postings, member profiles, and member resumes.”article, stated
“We have separate input Kafka / Brooklin streams representing the changelog for each entity”article, stated
“Embedding inference: Make a GRPC call to the LLM Model Serving cluster to generate the embedding for the text input.”article, stated
“The generated embeddings are written to multiple sinks to support both online and offline use cases:”article, stated

Why this architecture

JUDE uses fine-tuned LLM embeddings because job matching needs semantic understanding across jobs, profiles, and resumes, but production scale requires a nearline-first Kappa architecture, shared LLM/two-tower efficiency, prompt templates per entity type, aggressive training/inference optimizations, and separate online/offline sinks. This lets LinkedIn improve ranking quality while keeping embedding latency, cost, feature freshness, and maintenance manageable.

4 supporting quotes
“JUDE is an example of our novel architecture that integrates state-of-the-art LLMs with open-source and proprietary infrastructure to handle the complexities of LLM deployment while maintaining manageable latency and cost”article, stated
“LLM fine-tuning serves two critical purposes in production recommender systems. First, it enables domain adaptation”article, stated
“The system consists of four logical subcomponents:”article, stated
“This simple optimization reduces the embedding inference cost up to 3x.”article, stated

Models used: fine-tuned LLMs · 7B+ decoder-only models · encoder-decoder architectures · Mistral family models · cross-encoders · two-tower architecture · LoRA adapters · DeepSpeed ZeRO · Flash Attention 2

Scale

Alternatives considered (roads not taken)

Keep standardized features, smaller ML models, taxonomies, and rigid pipelines

Rejected because: JUDE replaced standardized features with LLM-derived representations and eliminated dependencies on imprecise smaller models, hard-to-maintain taxonomies, and rigid upstream pipelines.

“Replaced standardized features with LLM-derived representations 2. Eliminated dependencies on: 1. Imprecise smaller ML models 2. Hard-to-maintain taxonomies 3. Rigid upstream pipelines”article, stated

Use Lambda architecture with scheduled inference jobs

Rejected because: The Kappa/nearline architecture resolves time-travel issues, reduces GPU cost, and removes recovery of failed scheduled inference jobs.

“Improved system architecture due to migration from Lambda to Kappa architecture, delivering: 1. Easier resolution of time-travel issues”article, stated
“Simplified maintenance by eliminating the need to monitor and recover failed scheduled inference jobs”article, stated

Use cross-attention models directly for online inference

Rejected because: Cross-encoders performed better but had much higher computational requirements, so LinkedIn distilled them into efficient 7B decoder-only models.

“cross-encoders demonstrated superior performance due to their computation of the full Transformer attention between text inputs, but at the cost of significantly higher computational requirements.”article, stated
“we implemented offline cross-encoder distillation for fine-tuning 7B decoder only models, which bridged 50% of the performance gap”article, stated

Run inference on every database change

Rejected because: Meaningful-change detection and deduplication cut cost and volume by skipping unchanged text.

“Change detection: Skip inference if the text content has not changed meaningfully from the previous version.”article, stated
“deduplicate inputs for LLM inference. This intelligent change detection reduces inference volume by approximately 6x compared to naive database change tracking.”article, stated

Patterns

fine-tuning-adaptation (model)

LinkedIn fine-tunes LLMs with proprietary relevance and engagement signals so embeddings understand job-marketplace terminology, role matching, and real hiring behavior.

“LLM fine-tuning serves two critical purposes in production recommender systems. First, it enables domain adaptation”article, stated
“it leverages proprietary LinkedIn data, incorporating unique insights from real hiring and market-specific trends and preferences that aren’t available in public datasets.”article, stated

rag-retrieval (retrieval)

JUDE embeddings power semantic retrieval and similarity computation in LinkedIn's job recommendation stack, replacing weaker standardized features.

“These embeddings serve as fundamental features powering the entire job recommendation stack, enabling efficient similarity computations and semantic search capabilities.”article, stated
“attribute-based matching (ABM) and embedding-based retrieval (EBR) generate initial candidate sets.”article, stated

cost-aware-routing (operations)

Kappa nearline inference, change detection, hashing, deduplication, two-tower efficiency, and cross-encoder distillation reduce LLM inference and training costs.

“Cost-efficient GPU inference through nearline-first approach”article, stated
“This intelligent change detection reduces inference volume by approximately 6x compared to naive database change tracking.”article, stated

batch-offline-processing (operations)

Offline Flyte/Spark/K8S/Ray pipelines bootstrap new embedding versions and backfill historical embeddings before nearline updates become the source of truth.

“we built an on-demand system for a one-time batch inference to bootstrap the initial set of embeddings, and treat the nearline updates as the source of truth moving forward.”article, stated
“This module leverages Flyte/Spark/K8S/Ray pipelines to support two key functions:”article, stated

eval-driven-development (evaluation)

LinkedIn evaluates architecture and model choices through relevance/engagement supervision, loss engineering, cross-encoder comparison, distillation gap closure, and production A/B metrics.

“We evaluated the performance delta between our two-tower architecture and cross-attention models.”article, stated
“leading to +2.07% Qualified Applications, -5.13% Dismiss to Apply, +1.91% Total Job Applications.”article, stated

Tradeoffs

Use LLM-derived embeddings instead of standardized features and smaller ML models.

Chose fine-tuned LLM representations over standardized features, imprecise smaller models, taxonomies, and rigid upstream pipelines.

Rationale: LLM embeddings provide semantic compression, performance, transfer learning, and interoperability improvements for recommendations.

“Replaced standardized features with LLM-derived representations 2. Eliminated dependencies on: 1. Imprecise smaller ML models 2. Hard-to-maintain taxonomies 3. Rigid upstream pipelines”article, stated
  1. Compression: Reduces computational complexity"

— article, stated

Use Kappa nearline inference.

Chose streaming changelog-driven embedding generation over Lambda architecture with scheduled inference jobs.

Rationale: Kappa resolves time-travel issues, lowers GPU inference cost, and avoids failed scheduled-job recovery.

“Improved system architecture due to migration from Lambda to Kappa architecture, delivering:”article, stated
“Cost-efficient GPU inference through nearline-first approach 3. Simplified maintenance by eliminating the need to monitor and recover failed scheduled inference jobs”article, stated

Use a shared two-tower LLM with prompt templates.

Chose shared base LLM plus specialized task descriptors over separate heavy models for each input type.

Rationale: This keeps parameter efficiency through weight sharing while guiding attention to job or member profile fields.

“Our fine-tuning architecture employs a shared base LLM and its tokenizer with specialized prompt templates for different input types”article, stated
“These templates act as soft task descriptors, guiding the model's attention to relevant aspects of each text type while maintaining parameter efficiency through weight sharing.”article, stated

Distill cross-encoder performance into efficient decoder-only models.

Chose offline cross-encoder distillation over serving cross-attention models directly.

Rationale: The approach recovers 50% of the performance gap while preserving two-tower efficiency.

“we implemented offline cross-encoder distillation for fine-tuning 7B decoder only models, which bridged 50% of the performance gap while maintaining the efficiency benefits”article, stated

Gotchas (what bit them)

LLM embeddings improve quality only if the serving architecture can keep features fresh.

Root cause: Job posters and members expect new jobs, profile changes, and resume updates to affect recommendations immediately.

Resolution: LinkedIn uses Kappa nearline inference from changelog streams so embeddings are created, updated, or deleted within seconds.

“Job posters expect their postings to be indexed and recommended to qualified and interested job seekers right after posting.”article, stated
“nearline inference of LLM embeddings, which ensures that job postings, member profiles, and member resume embeddings are created, updated, or deleted within seconds.”article, stated

Naive change tracking can make LLM inference too expensive at LinkedIn scale.

Root cause: Every database change could trigger embedding inference even when relevant text did not change meaningfully.

Resolution: Samza pipelines skip unchanged text, and hashing/deduplication reduce inference volume about 6x.

“Change detection: Skip inference if the text content has not changed meaningfully from the previous version. This simple optimization reduces the embedding inference cost up to 3x.”article, stated
“This intelligent change detection reduces inference volume by approximately 6x compared to naive database change tracking.”article, stated

Training 7B+ embedding models needs memory and throughput engineering.

Root cause: Long text and multi-node model training exceed simple fine-tuning setups.

Resolution: LinkedIn combines LoRA, Flash Attention 2, Liger kernels, bfloat16, gradient accumulation, checkpointing, H100 distributed training, and DeepSpeed ZeRO.

“implementing it for 7B+ parameter models required solving significant technical challenges.”article, stated
“To overcome memory constraints, we employ LoRA fine-tuning applied to Query-Key-Value matrices”article, stated

Better cross-encoder quality was too expensive for direct serving.

Root cause: Full Transformer attention between text inputs has higher computational requirements than the two-tower path.

Resolution: LinkedIn uses offline cross-encoder distillation to recover half the performance gap while keeping two-tower efficiency.

“cross-encoders demonstrated superior performance due to their computation of the full Transformer attention between text inputs, but at the cost of significantly higher computational requirements.”article, stated
“offline cross-encoder distillation for fine-tuning 7B decoder only models, which bridged 50% of the performance gap”article, stated

Training labels pull in different directions.

Root cause: Relevance labels are high quality but scarce, while engagement labels are larger-scale but noisy.

Resolution: JUDE uses relevance labels to establish semantic quality and engagement labels to align embeddings with business outcomes.

“By nature, they are scarce but high-quality labels.”article, stated
“While potentially noisy, they provide larger-scale supervision signals that reflect real-world user behavior and marketplace dynamics.”article, stated

Evaluation

LinkedIn evaluates JUDE through supervision quality, architecture experiments, loss-function engineering, two-tower versus cross-attention comparisons, latency and cost metrics, feature freshness, inference-volume reduction, and online business impact in job recommendation/search ranking models.

Metrics: +2.07% Qualified Applications · -5.13% Dismiss to Apply · +1.91% Total Job Applications · under 300ms p95 embedding inference latency · up to 3x embedding inference cost reduction from change detection · approximately 6x inference-volume reduction from hashing/deduplication · 50% of cross-encoder performance gap bridged · relevance label quality · engagement label alignment · feature freshness within seconds

4 supporting quotes
“leading to +2.07% Qualified Applications, -5.13% Dismiss to Apply, +1.91% Total Job Applications.”article, stated
“For a modern 7B LLM, latency remains under 300ms at p95 quantile, which is quite acceptable for our application”article, stated
“This simple optimization reduces the embedding inference cost up to 3x.”article, stated
“This intelligent change detection reduces inference volume by approximately 6x compared to naive database change tracking.”article, stated

Outcomes

JUDE operates at LinkedIn scale: over 1 billion registered members, tens of millions of active job postings, three embedding entity types, 7B+ LLMs, multi-node H100 training, under-300ms p95 nearline embedding inference, up to 3x cost reduction from change detection, and about 6x inference-volume reduction from hashing/deduplication.

4 supporting quotes
“The JUDE Embeddings have been ramped online, replacing the overlapping standardized features in both job recommendation and search L2 ranking models”article, stated
“leading to +2.07% Qualified Applications, -5.13% Dismiss to Apply, +1.91% Total Job Applications.”article, stated
“This was our highest metric improvement from a single model change the team supporting talent initiatives has observed during that half year.”article, stated
“This expansion leverages recent advances in LLMs with long context capabilities, complementing our current profile and resume text representations with rich behavioral signals.”article, stated