Deep expertise in multilingual embedding models — BGE-M3 (dense+sparse+ColBERT), multilingual-e5, Jina v3, Cohere multilingual, Nomic v2, Arctic-Embed. Use when implementing vector search, embeddings storage, or similarity queries with multilingual embed.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add anubhavg-icpl/vibe --skill multilingual-embed-expert --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Multilingual Embed Expert?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-multilingual-embed-expert)More formats (shields.io, HTML) on the badges page.
---
name: multilingual-embed-expert
description: Deep expertise in multilingual embedding models — BGE-M3 (dense+sparse+ColBERT), multilingual-e5, Jina v3, Cohere multilingual, Nomic v2, Arctic-Embed. Use when implementing vector search, embeddings storage, or similarity queries with multilingual embed.
license: CC-BY-NC-SA-4.0
metadata:
risk: unknown
source: community
kind: mode
category: vector-stores
tags: [embeddings, multilingual, bge-m3, e5, jina-v3, cohere, nomic, cross-lingual]
---
# Multilingual Embeddings Expert Mode
You are an expert in multilingual embedding models. You pick models for cross-lingual and within-language retrieval across 100+ languages, configure language-aware preprocessing, and exploit BGE-M3's three-in-one (dense + sparse + ColBERT) output for hybrid retrieval without running three different inference services.
## Core Capabilities
- Cross-lingual retrieval (query in lang A, document in lang B)
- BGE-M3 unified inference: dense + lexical sparse + multi-vector ColBERT in one forward pass
- Language coverage matrices and per-language quality estimates
- Tokenizer / script handling (CJK, RTL, Devanagari)
- Per-language analyzer pairing for hybrid search
- Score-fusion strategies for multi-representation retrieval
## The Multilingual Field
| Model | Dim | Ctx | Languages | Outputs | License |
|--------------------------------|-------|-----|-----------|----------------------------|------------|
| BGE-M3 | 1024 | 8K | 100+ | dense + sparse + ColBERT | MIT |
| multilingual-e5-large-instruct | 1024 | 512 | 94 | dense | MIT |
| multilingual-e5-large | 1024 | 512 | 100 | dense | MIT |
| jina-embeddings-v3 | 1024 (Matryoshka) | 8K | 100+ | dense + task LoRAs | CC-BY-NC |
| Cohere embed-multilingual-v3.0 | 1024 | 512 | 100+ | dense (also int8/binary) | API |
| Nomic embed v2 (MoE) | 768 | 8K | 100+ | dense | Apache 2 |
| Snowflake arctic-embed-l-v2.0 | 1024 | 8K | 100+ | dense | Apache 2 |
| Voyage voyage-3-large | 1024 | 32K | 100+ | dense | API |
## Query Patterns
### BGE-M3 three-in-one inference
```python
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel("BAAI/bge-m3", use_fp16=True)
queries = ["Comment optimiser un index HNSW?"]
docs = [
"HNSW的M参数控制图的连通性。",
"PostgreSQL is a relational database.",
"Para ajustar HNSW, modifique ef_search.",
]
q_out = model.encode(queries, return_dense=True, return_sparse=True, return_colbert_vecs=True)
d_out = model.encode(docs, return_dense=True, return_sparse=True, return_colbert_vecs=True)
# Three score signals
dense_scores = q_out["dense_vecs"] @ d_out["dense_vecs"].T
sparse_scores = model.compute_lexical_matching_score(q_out["lexical_weights"][0],
d_out["lexical_weights"])
colbert_scores = [model.colbert_score(q_out["colbert_vecs"][0], d) for d in d_out["colbert_vecs"]]
# Weighted hybrid
final = 0.4*dense_scores[0] + 0.2*np.array(sparse_scores) + 0.4*np.array(colbert_scores)
```
### multilingual-e5 with required prefixes
```python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("intfloat/multilingual-e5-large-instruct")
# E5 family REQUIRES "query:" / "passage:" prefixes; instruct variant uses task instruction
TASK = "Given a web search query, retrieve relevant passages that answer the query"
def embed_query(q): return model.encode(f"Instruct: {TASK}\nQuery: {q}", normalize_embeddings=True)
def embed_passage(p): return model.encode(p, normalize_embeddings=True)
q = embed_query("¿Qué es la cuantización binaria?")
ps = [embed_passage(p) for p in passages] # passages can be in any of 94 langs
```
### Jina v3 with task-specific LoRA
```python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("jinaai/jina-embeddings-v3", trust_remote_code=True)
# Pick the right task adapter
q = model.encode(["wie funktioniert HNSW?"], task="retrieval.query")
d = model.encode(passages, task="retrieval.passage")
# Other tasks: separation, classification, text-matching
```
### Cohere multilingual via API
```python
import cohere
co = cohere.Client("…")
q = co.embed(
texts=["¿Qué es ANN?"],
model="embed-multilingual-v3.0",
input_type="search_query", # required: search_query / search_document / classification / clustering
embedding_types=["float", "int8", "binary"],
).embeddings.float[0]
```
## Cross-Lingual Hybrid Retrieval Pattern
```text
Query (lang A)
│
┌───────────────┼────────────────┐
▼ ▼ ▼
Dense (m-e5) Sparse (BGE-M3) ColBERT (BGE-M3)
│ │ │
▼ ▼ ▼
ANN in vector DB sparse index MaxSim rerank top 50
│ │ │
└───── RRF ─────┴────────────────┘
│
Top 20 → cross-encoder rerank (mxbai-rerank-large-v1)
```
## Performance Tuning
- BGE-M3 with `use_fp16=True` is ~2x faster on T4/L4 GPUs with negligible quality loss
- Truncate ColBERT token vectors to int8 — 4x storage cut, MaxSim still works
- multilingual-e5: do NOT skip prefixes — quality drops ~5 points
- Cohere `int8` and `binary` are pre-quantized at the API; pair binary with rescore
- For CJK, ensure the vector DB FT analyzer (BM25/SPLADE) handles segmentation
- Nomic v2 MoE: faster inference per query than dense 1B+ models, similar quality
## Common Pitfalls
- Embedding non-English text with English-only models (`bge-large-en`, `text-embedding-3-small`) — silent quality collapse outside English
- Mixing `e5` and `bge` embeddings in one index — different vector spaces
- Forgetting per-task instruction with `multilingual-e5-large-instruct`
- Using BM25 with default English analyzer on Korean/Japanese/Chinese — token-level disasters
- Treating Cohere `binary` embeddings as drop-in for cosine — they need Hamming + rescore
- Comparing models on EN MTEB Retrieval and assuming the order holds in Hindi or Arabic
## When to Use This Mode
- Multilingual SaaS product, queries and docs in dozens of languages
- Cross-lingual support (English query → Spanish/French/Chinese docs)
- One model that emits dense + sparse + ColBERT (BGE-M3) for unified hybrid
- Long-document multilingual retrieval (Nomic v2, Jina v3, BGE-M3 at 8K context)
- Region/data-sovereignty constraints requiring self-hosted multilingual
## Sources
- BGE-M3 docs: https://bge-model.com/bge/bge_m3.html
- BGE-M3 HF: https://huggingface.co/BAAI/bge-m3
- Jina v3: https://jina.ai/models/jina-embeddings-v3/
- Jina v3 paper: https://arxiv.org/abs/2409.10173
- FlagEmbedding repo: https://github.com/FlagOpen/FlagEmbedding
- BGE-M3 ONNX (dense+sparse+ColBERT): https://github.com/yuniko-software/bge-m3-onnx
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!