tencent / Youtu-Embedding

huggingface.co
Total runs: 552
24-hour runs: 0
7-day runs: -62
30-day runs: -1.7K
Model's Last Updated: December 20 2025
sentence-similarity

Introduction of Youtu-Embedding

Model Details of Youtu-Embedding

🎯 Introduction

Youtu-Embedding is a state-of-the-art, general-purpose text embedding model developed by Tencent Youtu Lab. It delivers exceptional performance across a wide range of natural language processing tasks, including Information Retrieval (IR), Semantic Textual Similarity (STS), Clustering, Reranking, and Classification.

  • Top-Ranked Performance : Achieved the #1 score of 77.46 on the authoritative CMTEB (Chinese Massive Text Embedding Benchmark) as of September 2025, demonstrating its powerful and robust text representation capabilities.

  • Innovative Training Framework : Features a Collaborative-Discriminative Fine-tuning Framework designed to resolve the "negative transfer" problem in multi-task learning. This is accomplished through a unified data format, task-differentiated loss functions, and a dynamic single-task sampling mechanism.

Note : You can easily adapt and fine-tune the model on your own datasets for domain-specific tasks. For implementation details, please refer to the training code .

🤗 Model Download
Model Name Parameters Dimensions Sequence Length Download
Youtu-Embedding-V1 2B 2048 8K Model
🚀 Usage
1. Using transformers

📦 Installation

pip install transformers==4.51.3 liger_kernel==0.5.4

⚙️ Usage

import torch
import numpy as np
from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer


class LLMEmbeddingModel():

    def __init__(self, 
                model_name_or_path, 
                batch_size=128, 
                max_length=1024, 
                gpu_id=0):
        self.model = AutoModel.from_pretrained(model_name_or_path, trust_remote_code=True)
        self.tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, padding_side="right")

        self.device = torch.device(f"cuda:{gpu_id}")
        self.model.to(self.device).eval()

        self.max_length = max_length
        self.batch_size = batch_size

        query_instruction = "Given a search query, retrieve passages that answer the question"
        if query_instruction:
            self.query_instruction = f"Instruction: {query_instruction} \nQuery: "
        else:
            self.query_instruction = "Query: "

        self.doc_instruction = ""
        print(f"query instruction: {[self.query_instruction]}\ndoc instruction: {[self.doc_instruction]}")

    def mean_pooling(self, hidden_state, attention_mask):
        s = torch.sum(hidden_state * attention_mask.unsqueeze(-1).float(), dim=1)
        d = attention_mask.sum(dim=1, keepdim=True).float()
        embedding = s / d
        return embedding
    
    @torch.no_grad()
    def encode(self, sentences_batch, instruction):
        inputs = self.tokenizer(
            sentences_batch,
            padding=True,
            truncation=True,
            return_tensors="pt",
            max_length=self.max_length,
            add_special_tokens=True,
        ).to(self.device)

        with torch.no_grad():
            outputs = self.model(**inputs)
            last_hidden_state = outputs[0]

            instruction_tokens = self.tokenizer(
                instruction,
                padding=False,
                truncation=True,
                max_length=self.max_length,
                add_special_tokens=True,
            )["input_ids"]
            if len(np.shape(np.array(instruction_tokens))) == 1:
                inputs["attention_mask"][:, :len(instruction_tokens)] = 0
            else:
                instruction_length = [len(item) for item in instruction_tokens]
                assert len(instruction) == len(sentences_batch)
                for idx in range(len(instruction_length)):
                    inputs["attention_mask"][idx, :instruction_length[idx]] = 0

            embeddings = self.mean_pooling(last_hidden_state, inputs["attention_mask"])
            embeddings = torch.nn.functional.normalize(embeddings, dim=-1)
        return embeddings

    def encode_queries(self, queries):
        queries = queries if isinstance(queries, list) else [queries]
        queries = [f"{self.query_instruction}{query}" for query in queries]
        return self.encode(queries, self.query_instruction)

    def encode_passages(self, passages):
        passages = passages if isinstance(passages, list) else [passages]
        passages = [f"{self.doc_instruction}{passage}" for passage in passages]
        return self.encode(passages, self.doc_instruction)

    def compute_similarity_for_vectors(self, q_reps, p_reps):
        if len(p_reps.size()) == 2:
            return torch.matmul(q_reps, p_reps.transpose(0, 1))
        return torch.matmul(q_reps, p_reps.transpose(-2, -1))

    def compute_similarity(self, queries, passages):
        q_reps = self.encode_queries(queries)
        p_reps = self.encode_passages(passages)
        scores = self.compute_similarity_for_vectors(q_reps, p_reps)
        scores = scores.detach().cpu().tolist()
        return scores


queries = ["What's the weather like?"]
passages = [
    'The weather is lovely today.',
    "It's so sunny outside!",
    'He drove to the stadium.'
]

model_name_or_path = "tencent/Youtu-Embedding"
model = LLMEmbeddingModel(model_name_or_path)
scores = model.compute_similarity(queries, passages)
print(f"scores: {scores}")
2. Using sentence-transformers

