BGE embedding模型效果对比,最新的m3还是更强啊
如下使用bge-base-zh-v1.5和bge-m3进行测试:
from FlagEmbedding import FlagModel
model = FlagModel('bge-base-zh-v1.5/', #'bge-large-zh-v1.5/bge-large-zh-v1.5',
query_instruction_for_retrieval="为这个句子生成表示以用于检索相关文章:",
use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
queries = ['查询top 3告警']
passages = ["查询top 5告警", "查找top 3告警", "帮我查询top 3告警", "查询top 3告警"]
# passages = ["查询top 3告警"]
q_embeddings = model.encode_queries(queries)
p_embeddings = model.encode(passages)
print(q_embeddings)
print(p_embeddings)
scores = q_embeddings @ p_embeddings.T
print(scores)
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('bge-m3',
use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
print("*"*88)
embeddings_1 = model.encode(queries,
batch_size=12,
max_length=8192, # If you don't need such a long length, you can set a smaller value to speed up the encoding process.
)['dense_vecs']
embeddings_2 = model.encode(passages)['dense_vecs']
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
数据结果:
[[0.83188754 0.83728456 0.84642565 0.85761315]]
****************************************************************************************
[[0.91318893 0.9593268 0.97906387 1.0000001 ]]
可以看到bge的base模型感觉不是很满意,因为连完全相同的查询都认为相似度是0.85
而bge-m3则没有这个问题。

浙公网安备 33010602011771号