MaxKB内置的向量模型不足?

在MaxKB中知识文档Emdeding是很重要的一环,而这个过程就必须依赖向量模型。目前MaxKB内置的向量模型为text2vec-base-Chinese,一个针对中文语义匹配任务优化的向量模型,特别适用于中文句子级别的语义匹配任务。早期的时候在多个领域表现出了优秀的性能。但是,刚刚也说了是早期,以现在的时间点来看,不可避免的有些其他不足:

  • 长文本处理能力:在处理长文本时,可能无法有效搜索到相关结果,这表明在长文本处理方面可能存在一定的局限性。

  • 向量模型“坍缩”现象:这个现象指的是BERT对所有的句子都倾向于编码到一个较小的空间区域内,这使得大多数的句子对都具有较高的相似度分数。这会导致模型难以准确地反映出两个句子的语义相似度,尤其是在处理长文本时,可能会经常搜索不到不准确的结果。

  • 模型实时性问题:至目前为主,text2vec-base-Chinese官方库最新一次更新时间为[2023/09/20] v1.2.9版本,也就是一年多的时间没有更新了,在这个AI快速发展的时代,一年的时间显的很长。

备注:BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言表示模型,它基于 Transformer 架构构建,通过深度双向训练来理解语言的上下文信息。

并且,为了应对不同文档Emdeding,有时候我们也需要在MaxKB更换不同的向量模型。现在向量模型的种类大概分为六大类,向量模型的数量基本也有上百种以上,如何选择向量模型一直是个难题。

  1. BERT (Bidirectional Encoder Representations from Transformers):这是一种基于 Transformer 架构的预训练语言表示模型,它通过深度双向训练来理解语言的上下文信息。BERT 在自然语言处理(NLP)领域取得了显著的性能提升,被广泛应用于各种任务,如情感分析、问答系统、命名实体识别等。

  2. M3E (Massive Mixed Embedding):M3E 在私有部署和大规模文本处理方面表现出色,适用于需要私有化和资源节约的场景。它通过大规模混合嵌入技术提高了词向量的表达能力和泛化能力,适用于各种文本处理任务。

  3. BGE (Baidu General Embedding):BGE 系列模型在全球下载量超过1500万,位居国内开源 AI 模型首位,表明其资源使用高效且受欢迎。BGE 在多语言支持、文本处理能力和检索精度方面表现优异,尤其适合需要高精度和高效率的场景。

  4. Sentence Transformers:基于孪生 BERT 网络预训练得到的模型,对句子的嵌入效果比较好。

  5. OpenAI Embedding (text-embedding-ada-002): OpenAI 提供的模型,嵌入效果表现不错,且可以处理最大 8191 标记长度的文本。

  6. Instructor Embedding:这是一个经过指令微调的文本嵌入模型,可以根据任务(例如分类、检索、聚类、文本评估等)和领域(例如科学、金融等),提供任务指令而生成相对定制化的文本嵌入向量,无需进行任何微调。

那么我们应该在MaxKB中如何选择向量模型?

选择向量模型的第一点需要考虑模型的排行,应用场景等。但是这些在huggingface、魔塔社区都有相应的说明,反而不是太过担心。

比如huggingface的MTEB榜单:https://huggingface.co/spaces/mteb/leaderboard(评估和比较不同文本嵌入模型的基准测试性能,MTEB榜单涵盖了多种语言和任务类型,包括法语、英语、中文等112种语言,涉及检索、排序、句子相似度、推理、分类、聚类等任务。通过这些任务,MTEB能够评估模型在不同场景下的表现,为用户提供选择依据‌)

