Key facts
| Embeddings | plugsky-embed-multilingual maps languages into a shared vector space (live) |
| Pipeline | Index once → cross-language retrieval → answer in the user's language |
| Metadata | Locale, script and region stored per chunk |
| Generation | Cited answers with JSON mode on /v1/chat/completions (live) |
| Models | 30+ models behind one endpoint, choose per language |
| Evaluation | Per-language question sets with expected source passages |
| Residency | Region-locked planes, VPC, on-prem and air-gapped options |
| Free tier | plugsky-micro and plugsky-lite on the free plan, no card required |
TL;DR
- Prefer one multilingual vector space over parallel indexes per language.
- Store locale and script metadata so retrieval can prefer local content.
- Normalise scripts and diacritics before embedding to improve match rates.
- Answer in the user's language, cite the source language, and keep both visible.
- Evaluate retrieval and answers separately for every supported language.
How it works, step by step
- Collect representative content and questions for each language, and label expected source passages.
- Chunk documents by structure and tag each chunk with locale, script and region metadata.
- Embed everything with plugsky-embed-multilingual into a single collection.
- Build retrieval that embeds the question as-is, applies locale preferences when available, and falls back across languages.
- Generate answers instructed to respond in the user's language while citing original-language passages.
- Return structured output with the answer, citations and the detected languages involved.
- Measure recall and groundedness per language, and add code-switched queries to the test set.
Try it yourself
Open the best model for RAG selector →
One vector space, many languages
Older multilingual search ran parallel indexes and translated queries between them. Multilingual embeddings remove that duplication: documents and questions in different languages land close together when they mean the same thing. You index once, and retrieval works across the whole corpus regardless of the language of the question.
On Plugsky, plugsky-embed-multilingual is live on the /v1/embeddings endpoint, and generation runs on /v1/chat/completions. Documents, filters and permissions stay in your infrastructure, which matters when content is market-specific or regulated.
Chunking and metadata for locales
Shared vector spaces do not remove the need for locale awareness. Content that exists in several languages should carry locale metadata so retrieval can prefer the user's variant when it exists, and fall back across languages when it does not. Without that preference, a user may receive an accurate but off-market answer.
- Locale tags: language, region and script per chunk, plus document version.
- Script normalisation: handle diacritics, ligatures and mixed-script input before embedding.
- Terminology: keep approved glossaries per language and pass them into the prompt.
- Currency and dates: format in tools, not in generated prose.
Evaluating cross-language retrieval
Evaluation must be per language, with questions and expected source passages written by native speakers. Measure cross-language recall — can a question in one language retrieve the right passage in another — alongside groundedness and citation accuracy in the answer's language. Aggregate scores hide exactly the failures that multilingual deployments suffer.
Include code-switching queries and thin-locale cases where no local content exists, and define the fallback behaviour explicitly: answer from the nearest language, state which language the source is in, and cite it. Route generation per language based on measured quality, since model strengths differ across languages. Where data must stay in-market, deploy in a region-locked plane or on-prem with Plugsky, using the same pipeline.
Honest comparison
| Capability | Multilingual RAG | Per-language indexes | Translate-then-search |
|---|---|---|---|
| Index footprint | One multilingual collection | One index per language | Translation pipeline |
| Cross-language recall | Native in one vector space | Limited to overlap | Depends on translation |
| Locale preference | Metadata filters per market | Separate indexes | Manual routing |
| Answer language | User's language with cited sources | Per-index language | Post-translation |
| Evaluation | Per-language scoring | Fragmented | Rarely measured |
Frequently asked questions
Can a question in Arabic retrieve an English document?
Yes. plugsky-embed-multilingual places equivalent meanings close together across languages, so retrieval works directly without translating the query first.
Should we still translate queries?
Usually not necessary, though a fallback translation path can help for thin locales or specialised terminology that the embedding model handles less well.
How do we prefer local content?
Store locale and region metadata per chunk, then boost or filter by market when equivalent content exists. Fall back across languages only when local content is missing.
How should answers handle mixed languages?
Answer in the user's language and cite sources in their original language, showing enough of the source to be verifiable. Keep formatting in your UI, not in the model output.
What about Arabic text normalisation?
Normalise diacritics and common orthographic variants before embedding, and keep the original text for citation display. This improves recall without changing the source.
How do we evaluate multilingual quality?
Build per-language question sets with known source passages, score recall and groundedness separately, and include code-switched queries in the suite.
Can it run in a specific region?
Yes. Plugsky supports region-locked cloud planes plus VPC, on-prem and air-gapped deployment, so content can stay in the market it serves.