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

《向量数据库指南》——BGE-M3:引领多模态RAG系统新风尚!

BGE-M3

BGE-M3 是一个多功能的 Embedding 模型,能够处理多种语言的文本,并支持不同的粒度级别。例如,您可以处理短句,也可以处理长达 8192 个 Token 的长文档。这个 Embedding 模型还能够输出两种不同的向量类型:稠密向量(Dense embedding)和稀疏向量(Sparse embedding)。

稠密向量的维度比稀疏向量更紧凑,并且包含原始输入的语义表示。与此同时,正如其名,稀疏向量具有高维度,但大多数元素都是零。因此,针对稀疏向量可以使用专门的数据结构和算法实现更高效地存储和处理。

在下面的 RAG 应用中,我们将使用 BGE-M3 作为 Embedding 模型,将文本输入转换为向量。我们可以使用以下代码在 Milvus 中使用 BGE-M3:

!pip install "pymilvus[model]"



from pymilvus.model.hybrid import BGEM3EmbeddingFunction

bge_m3_ef = BGEM3EmbeddingFunction(

    model_name='BAAI/bge-m3', # Specify the model name

    device='cpu', # Specify the device to use, e.g., 'cpu' or 'cuda:0'

    use_fp16=False # Specify whether to use fp16. Set to `False` if `device` is `cpu`.

)

docs = [

    "Artificial intelligence was founded as an academic discipline in 1956.",

    "Alan Turing was the first person to conduct substantial research in AI.",

    "Born in Maida Vale, London, Turing was raised in southern England.",

]

docs_embeddings = bge_m3_ef.encode_documents(docs)

# Print embeddings

print("Embeddings:", docs_embeddings)

"""

Output:

Embeddings: {'dense': [array([-0.02505937, -0.00142193,  0.04015467, ..., -0.02094924,

        0.02623661,  0.00324098], dtype=float32), array([ 0.00118463,  0.00649292, -0.00735763, ..., -0.01446293,

        0.04243685, -0.01794822], dtype=float32), array([ 0.00415287, -0.0101492 ,  0.0009811 , ..., -0.02559666,

        0.08084674,  0.00141647], dtype=float32)], 'sparse': <3x250002 sparse array of type '<class 'numpy.float32'>'

        with 43 stored elements in Compressed Sparse Row format>}

"""



如上所示,我们可以基于同一个输入获取两种不同类型的向量:稠密向量和稀疏向量。因为 Milvus 支持混合搜索(Hybrid Search),我们可以在向量搜索中同时使用这两种向量类型,从而增强 RAG 系统中检索到的上下文的准确性和质量。


http://www.kler.cn/a/379668.html

相关文章:

  • 【折腾一上午】Java POI 导出 Excel 自适应列宽行高
  • EHOME视频平台EasyCVR萤石设备视频接入平台视频诊断技术可以识别哪些视频质量问题?
  • LeetCode:633. 平方数之和(Java)
  • 11.03学习
  • RestTemplate 常用方法(提供了多种方法来发送 HTTP 请求)
  • 证书下行,这些高质量IT证书仍值得考
  • Docker容器消耗资源过多导致宿主机死机解决方案
  • openGauss开源数据库实战十五
  • 企业数据泄露安全演练(分享)
  • 飞牛OS在Docker中安装ODOO ERP系统
  • 书签管理工具使用技巧
  • Transformer和BERT的区别
  • Springboot 整合 Java DL4J 实现情感分析系统
  • SQL 视图:概念、应用与最佳实践
  • 教程:使用 InterBase Express 访问数据库(四)
  • C++在游戏开发中的应用与实践
  • [前端面试]计算机网络
  • C语言案例——青蛙跳台阶问题
  • js-18-防抖、节流源码以及如何使用
  • git将本地项目上传到远程空仓库里
  • k8s中Deployment和StatefulSet两种控制器之间的比较
  • 【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师
  • 网络设置:静态IP与动态IP,何去何从?
  • Odoo:免费开源的医药流通行业信息化解决方案
  • 视频号带货书籍,一天佣金1200+(附视频教程)
  • LangGPT结构化提示词编写实践(L1G3000 浦语提示词工程实践)