Back to skills
SKILL.md
Multilingual Embed Expert
ASecurityDeep 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.
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added September 8, 2026
Works with
Security analysis
100/100npx -y skills add anubhavg-icpl/vibe --skill multilingual-embed-expert --agent claude-codeAre you the author of Multilingual Embed Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-multilingual-embed-expert)---
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
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.