主题
探索 MixedBread AI 嵌入模型的自定义编码格式(binary、int、float、base64 等)、嵌入维度(Matryoshka)和上下文提示能力。
如果你在 Colab 中打开这个 Notebook,可能需要先安装 LlamaIndex 🦙。
%pip install llama-index-embeddings-mixedbreadai1
!pip install llama-index1
import os
from llama_index.embeddings.mixedbreadai import MixedbreadAIEmbedding1
2
2
# API Key and Embedding Initialization
# You can visit https://www.mixedbread.ai/api-reference#quick-start-guide
# to get an api key
mixedbread_api_key = os.environ.get("MXBAI_API_KEY", "your-api-key")
# Please check https://www.mixedbread.ai/docs/embeddings/models#whats-new-in-the-mixedbread-embed-model-family
# for our embedding models
model_name = "mixedbread-ai/mxbai-embed-large-v1"1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
oven = MixedbreadAIEmbedding(api_key=mixedbread_api_key, model_name=model_name)
embeddings = oven.get_query_embedding("Why bread is so tasty?")
print(len(embeddings))
print(embeddings[:5])1
2
3
4
5
6
2
3
4
5
6
1024
[0.01128387451171875, 0.031097412109375, -0.00606536865234375, 0.0291748046875, -0.038604736328125]1
2
2
使用提示词进行上下文嵌入
提示词可以帮助模型更好地理解嵌入在后续任务中的用途,从而提升性能。我们的实验表明,使用领域特定的提示词可以提升性能。
prompt_for_retrieval = (
"Represent this sentence for searching relevant passages:"
)
contextual_oven = MixedbreadAIEmbedding(
api_key=mixedbread_api_key,
model_name=model_name,
prompt=prompt_for_retrieval,
)
contextual_embeddings = contextual_oven.get_query_embedding(
"What bread is invented in Germany?"
)
print(len(contextual_embeddings))
print(contextual_embeddings[:5])1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1024
[-0.0235443115234375, -0.0152435302734375, 0.008392333984375, 0.00336456298828125, -0.044647216796875]1
2
2
量化与 Matryoshka 支持
Mixedbread AI 嵌入支持量化和 matryoshka,以缩小嵌入尺寸、改善存储,同时保留大部分性能。更多信息请参阅以下文章:
使用不同的编码格式
默认的 encoding_format 是 float。我们还支持 float16、binary、ubinary、int8、uint8、base64。
# with `binary` embedding types
binary_oven = MixedbreadAIEmbedding(
api_key=mixedbread_api_key,
model_name=model_name,
encoding_format="binary",
)
binary_embeddings = binary_oven.get_text_embedding(
"The bread is tiny but still filling!"
)
print(len(binary_embeddings))
print(binary_embeddings[:5])1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
128
[-121.0, 96.0, -108.0, 111.0, 110.0]1
2
2
使用不同的嵌入维度
Mixedbread AI 嵌入模型支持 Matryoshka 维度截断。默认维度设为模型的最大值。请关注我们的网站,了解哪些模型支持 Matryoshka。
# with truncated dimension
half_oven = MixedbreadAIEmbedding(
api_key=mixedbread_api_key,
model_name=model_name,
dimensions=512, # 1024 is the maximum of `mxbai-embed-large-v1`
)
half_embeddings = half_oven.get_text_embedding(
"I want the better half of my bread."
)
print(len(half_embeddings))
print(half_embeddings[:5])1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
512
[-0.014221191, -0.013671875, -0.03314209, 0.025909424, -0.035095215]1
2
2