Mixedbread AI 嵌入¶
探索 MixedBread AI 嵌入模型的功能,支持自定义编码格式(二进制、整型、浮点型、base64 等)、嵌入维度 (Matryoshka) 和上下文提示词。
如果您在 colab 上打开此 Notebook,您可能需要安装 LlamaIndex 🦙。
In [ ]
已复制!
%pip install llama-index-embeddings-mixedbreadai
%pip install llama-index-embeddings-mixedbreadai
In [ ]
已复制!
!pip install llama-index
!pip install llama-index
In [ ]
已复制!
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 [ ]
已复制!
# 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 密钥和嵌入初始化 # 您可以访问 https://www.mixedbread.ai/api-reference#quick-start-guide # 以获取 API 密钥 mixedbread_api_key = os.environ.get("MXBAI_API_KEY", "your-api-key") # 请查看 https://www.mixedbread.ai/docs/embeddings/models#whats-new-in-the-mixedbread-embed-model-family # 以了解我们的嵌入模型 model_name = "mixedbread-ai/mxbai-embed-large-v1"
In [ ]
已复制!
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 [ ]
已复制!
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]
量化和 Matryoshka 支持¶
Mixedbread AI 嵌入支持量化和 Matryoshka,以减小嵌入的大小,从而更好地存储,同时保留大部分性能。请参阅以下文章了解更多信息:
使用不同的编码格式¶
默认的 encoding_format
是 float
。我们还支持 float16
、binary
、ubinary
、int8
、uint8
、base64
。
In [ ]
已复制!
# 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])
# 使用 `binary` 嵌入类型 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 [ ]
已复制!
# 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])
# 使用截断的维度 half_oven = MixedbreadAIEmbedding( api_key=mixedbread_api_key, model_name=model_name, dimensions=512, # 1024 是 `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]