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则没有这个问题。

 

posted @ 2025-03-18 14:33  bonelee  阅读(1073)  评论(0)    收藏  举报