📦 Installation

pip install sentence-transformers==5.1.0

⚙️ Usage

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("tencent/Youtu-Embedding", trust_remote_code=True)
queries = ["What's the weather like?"]
passages = [
    'The weather is lovely today.',
    "It's so sunny outside!",
    'He drove to the stadium.'
]
queries_embeddings = model.encode_query(queries)
passages_embeddings = model.encode_document(passages)

similarities = model.similarity(queries_embeddings, passages_embeddings)
print(similarities)
3. Using LangChain 🦜

Easily integrate the model into your LangChain applications, such as RAG pipelines.

📦 Installation

pip install langchain==0.3.27 langchain-community==0.3.29 langchain-huggingface==0.3.1 sentence-transformers==5.1.0 faiss-cpu==1.11.0

⚙️ Usage

import torch
from langchain.docstore.document import Document
from langchain_community.vectorstores import FAISS
from langchain_huggingface.embeddings import HuggingFaceEmbeddings

model_name_or_path = "tencent/Youtu-Embedding"
device = "cuda" if torch.cuda.is_available() else "cpu"

model_kwargs = {
    'trust_remote_code': True,
    'device': device
}

embedder = HuggingFaceEmbeddings(
    model_name=model_name_or_path,
    model_kwargs=model_kwargs,
)

query_instruction = "Instruction: Given a search query, retrieve passages that answer the question \nQuery: "
doc_instruction = ""

