一个模型搞定 RAG 向量化,Python 直接跑(BAAI/bge-m3)
做 RAG 的朋友对向量化模型应该都不陌生。今天简单聊一个我最近在用的模型——BAAI/bge-m3,智源研究院出品,MIT 协议可商用,最舒服的一点是:下载好模型放到本地,Python 里几行代码就能跑起来,不需要一堆依赖和服务,特别适合直接拿来做 RAG 的向量化环节。
这个模型好在哪
一句话概括:多语言、长文本、稠密/稀疏/多向量三合一。
-
多语言:覆盖 100+ 种语言,中英文混检、跨语言检索都能用;
-
长文本:最大支持 8192 token,长文档切片后不用担心超长;
-
三合一检索:一次推理可同时输出稠密向量(语义检索)、稀疏权重(类 BM25 关键词匹配)、多向量(ColBERT 式精细重排)。RAG 里常见做法是稠密召回 + 稀疏/多向量重排,一个模型全包了。
参数 569M,稠密向量 1024 维,模型文件约 2.27 GB,CPU 上也能跑(慢一点,但跑得动)。
环境依赖:
pip install FlagEmbedding
模型文件内容:

代码如下:
from FlagEmbedding import BGEM3FlagModel
import numpy as np
# ========= 配置:填写你本地BAAI_bge‑m3模型路径 =========
MODEL_PATH = r"D:\\myLittleModel\\embeddingsProject\\BAAIBgeM3\\model\\BAAI_bge-m3"
# CPU务必 use_fp16=False
model = BGEM3FlagModel(
model_name_or_path=MODEL_PATH,
use_fp16=False
)
# 单条向量化,用于milvus检索
query = "适合出门打球"
query_res = model.encode([query], return_dense=True, return_sparse=False, return_colbert_vecs=False)
query_vector = query_res["dense_vecs"][0]
print(f"query向量维度 {query_vector.shape}")
# 输出前10个维度数值
first10 = query_vector[:10]
print("向量前10维:")
print(first10)
print("------------------------------------")
# 列表输入
text_list = [
"今天天气很不错,适合外出打球",
"今日阳光明媚,适合出门运动",
"他开车去往体育场参加比赛"
]
# 重点:return_colbert_vecs 带下标 _vecs
encode_result = model.encode(
sentences=text_list,
return_dense=True,
return_sparse=False,
return_colbert_vecs=False
)
dense_embeds = encode_result["dense_vecs"]
print(f"向量shape: {dense_embeds.shape}") # (3,1024)
# 输出三个文本向量各自的前10维
for i, text in enumerate(text_list):
vec = dense_embeds[i]
print(f"\n=== 文本 {i}: {text} ===")
print(f"向量shape: {vec.shape}")
print("前10维(numpy):")
print(vec[:10])
运行结果:
query向量维度 (1024,)
向量前10维:
[-0.0119988 -0.00236061 -0.10888595 0.02743139 -0.00785391 -0.02606967
0.00354357 0.00466535 0.04377837 -0.02017611]
------------------------------------
向量shape: (3, 1024)
=== 文本 0: 今天天气很不错,适合外出打球 ===
向量shape: (1024,)
前10维(numpy):
[-0.01638694 0.01111988 -0.07677518 0.00492002 -0.01375932 -0.05856777
0.01218044 0.01153451 0.02561076 -0.01882596]
=== 文本 1: 今日阳光明媚,适合出门运动 ===
向量shape: (1024,)
前10维(numpy):
[ 0.00277533 0.03751214 -0.07457497 0.00530381 -0.02216698 -0.03919666
-0.01354743 -0.00716769 0.02669461 -0.01112665]
=== 文本 2: 他开车去往体育场参加比赛 ===
向量shape: (1024,)
前10维(numpy):
[ 0.02138939 -0.02295322 -0.02003554 0.00877045 -0.03312481 0.00957198
0.00554157 -0.03647586 0.02149701 -0.03139527]
浙公网安备 33010602011771号