精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖

锐英源精品原创文章,禁止转载和任何形式的非法内容使用,违者必究
4年前不知道用什么方式,就加入了智源社区的微信群,里面经常发内容。4年前,当时DeepSeek还没有火,智源就像布道者一样,为AI大模型打下产业和社区基础。
北京智源人工智能研究院(简称智源/BAAI)是2018年11月在科技部和北京市支持下成立的非营利性新型AI研发机构,是国内人工智能领域的核心原始创新平台。
最近要研究文本大模型,DeepSeek推荐BGE-M3,并生成了第一版本代码,第一版本代码觉得不好用,转头仔细研究,发现第一版本代码就时套了个壳,没实际按我的思路来做,就研究了新版本,新版本基本满足了思路要求。DeepSeek推荐时BGE-M3,我看了性能要求, 不过印象不深,今天写文章,再读下细节,也发给观众。
BGE-M3是北京智源人工智能研究院(BAAI)在2024年1月正式发布的开源通用文本向量化模型,是BGE系列中定位全场景多能力的旗舰版本,相关核心论文于2024年2月公开上线。它基于BERT架构迭代优化而来,前期经过RetroMAE预训练、无监督对比学习两个阶段的技术铺垫,最终通过对密集、稀疏、多向量三种检索能力的统一微调完成最终版本打磨,后续还持续迭代了适配不同部署场景的衍生版本。
相比仅支持密集检索的轻量模型,它的内存占用更高,在亿级以上的超大规模向量库场景下检索性能会受限,对毫秒级以下极低延迟的业务场景适配性一般。
看了介绍,我就对昨天使用huggingface下载BGE-M3大模型,一次下载文件500多M,一次下载2个多G有理解了,原来这和BGE-M3的基础参数有关系。
初始化代码。
self.model = SentenceTransformer("./models/bge-m3-gguf/", device=self.device)
注意第一个参数是目录,目录下要有完整的参数文件,不全就会报错误,具体错误在huggingface网页里有。下面是目录文件清单图形:

在第一版本代码不理想时,我想着改这些文件里的参数,比如config.json里的,
"_name_or_path": "",
"architectures": [
"XLMRobertaModel"
],
"attention_probs_dropout_prob": 0.1,
"bos_token_id": 0,
"classifier_dropout": null,
"eos_token_id": 2,
但被警告了,这些是和BGE-M3思考密切相关的参数,改了后,BGE-M3就不能正常工作了。
编码转换代码:
sentence_embeddings = self.model.encode(sentences, show_progress_bar=True)
encode是编码的意思,相当于把句子转换成Transformer形式的数据,下面是数据截图:

里面数据有三项,对应三段话,里面的浮点数就是文本大模型对文本的向量度的表达值。在一些视频里讲Transformer,提到KPV值,这些原理对初学者来说有距离,把数据直观看到,初学者就好有感觉,再加上几步调用,就对文本大模型的用法和结果有直观印象,比只学理论不敢动手强。