说明文档
mixedbread-ai/deepset-mxbai-embed-de-large-v1
该模型是一个强大的开源德语/英语嵌入模型,由 Mixedbread 与 deepset 合作开发。它基于 intfloat/multilingual-e5-large 构建,并使用 AnglE loss 进行训练。在我们的博客文章中了解更多详情。
核心优势:
- 领先的性能
- 支持[二元量化]((#binary-quantization-and-matryoshka)和俄罗斯套娃表示学习 (MRL)
- 基于超过3000万对高质量德语数据进行微调
- 针对检索任务优化
- 支持语言:德语和英语
- 需要提示词:查询使用
query: {query},文档使用passage: {doc}
性能表现
在 NDCG@10 指标上,我们的模型平均达到 51.7 分,为开源德语嵌入模型树立了新的标准:
| 模型 | 平均性能 (NDCG@10) | 二元支持 | MRL支持 |
|---|---|---|---|
| deepset-mxbai-embed-de-large-v1 | 51.7 | ✅ | ✅ |
| multilingual-e5-large | 50.5 | ❌ | ❌ |
| jina-embeddings-v2-base-de | 50.0 | ✅ | ❌ |
| 闭源模型 | |||
| Cohere Multilingual v3 | 52.4 | ✅ | - |
在与法律数据客户的案例研究中,我们的模型优于领域特定替代方案:
| 模型 | 平均性能 (MAP@10) |
|---|---|
| deepset-mxbai-embed-de-large-v1 | 90.25 |
| voyage-law-2 | 84.80 |
二元量化和俄罗斯套娃表示学习
我们的模型支持二元量化和俄罗斯套娃表示学习 (MRL),可实现显著的效率提升:
- 二元量化:保留 91.8% 的性能,同时效率提高32倍
- MRL:向量大小减少 25% 仍保留 97.5% 的模型性能
- 在 512 维度时,保留超过 93% 的模型性能,同时将嵌入大小减半
这些优化可显著降低云计算和向量数据库的基础设施成本。在此处了解更多。
快速入门
以下是使用我们的模型生成德语句子嵌入的几种方法。请注意,您需要提供提示词:查询使用 query: {query},文档使用 passage: {doc}。
<details> <summary>Mixedbread API</summary>
pip install -U mixedbread-ai
import { MixedbreadAIClient } from "@mixedbread-ai/sdk";
# 1. 创建客户端
const mxbai = new MixedbreadAIClient({
apiKey: "YOUR_API_KEY"
});
# 2. 编码
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' # 或使用 'binary' 获取二元嵌入
})
console.log(res.data[0].embedding)
API 参考文档 </details>
<details> <summary>Haystack</summary>
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")
# 或使用 Mixedbread API 进行二元嵌入
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)
</details>
<details> <summary> angle-emb </summary>
pip install -U angle-emb
from angle_emb import AnglE
from angle_emb.utils import cosine_similarity
# 1. 指定首选维度
dimensions = 1024
# 2. 加载模型并设置池化策略为平均
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. 编码
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))
</details>
<details> <summary> Sentence Transformers </summary>
python -m pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
# 1. 指定首选维度
dimensions = 1024
# 2. 加载模型
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. 编码
embeddings = model.encode(docs)
similarities = cos_sim(embeddings[0], embeddings[1:])
print('similarities:', similarities)
</details>
<details> <summary> transformers </summary>
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. 加载模型
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. 编码
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. 计算相似度分数
similarities = cos_sim(embeddings[0], embeddings[1:])
print('similarities:', similarities)
</details>
<details> <summary> transformers.js </summary>
npm i @xenova/transformers
import { pipeline, cos_sim } from '@xenova/transformers';
// 1. 创建特征提取管道
const extractor = await pipeline('feature-extraction', 'mixedbread-ai/mxbai-embed-large-v1', {
quantized: false, // 注释此行以使用量化版本
});
// 2. 编码
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. 计算相似度分数
const [source_embeddings, ...document_embeddings ] = output.tolist();
const similarities = document_embeddings.map(x => cos_sim(source_embeddings, x));
console.log(similarities);
</details>
社区
加入我们的 Discord 社区 或 Haystack 社区 Discord,分享您的反馈和想法。我们随时为您提供帮助,也很高兴讨论机器学习这一激动人心的领域!
许可证
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},
}
mixedbread-ai/deepset-mxbai-embed-de-large-v1
作者 mixedbread-ai
创建时间: 2024-07-12 06:45:32+00:00
更新时间: 2025-03-24 14:42:47+00:00
在 Hugging Face 上查看