魔塔社区(https://modelscope.cn/) ModelScope社区成立于2022年6月,是一个模型开源社区及创新平台,由阿里巴巴达摩院,联合CCF开源发展委员会,共同作为项目发起方。

具体在MaxKB中替换向量模型时选择哪一种?这个就需要结合上述六大分类的向量模型,综合以下几个方面进行考量:

  1. 语义理解能力:需要能够理解句子或段落级别的语义,而不仅仅是词汇级别的相似度。
  2. 运行效率:针对大规模语料的检索需要考虑计算效率和相似度检索时间。
  3. 上下文依赖性:选择模型时需要考虑上下文对语义匹配的重要性。
  4. 领域适配性:有些模型对特定任务或领域(如法律、医学)需要采用专业领域模型(微调或者现有的)以提供最佳性能。

从huggingface的MTEB中文榜单中,可以看出目前支持中文主流的向量模型有以下几种(相对而言,模型更新太快)。以下是汇总了MTEB排行榜中第1至第20位中包含具体参数信息的模型,及其性能参数,补充了模型简介和适用场景:

当然,上述为通用模型,在一些特殊领域也可以使用以下场景模型,比如面向电商、医疗等,可以按照实际场景进行选择:



关于在MaxKB中如何替换向量模式这边就不过多介绍,可以通过接入公有向量模型、Xinference、或者本地模型方式接入,具体可以参考手册,比如在Xinference中启用本地向量模型(用ollama、本地模型的方式也可以)。

启动后,在MaxKB中接入使用即可。

MaxKB中如何选择向量模型?的更多相关文章

  1. Elasticsearch中的相似度模型(原文:Similarity in Elasticsearch)

    原文链接:https://www.elastic.co/blog/found-similarity-in-elasticsearch 原文 By Konrad Beiske 翻译 By 高家宝 译者按 ...

  2. NLP学习(1)---Glove模型---词向量模型

    一.简介: 1.概念:glove是一种无监督的Word representation方法. Count-based模型,如GloVe,本质上是对共现矩阵进行降维.首先,构建一个词汇的共现矩阵,每一行是 ...

  3. 在C 中加载TorchScript模型

    本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的场景,并且是首选的语言,但同样的,在 许多 ...

  4. 词向量模型word2vector详解

    目录 前言 1.背景知识 1.1.词向量 1.2.one-hot模型 1.3.word2vec模型 1.3.1.单个单词到单个单词的例子 1.3.2.单个单词到单个单词的推导 2.CBOW模型 3.s ...

  5. 对词向量模型Word2Vec和GloVe的理解

    Word2Vec Word2Vec 是 google 在2013年提出的词向量模型,通过 Word2Vec 可以用数值向量表示单词,且在向量空间中可以很好地衡量两个单词的相似性. 简述 我们知道,在使 ...

  6. [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型

    深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...

  7. 一文读懂高性能网络编程中的I/O模型

    1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...

  8. 词袋模型bow和词向量模型word2vec

    在自然语言处理和文本分析的问题中,词袋(Bag of Words, BOW)和词向量(Word Embedding)是两种最常用的模型.更准确地说,词向量只能表征单个词,如果要表示文本,需要做一些额外 ...

  9. scikit-learn 中常用的评估模型

    一,scikit-learn中常用的评估模型 1.评估分类模型: ​ 2.评估回归模型: ​ 二.常见模型评估解析: •对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:(T,F表示预测的 ...

  10. Chem 3D中怎么创建立体模型

    ChemDraw作为一款很受大家欢迎的化学绘图软件,其在绘制平面化学方面的功能已经非常的强大了,其实它也可以绘制3D图形.Chem 3D就是绘制3D图形的重要组件.而且为了满足不同的用户绘图的需求,可 ...

随机推荐

  1. Jenkins+Ant+JaCoCo的代码覆盖率集成实践

    Jenkins+Ant+JaCoCo的代码覆盖率集成实践 一.工具介绍 Jenkins: Jenkins是一个开源的.基于Java开发的持续集成工具,它可以帮助开发人员自动化构建.测试和部署软件项目. ...

  2. Sdcb Chats 重磅更新:深度集成 DeepSeek-R1,思维链让 AI 更透明!

    Sdcb Chats 是一个强大且易于部署的 ChatGPT 前端,旨在帮助用户轻松接入和管理各种主流的大语言模型. Sdcb Chats 主要特性: 广泛的大模型支持: 已支持 15 种不同的大语言 ...

  3. Luogu P3959 宝藏 题解 [ 紫 ] [ 状压 dp ] [ 二项式定理 ]

    宝藏:一个对着蓝书代码调都能调两个小时的大毒瘤,但是思路还是很值得借鉴的,有普通状压和三进制状压两种做法,或者暴搜剪枝也可以(这里不介绍暴搜剪枝做法). 普通状压做法 观察到 \(n\le 12\), ...

  4. RLHF各种训练算法科普

    强化学习在LLM中的应用越来越多了,本文针对常见的几种训练算法,用生活中的例子做类比,帮助理解相关概念. 包括:PPO.DRO.DPO.β-DPO.sDPO.RSO.IPO.GPO.KTO.ORPO. ...

  5. Typecho防黑安全加固-修改后台路径

    删除安装文件 成功安装后删除install.php文件.install/文件夹. 修改后台地址 把admin修改为黑客猜不到的名字,例如pipixia,防止黑客穷举密码. 修改admin文件夹名称 修 ...

  6. Python - “人生苦短,我用Python”

    Python中的值(数据)类型 类型 描述 说明 数字(Number) 支持 整数(int) 浮点数(float) 复数(complex) 布尔(bool) 整数(int),如:10.-10 浮点数( ...

  7. ascci 码表

  8. goland JetBrains编辑器:代码爆红找不到引用,但项目可运行

    前言 goland JetBrains 编辑器:代码爆红找不到引用,但项目可运行 解决 goland 缓存已满,需要清除缓存

  9. Go语言fmt.Sprintf、fmt.Printf(格式化输出)

    fmt.Printf fmt.Printf在程序中使用%f来格式化所需的值 看起来我们的值被四舍五入到了一个合理的数.但小数点后仍显示了6位,这对我们当前的需要来说实在是太多了. 对于这种情况,格式化 ...

  10. 一文速通Python并行计算:01 Python多线程编程-基本概念、切换流程、GIL锁机制和生产者与消费者模型

    一文速通 Python 并行计算:01 Python 多线程编程-基本概念.切换流程.GIL 锁机制和生产者与消费者模型 摘要: 多线程允许程序同时执行多个任务,提升效率和响应性.线程分为新建.就绪. ...