Splade-Code
Collection
Learned Sparse Retrieval Models for Code β’ 3 items β’ Updated β’ 6
How to use naver/splade-code-8B with sentence-transformers:
from sentence_transformers import SparseEncoder
model = SparseEncoder("naver/splade-code-8B", trust_remote_code=True)
queries = ["Which planet is known as the Red Planet?"]
documents = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)How to use naver/splade-code-8B with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("feature-extraction", model="naver/splade-code-8B", trust_remote_code=True) # pip install -U transformers accelerate
# Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("naver/splade-code-8B", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("naver/splade-code-8B", trust_remote_code=True, device_map="auto")SPLADE-Code-8B is a sparse retrieval model designed for code retrieval tasks.
Install Sentence Transformers:
pip install sentence_transformers
from sentence_transformers import SparseEncoder
model = SparseEncoder("naver/splade-code-8B", trust_remote_code=True)
queries = [
"SELECT *\nFROM Student\nWHERE Age = (\nSELECT MAX(Age)\nFROM Student\nWHERE Group = 'specific_group'\n)\nAND Group = 'specific_group';"
]
query_embeddings = model.encode(queries)
print(query_embeddings.shape)
# torch.Size([1, 151936])
sparsity = model.sparsity(query_embeddings)
print(sparsity)
# {'active_dims': 1120.0, 'sparsity_ratio': 0.9926284751474305}
decoded = model.decode(query_embeddings, top_k=10)
print(decoded)
# [[
# ('Δ group', 2.34375),
# ('Δ oldest', 2.28125),
# ('Δ age', 2.25),
# ('_group', 2.25),
# ('Δ Group', 2.171875),
# ('Δ Age', 2.109375),
# ('Δ MAX', 2.0625),
# ('Δ Student', 2.046875),
# ('Δ specific', 2.03125),
# ('Δ student', 2.0),
# ]]
pip install transformers
from transformers import AutoModelForCausalLM, AutoModel
import os
import torch
splade = AutoModelForCausalLM.from_pretrained("naver/splade-code-8B", trust_remote_code=True)
device = (torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu"))
splade.to(device)
splade.eval()
queries = ["SELECT *\nFROM Student\nWHERE Age = (\nSELECT MAX(Age)\nFROM Student\nWHERE Group = 'specific_group'\n)\nAND Group = 'specific_group';"]
bow_dict = splade.encode(queries, prompt_type="query", top_k_q=10, return_dict=True, print_dict=True)
+--------------------------------------------------------------------+
| TOP ACTIVATED WORDS |
+--------------------------------------------------------------------+
* INPUT: SELECT *
FROM Student
WHERE Age = (
SELECT MAX(Age)
FROM Student
WHERE Group = 'specific_group'
)
AND Group = 'specific_group';
Δ group | ββββββββββββββββββββ 2.34
Δ oldest | βββββββββββββββββββ 2.28
Δ age | βββββββββββββββββββ 2.25
_group | βββββββββββββββββββ 2.25
Δ Group | ββββββββββββββββββ 2.17
Δ Age | ββββββββββββββββββ 2.11
Δ MAX | βββββββββββββββββ 2.06
Δ Student | βββββββββββββββββ 2.05
Δ specific | βββββββββββββββββ 2.03
Δ student | βββββββββββββββββ 2.00
from sentence_transformers import SparseEncoder model = SparseEncoder("naver/splade-code-8B", trust_remote_code=True) queries = ["Which planet is known as the Red Planet?"] documents = [ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", ] query_embeddings = model.encode_query(queries) document_embeddings = model.encode_document(documents) similarities = model.similarity(query_embeddings, document_embeddings) print(similarities)