by mixedbread-ai
Open source · 104k downloads · 58 likes
The *deepset mxbai-embed-large-v1* model is an advanced embedding model designed to convert text into dense, high-quality vector representations. It excels in semantic understanding, capturing nuances and relationships between words for applications requiring fine-grained language analysis. Its key capabilities include information retrieval, document classification, and textual similarity comparison, making it particularly well-suited for semantic search systems, chatbots, or text data analysis tools. What sets it apart is its ability to generate powerful embeddings while remaining resource-efficient, striking a balance between performance and accessibility. It is ideal for businesses or developers looking to enhance the accuracy of their AI applications without resorting to larger or more costly models.
The crispy sentence embedding family from Mixedbread.
Mixedbread x deepset
🍞 Looking for a simple end-to-end retrieval solution? Meet Omni, our multimodal and multilingual model. Get in touch for access.
This model is a powerful open-source German/English embedding model developed by Mixedbread in collaboration with deepset. It's built upon intfloat/multilingual-e5-large and trained using the AnglE loss. Read more details in our blog post.
In a bread loaf:
query: {query} for the query and passage: {doc} for the documentOn 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 |
Our model supports both binary quantization and Matryoshka Representation Learning (MRL), allowing for significant efficiency gains:
These optimizations can lead to substantial reductions in infrastructure costs for cloud computing and vector databases. Read more here.
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.
pip install -U mixedbread-ai
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)
pip install -U haystack-ai mixedbread-ai-haystack
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)
pip install -U angle-emb
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))
python -m pip install -U sentence-transformers
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)
pip install -U transformers
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)
npm i @xenova/transformers
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);
Join our discord community or the Haystack community discord to share your feedback and thoughts. We're here to help and always happy to discuss the exciting field of machine learning!
Apache 2.0
@online{germanemb2024mxbai,
title={Open Source Gets DE-licious: Mixedbread x deepset German/English Embeddings},
author={Sean Lee and Aamir Shakir and Darius Koenig and Julius Lipp},
year={2024},
url={https://www.mixedbread.ai/blog/deepset-mxbai-embed-de-large-v1},
}