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

教你使用bge-m3生成稀疏向量和稠密向量

前言:

现在RAG这么火,对应的语义检索就是必不可少的工具,那么怎么来进行语义检索了?这里就有两个概念需要了解一下,一个是稀疏向量,类似于ES里面的根据字词来进行搜索的,另外一个就是稠密向量,根据语义来生成向量

代码:

from FlagEmbedding import BGEM3FlagModel
import json
model = BGEM3FlagModel('/data/dh/model/bge-m3',device=3)
string = "What is BGE M3?"
sentences_1 = [string]
output_1 = model.encode(sentences_1, return_dense=True, return_sparse=True, return_colbert_vecs=False)
dense_vecs = output_1['dense_vecs'].tolist()
lexical_weights = output_1['lexical_weights'][0]
regular_dict = {}
for key, value in lexical_weights.items():regular_dict[key] = float(value)
response_dict = {}
response_dict['dense_vecs'] = dense_vecs
response_dict['lexical_weights'] = regular_dict
print(json.dumps(response_dict))

注意事项:

1、稀疏向量是 <Long,Float>的键值对

2、稠密向量是<Float>的数组

3、bge-m3生成的稠密向量是np格式的,需要转换成普通的数组才能进行JSON化

4、bge-m3生成的稀疏向量也是不能直接进行JSON化的,需要做进一步的处理

http://www.dtcms.com/a/284952.html

相关文章:

  • 大语言模型系列(1): 3分钟上手,在骁龙AI PC上部署DeepSeek!
  • 【Lua】题目小练2
  • LIN协议核心详解
  • c++之 KMP 讲解
  • Cocos游戏中UI跟随模型移动,例如人物头上的血条、昵称条等
  • C++中,不能声明为虚函数的函数类型
  • C++进阶-AVL树(平衡二叉查找树)(难度较高)
  • 2025 XYD Summer Camp 7.17 模考
  • Vue.js 响应式原理深度解析:从 Vue 2 的“缺陷”到 Vue 3 的“涅槃重生”
  • OpenVela之网络驱动适配指南
  • JxBrowser 7.43.5 版本发布啦!
  • ​​Sublime Text 2.0.2.2221 安装教程 - 详细步骤指南(附下载与配置)​
  • 深入解析:Chunked Prefill 与 FlashAttention/FlashInfer 如何协同工作
  • WSL2 离线安装流程
  • 如何让订货系统支持多角色?
  • 药品通用名、商品名、规格剂型查询API接口-中国药品批文数据库
  • 深度学习之优化方法
  • 页面登录阻止浏览器提醒是否保存密码
  • 算法讲解-移动零
  • 面试Redis篇-深入理解Redis缓存击穿
  • HTML 常用语义标签与常见搭配详解
  • 【Dv3Admin】菜单管理集成阿里巴巴自定义矢量图标库
  • uniapp云托管前端网页
  • 数据库、HTML
  • 中国各省市县坡度数据(Tif/Excel)
  • appium
  • bm-info-window百度地图去掉信息窗口影子
  • npm 和 npx 区别对比
  • 查看一个目录下的文件数量
  • 访问网页的全过程笔记