Mixedbread AI 嵌入模型¶
探索 MixedBread AI 嵌入模型的强大功能,支持自定义编码格式(二进制、整型、浮点型、base64 等)、嵌入维度(Matryoshka 嵌套式)以及上下文提示。
如果您在 Colab 上打开此 Notebook,可能需要安装 LlamaIndex 🦙。
In [ ]:
Copied!
%pip install llama-index-embeddings-mixedbreadai
%pip install llama-index-embeddings-mixedbreadai
In [ ]:
Copied!
!pip install llama-index
!pip install llama-index
In [ ]:
Copied!
import os
from llama_index.embeddings.mixedbreadai import MixedbreadAIEmbedding
from llama_index.embeddings.mixedbreadai import EncodingFormat
import os
from llama_index.embeddings.mixedbreadai import MixedbreadAIEmbedding
from llama_index.embeddings.mixedbreadai import EncodingFormat
In [ ]:
Copied!
# 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"
# 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"
In [ ]:
Copied!
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])
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])
1024 [0.011276245, 0.0309906, -0.0060424805, 0.029174805, -0.03857422]
使用提示语实现上下文嵌入¶
提示语能够增强模型对嵌入向量在后续任务中应用方式的理解,从而提升性能表现。我们的实验表明,采用特定领域提示语可显著提高模型效果。
In [ ]:
Copied!
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])
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])
1024 [-0.023544312, -0.015213013, 0.008407593, 0.00340271, -0.044708252]
量化与套娃嵌入支持¶
Mixedbread AI 的嵌入模型支持量化和套娃技术,可在保留大部分性能的同时缩减嵌入向量尺寸以优化存储效率。更多技术细节请参阅以下文章:
使用不同的编码格式¶
默认的 encoding_format
为 float
。我们还支持 float16
、binary
、ubinary
、int8
、uint8
和 base64
格式。
In [ ]:
Copied!
# with `binary` embedding types
binary_oven = MixedbreadAIEmbedding(
api_key=mixedbread_api_key,
model_name=model_name,
encoding_format=EncodingFormat.BINARY,
)
binary_embeddings = binary_oven.get_text_embedding(
"The bread is tiny but still filling!"
)
print(len(binary_embeddings))
print(binary_embeddings[:5])
# with `binary` embedding types
binary_oven = MixedbreadAIEmbedding(
api_key=mixedbread_api_key,
model_name=model_name,
encoding_format=EncodingFormat.BINARY,
)
binary_embeddings = binary_oven.get_text_embedding(
"The bread is tiny but still filling!"
)
print(len(binary_embeddings))
print(binary_embeddings[:5])
128 [-121.0, 96.0, -108.0, 111.0, 110.0]
使用不同的嵌入维度¶
Mixedbread AI 的嵌入模型支持 Matryoshka 维度截断技术,默认维度设置为模型的最大值。请持续关注我们的官网,了解哪些模型支持 Matryoshka 功能。
In [ ]:
Copied!
# 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])
# 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])
512 [-0.014221191, -0.013671875, -0.03314209, 0.025909424, -0.035095215]