This is a fine-tuned version of
google/gemma-3-300m optimized for
academic and scientific literature search. The model has been trained using contrastive learning with hard negative mining, specifically curated for academic search scenarios.
The model was trained on
LEAD (Liner Embedding Academic Dataset), a combination of ~55,560 samples tailored for academic search:
This model supports
Matryoshka Representation Learning. You can truncate embeddings to smaller dimensions (512, 256, 128) for faster computation and reduced storage.
1# Full dimension (768)
2full_embedding = embeddings[:, :768]
3
4# MRL dimensions
5embedding_512 = embeddings[:, :512]
6embedding_256 = embeddings[:, :256]
7embedding_128 = embeddings[:, :128]
1import torch
2from transformers import AutoModel, AutoTokenizer
3
4model_path = "LinerAI/embeddinggemma-300m-academic"
5tokenizer = AutoTokenizer.from_pretrained(model_path)
6model = AutoModel.from_pretrained(model_path, torch_dtype=torch.bfloat16)
7model.eval()
8
9# For queries
10def encode_query(text):
11 input_text = f"task: search result | query: {text}"
12 inputs = tokenizer(input_text, return_tensors="pt", max_length=2048, truncation=True)
13 with torch.no_grad():
14 outputs = model(**inputs)
15 embeddings = outputs.last_hidden_state.mean(dim=1) # Mean pooling
16 embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)
17 return embeddings
18
19# For passages
20def encode_passage(text):
21 input_text = f"title: none | text: {text}"
22 inputs = tokenizer(input_text, return_tensors="pt", max_length=2048, truncation=True)
23 with torch.no_grad():
24 outputs = model(**inputs)
25 embeddings = outputs.last_hidden_state.mean(dim=1) # Mean pooling
26 embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)
27 return embeddings
28
29# Example: Academic search
30query = "transformer models for protein structure prediction"
31abstract = "We introduce AlphaFold, a deep learning system that predicts protein structures..."
32
33query_emb = encode_query(query)
34passage_emb = encode_passage(abstract)
35
36similarity = torch.nn.functional.cosine_similarity(query_emb, passage_emb)
37print(f"Similarity: {similarity.item():.4f}")
This model is released under the
Gemma license. Please review Google's usage license before using this model.