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