当前位置: 首页 > news >正文

【向量模型】 开源通用向量模型BGE (BAAI General Embedding)


BGEBAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的开源文本向量模型,专门用于将文本转换为高维向量表示(即 Embedding),其核心目标是提升文本检索、语义匹配等任务的性能。


1. BGE 的核心特点

特性说明
多语言支持支持中英双语,部分版本扩展至更多语言(如 BGE-M3)。
检索优化专为检索任务设计,在语义相似性、问答对齐等场景表现优异。
模型规模提供多种尺寸:BGE-small(高效)、BGE-base(平衡)、BGE-large(高精度)。
开源免费可免费商用,支持本地部署,无需依赖 API 服务。
长文本处理支持长上下文输入(如 BGE-large 最大长度 512 token),适合文档级 Embedding 生成。

2. BGE 的技术优势

  • 领先的 Benchmark 表现
    在 MTEB(大规模文本 Embedding 评测基准)中,BGE 长期位居中英双语模型榜首。

    # 例如:BGE-large-en 在 MTEB 英文检索任务中排名第一(截至 2023 年)
    
  • 对比学习训练
    使用对比学习(Contrastive Learning)方法,通过正负样本对优化向量空间分布,增强语义区分能力。

    # 训练目标:相似文本向量靠近,不相似文本向量远离
    loss = contrastive_loss(anchor, positive, negative)
    
  • 指令微调优化
    部分版本(如 BGE-*-v1.5)引入指令微调(Instruction Tuning),通过添加指令前缀提升特定任务效果:

    # 为输入添加指令前缀
    text = "为这个句子生成表示以用于检索相关文章:" + original_text
    

3. 在 RAG 中的作用

在检索增强生成(RAG)系统中,BGE 承担 文本向量化 的核心任务:

  1. 文档预处理
    将知识库文档(如 paragraphs)通过 BGE 转换为向量,存入向量数据库。

    embeddings = get_embeddings_bge(paragraphs)  # 调用 BGE 生成向量
    new_vector_db.add_documents(embeddings)      # 存储到向量数据库
    
  2. 查询向量化
    将用户查询(如 user_query)转换为向量,用于检索相似文档。

    query_embedding = get_embeddings_bge([user_query])[0]
    results = vector_db.search(query_embedding, top_k=3)
    
  3. 提升检索精度
    BGE 的高质量向量表示可更精准地匹配语义相关的上下文,从而改善后续大模型(如文心 4.0)的生成效果。


4. 与其他 Embedding 模型的对比

模型典型代表BGE 优势
通用 EmbeddingOpenAI text-embedding-3免费、可私有化部署,无需支付 API 费用。
轻量级模型Sentence-T5更高精度,尤其是在跨语言和长文本场景。
闭源商业模型文心 Embedding API数据隐私可控,适合对安全性要求高的场景。

5. 典型使用场景

  1. 知识库问答

    # 用户问题 → BGE 向量化 → 检索知识库 → 文心生成答案
    response = new_bot.chat("Llama 2 的参数量是多少?")
    
  2. 语义搜索

    # 查询:"推荐适合初学者的机器学习书籍" → 匹配相关书摘
    
  3. 跨语言检索

    # 中文查询 → 检索英文文档 → 翻译后生成答案
    
  4. 长文档分析

    # 法律合同 → 分块 Embedding → 检索关键条款
    

6. 如何使用 BGE

方式 1:通过百度 API(如原代码)
  • 优点:免部署,适合快速验证。
  • 缺点:依赖网络,存在费用和延迟。
方式 2:本地部署开源模型
  1. 从 Hugging Face 下载模型:

    git lfs install
    git clone https://huggingface.co/BAAI/bge-large-en
    
  2. 本地调用(使用 sentence-transformers):

    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer("BAAI/bge-large-en")
    embeddings = model.encode(["Hello, world!"], normalize_embeddings=True)
    

总结

BGE 是专为检索任务优化的开源 Embedding 模型,优势:高精度、多语言支持、易用。


http://www.mrgr.cn/news/93765.html

相关文章:

  • NebulaGraph学习笔记-SessionPool之getSession
  • C语言_数据结构总结4:不带头结点的单链表
  • ArduPilot开源代码之AP_OSD
  • MoonSharp 文档一
  • Django与数据库
  • Linux内核学习(一)——Vmware虚拟机安装Ubuntu20.4系统及QEMU模拟ARM64 Linux
  • Java线程池深度解析,从源码到面试热点
  • Codecraft-17 and Codeforces Round 391 E. Bash Plays with Functions 积性函数
  • 3.9【Q】csd
  • 线上接口tp99突然升高如何排查?
  • C++算法——差分
  • [通讯协议]485通信
  • 每日一题——乘积最大子数组
  • <建模软件安装教程1>Blender4.2系列
  • 2024华为OD机试真题-找最小数(C++)-E卷B卷-100分
  • 13.C语言指针的易错点
  • html-列表标签和表单标签
  • 【从零开始学习计算机科学】计算机组成原理(四)指令系统
  • Python 实现图片提取文字
  • 发现U9查询设计上的一个逻辑