BGEM3FlagModel 嵌入模型

   BGEM3FlagModel 是 BAAI(北京智源人工智能研究院)开源的 BGE-M3 系列模型 的一个特定加载器/封装类,主要用于 密集向量检索(Dense Retrieval) 和 稀疏向量检索(Sparse Retrieval) 的统一建模。

简单来说:BGEM3FlagModel 就是 BGE-M3 模型在 FlagEmbedding 库中的官方调用接口

一、BGE-M3

BGE-M3 是 BAAI 于 2024 年发布的多语言、多功能嵌入模型,全称是 BAAI General Embedding M3

特性说明
多语言支持 100+ 种语言,包括中文、英文、日文等
多功能同时支持密集检索、稀疏检索、多向量检索
长文本最大序列长度 8192 token
向量维度1024 维(密集向量)
开源可商用,可在 Hugging Face 下载

二、BGEM3FlagModel 的加载方式

安装

pip install FlagEmbedding

基础使用

from FlagEmbedding import BGEM3FlagModel

# 加载模型
model = BGEM3FlagModel(
    'BAAI/bge-m3',          # 模型名称
    use_fp16=True,          # 使用半精度加速
    device='cuda'           # 使用 GPU
)

# 1. 密集向量(Dense Embedding)
dense_embeddings = model.encode(
    ["你好", "世界"],
    return_dense=True,
    return_sparse=False,
    return_colbert_vecs=False
)
# dense_embeddings.shape: (2, 1024)

# 2. 稀疏向量(Sparse Embedding)
sparse_embeddings = model.encode(
    ["你好", "世界"],
    return_dense=False,
    return_sparse=True,
    return_colbert_vecs=False
)
# sparse_embeddings 是词权重的字典

# 3. ColBERT 多向量
colbert_vecs = model.encode(
    ["你好", "世界"],
    return_dense=False,
    return_sparse=False,
    return_colbert_vecs=True
)
# colbert_vecs.shape: (2, 序列长度, 1024)

三、BGEM3FlagModel VS HuggingFaceEmbeddings

加载方式支持 Dense支持 Sparse支持 ColBERT语言
HuggingFaceEmbeddings多语言
BGEM3FlagModel多语言

BGEM3FlagModel 是专门为 BGE-M3 设计的封装类,支持其独有的三种检索模式。

# 场景1:普通 RAG(只需要密集向量)
from langchain_huggingface import HuggingFaceEmbeddings
emb = HuggingFaceEmbeddings(model_name="BAAI/bge-m3")

# 场景2:混合检索(密集 + 稀疏)
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3')
dense, sparse = model.encode(texts, return_dense=True, return_sparse=True)

# 场景3:ColBERT 多向量检索
colbert_vecs = model.encode(texts, return_colbert_vecs=True)

四、密集检索 vs 稀疏检索 vs ColBERT

1. 密集检索(Dense Retrieval)

dense = model.encode(texts, return_dense=True)
# 输出: (n, 1024) 的向量矩阵
# 相似度计算: 点积 / 余弦相似度

2. 稀疏检索(Sparse Retrieval)

sparse = model.encode(texts, return_sparse=True)
# 输出: 词权重字典 {'词1': 权重, '词2': 权重, ...}
# 相似度计算: 匹配共同词,权重相乘求和

3. ColBERT(多向量检索)

colbert = model.encode(texts, return_colbert_vecs=True)
# 输出: (n, 序列长度, 1024)
# 相似度计算: MaxSim 运算

六、其他

概念说明
BGE-M3BAAI 开源的多语言嵌入模型,支持密集、稀疏、ColBERT 三种检索模式
BGEM3FlagModelFlagEmbedding 库中的官方加载类,专门用于 BGE-M3
Dense 检索语义匹配,适合模糊语义理解
Sparse 检索关键词匹配,适合精确匹配
ColBERT多向量交互检索,精度最高但计算量大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值