data = [
    "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.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]

documents = [Document(page_content=text, metadata={"id": i}) for i, text in enumerate(data)]
vector_store = FAISS.from_documents(documents, embedder, distance_strategy="MAX_INNER_PRODUCT")

query = "Which planet is known as the Red Planet?"
instructed_query = query_instruction + query
results = vector_store.similarity_search_with_score(instructed_query, k=3)

print(f"Original Query: {query}\n")
print("Results:")
for doc, score in results:
    print(f"- Text: {doc.page_content} (Score: {score:.4f})")
4. Using LlamaIndex 🦙

This is perfect for integrating the model into your LlamaIndex search and retrieval systems.

📦 Installation

pip install llama-index==0.14.2 llama-index-embeddings-huggingface==0.6.1 sentence-transformers==5.1.0 llama-index-vector-stores-faiss==0.5.1

⚙️ Usage

import faiss
import torch
from llama_index.core.schema import TextNode
from llama_index.core.vector_stores import VectorStoreQuery
from llama_index.vector_stores.faiss import FaissVectorStore
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

model_name_or_path = "tencent/Youtu-Embedding"
device = "cuda" if torch.cuda.is_available() else "cpu"

embeddings = HuggingFaceEmbedding(
    model_name=model_name_or_path,
    trust_remote_code=True,
    device=device,
    query_instruction="Instruction: Given a search query, retrieve passages that answer the question \nQuery: ",  
    text_instruction=""
)

data = [
    "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.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]

nodes = [TextNode(id_=str(i), text=text) for i, text in enumerate(data)]

for node in nodes:
    node.embedding = embeddings.get_text_embedding(node.get_content())

embed_dim = len(nodes[0].embedding)
store = FaissVectorStore(faiss_index=faiss.IndexFlatIP(embed_dim))
store.add(nodes)

query = "Which planet is known as the Red Planet?"
query_embedding = embeddings.get_query_embedding(query)

results = store.query(
    VectorStoreQuery(query_embedding=query_embedding, similarity_top_k=3)
)

print(f"Query: {query}\n")
print("Results:")
for idx, score in zip(results.ids, results.similarities):
    print(f"- Text: {data[int(idx)]} (Score: {score:.4f})")
📊 CMTEB
Model Param. Mean(Task) Mean(Type) Class. Clust. Pair Class. Rerank. Retr. STS
bge-multilingual-gemma2 9B 67.64 68.52 75.31 59.30 79.30 68.28 73.73 55.19
ritrieve_zh_v1 326M 72.71 73.85 76.88 66.50 85.98 72.86 76.97 63.92
Qwen3-Embedding-4B 4B 72.27 73.51 75.46 77.89 83.34 66.05 77.03 61.26
Qwen3-Embedding-8B 8B 73.84 75.00 76.97 80.08 84.23 66.99 78.21 63.53
Conan-embedding-v2 1.4B 74.24 75.99 76.47 68.84 92.44 74.41 78.31 65.48
Seed1.6-embedding - 75.63 76.68 77.98 73.11 88.71 71.65 79.69 68.94
QZhou-Embedding 7B 76.99 78.58 79.99 70.91 95.07 74.85 78.80 71.89
Youtu-Embedding-V1 2B 77.60 78.85 78.04 79.67 89.69 73.85 80.95 70.91

Note : Comparative scores are from the MTEB leaderboard , recorded on September 28, 2025.

🎉 Citation
@misc{zhang2025codiemb,
  title={CoDiEmb: A Collaborative yet Distinct Framework for Unified Representation Learning in Information Retrieval and Semantic Textual Similarity},
  author={Zhang, Bowen and Song, Zixin and Chen, Chunquan and Zhang, Qian-Wen and Yin, Di and Sun, Xing},
  year={2025},
  eprint={2508.11442},
  archivePrefix={arXiv},
  url={https://arxiv.org/abs/2508.11442},
}

Runs of tencent Youtu-Embedding on huggingface.co

552
Total runs
0
24-hour runs
31
3-day runs
-62
7-day runs
-1.7K
30-day runs

More Information About Youtu-Embedding huggingface.co Model

More Youtu-Embedding license Visit here:

https://choosealicense.com/licenses/other

Youtu-Embedding huggingface.co

Youtu-Embedding huggingface.co is an AI model on huggingface.co that provides Youtu-Embedding's model effect (), which can be used instantly with this tencent Youtu-Embedding model. huggingface.co supports a free trial of the Youtu-Embedding model, and also provides paid use of the Youtu-Embedding. Support call Youtu-Embedding model through api, including Node.js, Python, http.

Youtu-Embedding huggingface.co Url

https://huggingface.co/tencent/Youtu-Embedding

tencent Youtu-Embedding online free

Youtu-Embedding huggingface.co is an online trial and call api platform, which integrates Youtu-Embedding's modeling effects, including api services, and provides a free online trial of Youtu-Embedding, you can try Youtu-Embedding online for free by clicking the link below.

tencent Youtu-Embedding online free url in huggingface.co:

https://huggingface.co/tencent/Youtu-Embedding

Youtu-Embedding install

Youtu-Embedding is an open source model from GitHub that offers a free installation service, and any user can find Youtu-Embedding on GitHub to install. At the same time, huggingface.co provides the effect of Youtu-Embedding install, users can directly use Youtu-Embedding installed effect in huggingface.co for debugging and trial. It also supports api for free installation.

Youtu-Embedding install url in huggingface.co:

https://huggingface.co/tencent/Youtu-Embedding

Url of Youtu-Embedding

Youtu-Embedding huggingface.co Url

Provider of Youtu-Embedding huggingface.co

tencent
ORGANIZATIONS

Other API from tencent

huggingface.co

Total runs: 649.6K
Run Growth: 88.0K
Growth Rate: 13.55%
Updated:August 29 2026
huggingface.co

Total runs: 98.7K
Run Growth: -31.0K
Growth Rate: -31.40%
Updated:October 17 2025
huggingface.co

Total runs: 90.7K
Run Growth: -582.4K
Growth Rate: -642.43%
Updated:September 12 2025
huggingface.co

Total runs: 55.0K
Run Growth: -3.6K
Growth Rate: -6.51%
Updated:October 17 2025
huggingface.co

Total runs: 26.6K
Run Growth: -4.9K
Growth Rate: -18.60%
Updated:May 26 2026
huggingface.co

Total runs: 13.7K
Run Growth: 90
Growth Rate: 0.65%
Updated:May 26 2026
huggingface.co

Total runs: 12.5K
Run Growth: -360
Growth Rate: -2.88%
Updated:July 30 2025
huggingface.co

Total runs: 9.2K
Run Growth: 2.4K
Growth Rate: 25.92%
Updated:October 17 2025
huggingface.co

Total runs: 7.3K
Run Growth: -1.1K
Growth Rate: -14.82%
Updated:January 01 2026
huggingface.co

Total runs: 3.5K
Run Growth: 948
Growth Rate: 27.45%
Updated:May 21 2026
huggingface.co

Total runs: 3.0K
Run Growth: -174
Growth Rate: -5.86%
Updated:December 30 2025
huggingface.co

Total runs: 2.9K
Run Growth: 115
Growth Rate: 3.95%
Updated:February 24 2026
huggingface.co

Total runs: 2.4K
Run Growth: 2.4K
Growth Rate: 98.74%
Updated:September 10 2026
huggingface.co

Total runs: 1.7K
Run Growth: 1.7K
Growth Rate: 98.23%
Updated:September 09 2026
huggingface.co

Total runs: 1.2K
Run Growth: -344
Growth Rate: -28.41%
Updated:October 17 2025
huggingface.co

Total runs: 1.1K
Run Growth: 1.1K
Growth Rate: 100.00%
Updated:September 07 2026
huggingface.co

Total runs: 982
Run Growth: -3.5K
Growth Rate: -352.95%
Updated:June 01 2026
huggingface.co

Total runs: 756
Run Growth: -182
Growth Rate: -24.07%
Updated:March 06 2025
huggingface.co

Total runs: 645
Run Growth: 645
Growth Rate: 100.00%
Updated:September 07 2026
huggingface.co

Total runs: 372
Run Growth: -3.0K
Growth Rate: -804.03%
Updated:September 15 2025
huggingface.co

Total runs: 323
Run Growth: -55
Growth Rate: -17.03%
Updated:March 06 2026
huggingface.co

Total runs: 306
Run Growth: -208
Growth Rate: -69.57%
Updated:March 11 2026
huggingface.co

Total runs: 182
Run Growth: 153
Growth Rate: 83.61%
Updated:February 04 2026