FlagEmbedding
BGE:来自北京AI研究院的检索增强工具包,支持文本Embedding、Reranker和微调,让AI真正理解语义
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
BGE:来自北京AI研究院的检索增强工具包,支持文本Embedding、Reranker和微调,让AI真正理解语义
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在企业内部知识库搜索"去年Q3季度华东区销售情况分析",传统关键词搜索可能只能找到包含"Q3""销售""华东"等零散字眼的文档——但真正的答案可能藏在一篇完整的季度报告中,关键词一个没对上,你依然找不到。
这就是语义检索要解决的问题。而**BGE(BAAI General Embedding)**正是为此而生的一个强大工具包,它能将文本转化为高维向量,让计算机真正理解语言的"意思",而不是机械地数"命中了几个词"。
BGE 由北京人工智能研究院(BAAI) 开发并开源,是 FlagOpen 大模型开源项目的重要组成部分。截至2026年5月,该项目在GitHub上已积累超过11700颗星,成为检索增强生成(RAG)领域最受欢迎的Embedding工具之一。

BGE 不仅仅是一个Embedding模型,而是一个完整的检索增强生态,包含以下四大核心模块:
Embedder 是 BGE 的核心,它能将任意文本(句子、段落、文档)转换为一个高维向量。相似的文本在向量空间中距离更近,这使得"找意思相近的内容"变得精确高效。
典型应用场景:
BGE 提供多种预训练模型,涵盖中英文及多语言场景,其中 bge-m3 支持超过100种语言的语义表示,bge-large-zh-v1.5 是中文语义检索的标杆模型。
初步检索结果往往依赖Embedding向量的相似度计算,速度快但精度有限。Reranker在此基础上引入更强大的交叉编码模型,对候选结果进行二次精排,大幅提升最终结果的相关性。
打个比方:如果说 Embedder 是用"鹰眼"快速扫描全库,那么 Reranker 就是在"放大镜"下仔细审视每个候选答案。
BGE 提供从轻量级(bge-reranker-base)到大型(bge-reranker-large)的多种 Reranker 模型,并支持 v2-m3 等多语言版本。
通用Embedding在特定垂直领域往往表现不够精准。BGE 提供了完整的微调框架,支持在自定义数据集上训练专属的 Embedder 和 Reranker。
微调支持两种架构:
对于拥有企业私有数据(如客服记录、法律文档、医疗病历)的团队,微调是打造专业检索系统的必经之路。
BGE 集成了多个主流检索Benchmark评估工具,包括 MTEB、C-MTEB、BEIR等,支持在标准数据集上对模型进行全方位评测,确保每次优化都有量化依据。
从代码结构来看,BGE 采用清晰的模块化设计:
FlagEmbedding/
├── inference/ # 推理模块
│ ├── embedder/ # Embedder推理(encoder/decoder双架构)
│ └── reranker/ # Reranker推理
├── finetune/ # 微调模块
│ ├── embedder/ # Embedder微调
│ └── reranker/ # Reranker微调
├── evaluation/ # 评估模块
│ ├── mteb/ # MTEB基准评测
│ ├── beir/ # BEIR评测
│ └── custom/ # 自定义评测
└── abc/ # 抽象基类
核心依赖包括:transformers、torch、sentence_transformers、peft(LoRA微调)、accelerate(分布式训练)、datasets。
研究目录下还包含多个前沿探索方向:BGE_Coder(代码检索)、BGE_VL(视觉-语言检索)、BGE_Reasoner(推理增强检索)、Long_LLM(长上下文检索)等。

安装(Python pip):
pip install -U FlagEmbedding
三行代码完成语义检索:
from FlagEmbedding import FlagAutoModel
# 加载中英文Embedding模型
model = FlagAutoModel.from_finetuned('BAAI/bge-large-zh-v1.5',
query_instruction_for_retrieval="为这个句子生成表示以用于检索相关文章:",
use_fp16=True, devices=['cuda:0'])
# 编码查询和文档
query_vec = model.encode_queries(["如何提高团队协作效率"])
doc_vecs = model.encode_corpus(["建立每日站会可以提升团队沟通效率..."])
# 计算相似度
import numpy as np
scores = np.dot(doc_vecs, query_vec.T)
RAG实战示例:
from FlagEmbedding import FlagAutoReranker
# 先用 Embedder 初筛 Top-20
candidates = embedder.search(query, top_k=20)
# 再用 Reranker 精排 Top-5
reranker = FlagAutoReranker.from_finetuned('BAAI/bge-reranker-v2-m3')
final_results = reranker.rerank(query, candidates, top_k=5)
| 项目 | 要求 |
|---|---|
| GPU | 必须(推荐RTX 3090/A10G/A100) |
| 显存 | 8GB+(推荐16GB) |
| 内存 | 16GB+ |
| 磁盘 | 10GB+(含模型权重) |
| Python | 3.8+ |
| CUDA | 11.8+ / 12.x |
重要提示:
deepspeed 和 flash-attn 以加速训练use_fp16=True 以节省显存并提升推理速度尽管 BGE 表现优异,仍有一些实际挑战需要注意:
BGE 的出现标志着中文语义检索生态的成熟。它不仅在 MTEB 等国际基准上与 OpenAI、Google 等商业方案同台竞技,更凭借开源透明、社区活跃的优势,成为众多RAG应用的首选底层引擎。
从技术演进趋势看,BGE 正在从单一Embedding工具向"检索-重排-评估"全链路平台演进,其研究目录中的 LLM-RAG、MemoRAG(记忆驱动的RAG)等前沿方向,代表了下一代智能检索的发展方向。
本报告基于 GitHub 开源仓库分析生成,数据截至2026年5月。