--- tags: - sentence_embedding - feature_extraction - sentence-transformers - transformers - transformers.js library_name: sentence-transformers license: apache-2.0 language: - de - en ---

The crispy sentence embedding family from Mixedbread.
Mixedbread x deepset

# mixedbread-ai/deepset-mxbai-embed-de-large-v1 This model is a powerful open-source German/English embedding model developed by [Mixedbread](https://mixedbread.ai) in collaboration with [deepset](https://deepset.ai). It's built upon [intfloat/multilingual-e5-large](https://huggingface.co/intfloat/multilingual-e5-large) and trained using the [AnglE loss](https://arxiv.org/abs/2309.12871). Read more details in our [blog post](https://www.mixedbread.ai/blog/deepset-mxbai-embed-de-large-v1). **In a bread loaf**: - State-of-the-art performance - Supports both [binary quantization and Matryoshka Representation Learning (MRL)](#binary-quantization-and-matryoshka). - Fine-tuned on 30+ million pairs of high-quality German data - Optimized for retrieval tasks - Supported Langauges: German and English. - Requires a prompt: `query: {query}` for the query and `passage: {doc}` for the document ## Performance On the NDCG@10 metric, our model achieves an average performance of 51.7, setting a new standard for open-source German embedding models: | Model | Avg. Performance (NDCG@10) | Binary Support | MRL Support | |-------|---------------------------|----------------|-------------| | **deepset-mxbai-embed-de-large-v1** | **51.7** | ✅ | ✅ | | multilingual-e5-large | 50.5 | ❌ | ❌ | | jina-embeddings-v2-base-de | 50.0 | ✅ | ❌ | |Closed Source Models| | | | |Cohere Multilingual v3| *52.4* |✅|-| In a case study with a legal data client, our model outperformed domain-specific alternatives: | Model | Avg. Performance (MAP@10) | |-------|---------------------------| | **deepset-mxbai-embed-de-large-v1** | **90.25** | | voyage-law-2 | 84.80 | ## Binary Quantization and Matryoshka Our model supports both [binary quantization](https://www.mixedbread.ai/blog/binary-quantization) and [Matryoshka Representation Learning (MRL)](https://www.mixedbread.ai/blog/mxbai-embed-2d-large-v1), allowing for significant efficiency gains: - Binary quantization: Retains 91.8% of performance while increasing efficiency by a factor of 32 - MRL: A 25% reduction in vector size still leaves 97.5% of model performance - At 512 dimensions, over 93% of model performance remains while cutting embedding sizes in half These optimizations can lead to substantial reductions in infrastructure costs for cloud computing and vector databases. Read more [here](https://www.mixedbread.ai/blog/binary-mrl). ## Quickstart Here are several ways to produce German sentence embeddings using our model. Note that you need to provide the prompt: `query: {query}` for the query and `passage: {doc}` for the document.
Mixedbread API ```bash pip install -U mixedbread-ai ``` ```python import { MixedbreadAIClient } from "@mixedbread-ai/sdk"; # 1. Create Client const mxbai = new MixedbreadAIClient({ apiKey: "YOUR_API_KEY" }); # 2. Encode query = 'query: Warum sollte man biologisches Brot kaufen?' docs = [ query, "passage: In unserer Bäckerei bieten wir auch glutenfreies Brot an, das für Menschen mit Zöliakie geeignet ist.", "passage: Kuchen und Gebäck sind ebenfalls Teil unseres Angebots, wobei wir auf höchste Qualität und Frische achten.", "passage: Wir haben auch eine Auswahl an herzhaften Snacks und Sandwiches, die perfekt für die Mittagspause sind." "passage: Biologisches Brot wird aus natürlichen Zutaten hergestellt und enthält keine künstlichen Zusatzstoffe. Es ist gesünder und umweltfreundlicher.", "passage: Unsere Bäckerei bietet eine Vielzahl von Brotsorten an, darunter auch biologisches Brot. Es schmeckt besser und ist frei von chemischen Konservierungsstoffen.", "passage: Kunden bevorzugen zunehmend biologisches Brot, da es nicht nur gut für die Gesundheit ist, sondern auch einen positiven Beitrag zur Umwelt leistet." ] const res = await mxbai.embeddings({ model: 'mixedbread-ai/deepset-mxbai-embed-de-large-v1', input: docs, normalized: true, encoding_format: 'float' # or 'binary' for binary embeddings }) console.log(res.data[0].embedding) ``` [API Reference](https://www.mixedbread.ai/api-reference)
Haystack ```bash pip install -U haystack-ai mixedbread-ai-haystack ``` ```python from haystack.components.embedders import SentenceTransformersTextEmbedder, SentenceTransformersDocumentEmbedder text_embedder = SentenceTransformersTextEmbedder(model="mixedbread-ai/deepset-mxbai-embed-de-large-v1") document_embedder = SentenceTransformersDocumentEmbedder(model="mixedbread-ai/deepset-mxbai-embed-de-large-v1") # Or use the Mixedbread API with binary embeddings from mixedbread_ai_haystack import MixedbreadAITextEmbedder, MixedbreadAIDocumentEmbedder from mixedbread_ai import EncodingFormat text_embedder = MixedbreadAITextEmbedder( model="mixedbread-ai/deepset-mxbai-embed-de-large-v1", encoding_format=EncodingFormat.BINARY) document_embedder = MixedbreadAIDocumentEmbedder(model="mixedbread-ai/deepset-mxbai-embed-de-large-v1", encoding_format=EncodingFormat.BINARY) ```
angle-emb ```bash pip install -U angle-emb ``` ```python from angle_emb import AnglE from angle_emb.utils import cosine_similarity # 1. Specify preferred dimensions dimensions = 1024 # 2. Load model and set pooling strategy to avg model = AnglE.from_pretrained( "mixedbread-ai/deepset-mxbai-embed-de-large-v1", pooling_strategy='avg').cuda() query = 'query: Warum sollte man biologisches Brot kaufen?' docs = [ query, "passage: In unserer Bäckerei bieten wir auch glutenfreies Brot an, das für Menschen mit Zöliakie geeignet ist.", "passage: Kuchen und Gebäck sind ebenfalls Teil unseres Angebots, wobei wir auf höchste Qualität und Frische achten.", "passage: Wir haben auch eine Auswahl an herzhaften Snacks und Sandwiches, die perfekt für die Mittagspause sind." "passage: Biologisches Brot wird aus natürlichen Zutaten hergestellt und enthält keine künstlichen Zusatzstoffe. Es ist gesünder und umweltfreundlicher.", "passage: Unsere Bäckerei bietet eine Vielzahl von Brotsorten an, darunter auch biologisches Brot. Es schmeckt besser und ist frei von chemischen Konservierungsstoffen.", "passage: Kunden bevorzugen zunehmend biologisches Brot, da es nicht nur gut für die Gesundheit ist, sondern auch einen positiven Beitrag zur Umwelt leistet." ] # 3. Encode embeddings = model.encode(docs, embedding_size=dimensions) for doc, emb in zip(docs[1:], embeddings[1:]): print(f'{query} ||| {doc}', cosine_similarity(embeddings[0], emb)) ```
Sentence Transformers ```bash python -m pip install -U sentence-transformers ``` ```python from sentence_transformers import SentenceTransformer from sentence_transformers.util import cos_sim # 1. Specify preferred dimensions dimensions = 1024 # 2. Load model model = SentenceTransformer("mixedbread-ai/deepset-mxbai-embed-de-large-v1", truncate_dim=dimensions) query = 'query: Warum sollte man biologisches Brot kaufen?' docs = [ query, "passage: In unserer Bäckerei bieten wir auch glutenfreies Brot an, das für Menschen mit Zöliakie geeignet ist.", "passage: Kuchen und Gebäck sind ebenfalls Teil unseres Angebots, wobei wir auf höchste Qualität und Frische achten.", "passage: Wir haben auch eine Auswahl an herzhaften Snacks und Sandwiches, die perfekt für die Mittagspause sind." "passage: Biologisches Brot wird aus natürlichen Zutaten hergestellt und enthält keine künstlichen Zusatzstoffe. Es ist gesünder und umweltfreundlicher.", "passage: Unsere Bäckerei bietet eine Vielzahl von Brotsorten an, darunter auch biologisches Brot. Es schmeckt besser und ist frei von chemischen Konservierungsstoffen.", "passage: Kunden bevorzugen zunehmend biologisches Brot, da es nicht nur gut für die Gesundheit ist, sondern auch einen positiven Beitrag zur Umwelt leistet." ] # 3. Encode embeddings = model.encode(docs) similarities = cos_sim(embeddings[0], embeddings[1:]) print('similarities:', similarities) ```
transformers ```bash pip install -U transformers ``` ```python from typing import Dict import torch import numpy as np from transformers import AutoModel, AutoTokenizer from sentence_transformers.util import cos_sim def pooling(outputs: torch.Tensor, inputs: Dict) -> np.ndarray: outputs = torch.sum( outputs * inputs["attention_mask"][:, :, None], dim=1) / torch.sum(inputs["attention_mask"]) return outputs.detach().cpu().numpy() # 1. Load model model_id = 'mixedbread-ai/deepset-mxbai-embed-de-large-v1' tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModel.from_pretrained(model_id).cuda() query = 'query: Warum sollte man biologisches Brot kaufen?' docs = [ query, "passage: In unserer Bäckerei bieten wir auch glutenfreies Brot an, das für Menschen mit Zöliakie geeignet ist.", "passage: Kuchen und Gebäck sind ebenfalls Teil unseres Angebots, wobei wir auf höchste Qualität und Frische achten.", "passage: Wir haben auch eine Auswahl an herzhaften Snacks und Sandwiches, die perfekt für die Mittagspause sind." "passage: Biologisches Brot wird aus natürlichen Zutaten hergestellt und enthält keine künstlichen Zusatzstoffe. Es ist gesünder und umweltfreundlicher.", "passage: Unsere Bäckerei bietet eine Vielzahl von Brotsorten an, darunter auch biologisches Brot. Es schmeckt besser und ist frei von chemischen Konservierungsstoffen.", "passage: Kunden bevorzugen zunehmend biologisches Brot, da es nicht nur gut für die Gesundheit ist, sondern auch einen positiven Beitrag zur Umwelt leistet." ] # 2. Encode inputs = tokenizer(docs, padding=True, return_tensors='pt') for k, v in inputs.items(): inputs[k] = v.cuda() outputs = model(**inputs).last_hidden_state embeddings = pooling(outputs, inputs) # 3. Compute similarity scores similarities = cos_sim(embeddings[0], embeddings[1:]) print('similarities:', similarities) ```
transformers.js ```bash npm i @xenova/transformers ``` ```javascript import { pipeline, cos_sim } from '@xenova/transformers'; // 1. Create a feature extraction pipeline const extractor = await pipeline('feature-extraction', 'mixedbread-ai/mxbai-embed-large-v1', { quantized: false, // Comment out this line to use the quantized version }); // 2. Encode query = 'query: Warum sollte man biologisches Brot kaufen?' docs = [ query, "passage: In unserer Bäckerei bieten wir auch glutenfreies Brot an, das für Menschen mit Zöliakie geeignet ist.", "passage: Kuchen und Gebäck sind ebenfalls Teil unseres Angebots, wobei wir auf höchste Qualität und Frische achten.", "passage: Wir haben auch eine Auswahl an herzhaften Snacks und Sandwiches, die perfekt für die Mittagspause sind." "passage: Biologisches Brot wird aus natürlichen Zutaten hergestellt und enthält keine künstlichen Zusatzstoffe. Es ist gesünder und umweltfreundlicher.", "passage: Unsere Bäckerei bietet eine Vielzahl von Brotsorten an, darunter auch biologisches Brot. Es schmeckt besser und ist frei von chemischen Konservierungsstoffen.", "passage: Kunden bevorzugen zunehmend biologisches Brot, da es nicht nur gut für die Gesundheit ist, sondern auch einen positiven Beitrag zur Umwelt leistet." ] const output = await extractor(docs, { pooling: 'mean' }); // 3. Compute similarity scores const [source_embeddings, ...document_embeddings ] = output.tolist(); const similarities = document_embeddings.map(x => cos_sim(source_embeddings, x)); console.log(similarities); ```
## Community Join our [discord community](https://www.mixedbread.ai/redirects/discord) or the [Haystack community discord](https://discord.com/invite/VBpFzsgRVF) to share your feedback and thoughts. We're here to help and always happy to discuss the exciting field of machine learning! ## License Apache 2.0 ## Citation ```bibtex @online{germanemb2024mxbai, title={German Embeddings supporting Binary MRL}, author={Sean Lee, Aamir Shakir, Darius Koenig, Julius Lipp}, year={2024}, url={https://www.mixedbread.ai/blog/deepset-mxbai-embed-de-large-v1}, } ```