开源文本嵌入模型M3E

在这里插入图片描述

进入正文前,先扯点题外话

这两天遇到一个棘手的问题,在用 docker pull 拉取镜像时,会报错: x509: certificate has expired or is not yet valid

具体是下面👇这样的

root@DS918:/volume2/docker/xiaoya# docker pull alpine:3.18.2
3.18.2: Pulling from library/alpine
31e352740f53: Already exists 
error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/c1/c1aabb73d2339c5ebaa3681de2e9d9c18d57485045a4e311d9f8004bec208d67/data?verify=1713883560-%2F3RhBOCWXsSAz9IO7i8g2LuGRCE%3D": x509: certificate has expired or is not yet valid: current time 2024-04-23T21:56:03+08:00 is after 2021-09-30T14:01:15Z

通过 dockerproxy 下载则是正常的

下载 ghcr.io 的镜像也正常

①、网络没问题,另一台机器上下载镜像是正常的

②、检查了证书也没到期,下图是重新生成的证书

③、系统时间也没问题

④、重装过 docker 套件(卸载–>重启–>安装),但问题一直没得到解决

网上找了两天,也没有找到可行的解决方案,有点抓瞎 😂

有遇到过这种情况并解决的朋友,请不吝赐教,感谢!


本文会用到 One APIM3E 进行管理和分发

文章传送门: 大模型接口管理和分发系统One API


什么是 M3E ?

M3EMoka Massive Mixed Embedding 的缩写,是一个由 MokaAI 训练并开源的文本嵌入模型。适合使用场景主要是中文,少量英文的情况,其在文本分类和文本检索任务上表现出色,据称在某些任务上超越了 ChatGPT

M3E 共有三种模型,各有不同的维度

  • m3e-small
  • m3e-base
  • m3e-large

什么是嵌入( Embedding) ?

嵌入是一种将单词、短语或整个文档转换为密集向量的技术。每个单词或短语被转换成一组数字,这组数字捕捉了该文本的某些语义特征。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 m3e-large-api ,选择第一个 stawky/m3e-large-api,只有一个 latest 版本,双击直接下载。

镜像比较大,如果下载不动,可以用命令行试试从国内阿里源下载

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
60086008

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行容器(国外)
docker run -d \--restart unless-stopped \--name m3e-large-api \-p 6008:6008 \stawky/m3e-large-api:latest# 运行容器(国内)
docker run -d \--restart unless-stopped \--name m3e-large-api \-p 6008:6008 \registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest

如果你的机器支持 GPU,可以增加一个选项 --gpus all,表示启用所有可用的 GPU 资源

# 运行容器(国外)
docker run -d \--restart unless-stopped \--name m3e-large-api \--gpus all \-p 6008:6008 \stawky/m3e-large-api:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:m3e-large-api:image: stawky/m3e-large-api:latest#image: registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latestcontainer_name: m3e-large-apirestart: unless-stopped  ports:- "6008:6008"

然后执行下面的命令

# 新建文件夹 m3e-large-api 和 子目录
mkdir -p /volume1/docker/m3e-large-api# 进入 m3e-large-api 目录
cd /volume1/docker/m3e-large-api# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:6008 就能看到主界面

命令行

要验证 API 服务是否正常,除了查看日志

还可以用下面的示例

# 命令行测试
curl --location --request POST 'http://<服务地址:端口>/v1/embeddings' \
--header 'Authorization: Bearer <秘钥>' \
--header 'Content-Type: application/json' \
--data-raw '{"model": "<模型>","input": ["<问题>"]
}'# 示例
curl --location --request POST 'http://192.168.0.197:6008/v1/embeddings' \
--header 'Authorization: Bearer sk-aaabbbcccdddeeefffggghhhiiijjjkkk' \
--header 'Content-Type: application/json' \
--data-raw '{"model": "m3e","input": ["laf是什么"]
}'

其中

  • <服务地址:端口>:填入 http://群晖IP:6008
  • <秘钥>:填入默认值 sk-aaabbbcccdddeeefffggghhhiiijjjkkk
  • <模型>:填入模型名称 m3e
  • <问题>:填入你想问的问题

如果看到下图这样的返回,就 OK

One API

也可以用 One API进行管理和分发。老苏建议用这种方式

One API 中添加新的渠道

  • 类型:选择 自定义渠道
  • Base URL:填入 M3E 的访问地址 http://群晖IP:6008
  • 名称:例如:M3E
  • 分组:default就行
  • 模型:输入自定义模型名称,填入 即可,例如:m3e,其他服务调用时,需匹配这个模型的名称
  • 秘钥:sk-aaabbbcccdddeeefffggghhhiiijjjkkk

保存之后,一般会测试一下

返回 404 是正常的,M3E不是聊天模型,但测试调用的是 chat 接口,所以会失败

到这里,准备工作基本上就完成了,下一篇将正式进入知识库问答系统的搭建

参考文档

moka-ai/m3e-large · Hugging Face
地址:https://huggingface.co/moka-ai/m3e-large

接入 M3E 向量模型 | FastGPT
地址:https://doc.fastai.site/docs/development/custom-models/m3e/

docker部署m3e-large-api无法启动_开发工具-CSDN问答
地址:https://ask.csdn.net/questions/8056249

docker stawky/m3e-large-api internal error · Issue #741 · labring/FastGPT
地址:https://github.com/labring/FastGPT/issues/741

本地部署的m3e-large-api不可用 · Issue #931 · labring/FastGPT
地址:https://github.com/labring/FastGPT/issues/931

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315422.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款神奇的地理数据可视化python库

在地理信息系统&#xff08;GIS&#xff09;和地理数据可视化领域&#xff0c;Python的易用性和强大的库支持使其成为处理地理数据的理想选择之一。今天我们介绍Cartopy库&#xff0c;它为地理数据可视化提供了强大的支持。无论是对于GIS专业人士还是对地理数据可视化感兴趣的初…

同事上班这样摸鱼,我坐边上咋看他都在专心写代码啊

我边上有个同事&#xff0c;我坐他边上&#xff0c;但是每天看着他都眉头紧锁&#xff0c;忙的不亦乐乎&#xff0c;但终于有一天&#xff0c;我发现了他上班摸鱼的秘诀。 我劝你千万不要学会这4招&#xff0c;要不就该不好好上班了。 目录 1 上班看电影&#xff1f; 2 上班…

<计算机网络自顶向下> Internet Protocol(未完成)

互联网中的网络层 IP数据报格式 ver: 四个比特的版本号&#xff08;IPV4 0100, IPV6 0110&#xff09; headlen&#xff1a;head的长度&#xff08;头部长度字段&#xff08;IHL&#xff09;指定了头部的长度&#xff0c;以32位字&#xff08;4字节&#xff09;为单位计算。这…

pytest测试基础

assert 验证关键字 需要pahton版本大于3.6&#xff0c;因为有个工具pip3;因为做了映射&#xff0c;所以下面命令pip3即pip pip install -U pytest -U参数可选&#xff0c;是如果已安装可更新。 如果上述demo变化 通过验证代码&#xff0c;测试环境没问题。…

接口测试-笔记

Date 2024年4月23日21:19:51 Author KarrySmile 1. 前言 因为想更加规范地开发接口&#xff0c;同时让自己测试接口的时候更加高效&#xff0c;更好地写好接口文档。所以学习黑马的《接口自动化测试》课程。链接&#xff1a;黑马程序员软件测试接口自动化测试全套视频教程&a…

MATLAB 运算符

MATLAB 运算符 运算符是一个符号&#xff0c;告诉编译器执行特定的数学或逻辑操作。MATLAB设计为主要在整个矩阵和数组上运行。因此&#xff0c;MATLAB中的运算符既可以处理标量数据&#xff0c;也可以处理非标量数据。MATLAB允许以下类型的基本运算- 算术运算符 关系运算符…

【linux】Linux第一个小程序-进度条

1. 预备知识&#xff1a;回车和换行 回车&#xff08;Carriage Return&#xff0c;CR&#xff09;&#xff1a; 在早期的机械打字机中&#xff0c;回车指的是将打字机的打印头移回到行首的操作&#xff0c;这样打印头就可以开始新的一行的打印。在ASCII编码中&#xff0c;回车用…

数据库介绍(Mysql安装)

前言 工程师再在存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 一、什么是数据库&#xff1f; 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质&#xff1a; 磁…

编译支持播放H265的cef控件

接着在上次编译的基础上增加h265支持编译支持视频播放的cef控件&#xff08;h264&#xff09; 测试页面&#xff0c;直接使用cef_enhancement,里边带着的那个html即可&#xff0c;h265视频去这个网站下载elecard,我修改的这个版本参考了里边的修改方式&#xff0c;不过我的这个…

Blender面操作

1.细分Subdivide -选择一个面 -右键&#xff0c;细分 -微调&#xff0c;设置切割次数 2.删除 -选择一个或多个面&#xff0c;按X键 -选择要删除的是面&#xff0c;线还是点 3.挤出面Extrude -选择一个面 -Extrude工具 -拖拽手柄&#xff0c;向外挤出 -微调&#xff…

Opencv | 边缘提取

目录 一. 边缘检测1. 边缘的定义2. Sobel算子 边缘提取3. Scharr算子 边缘提取4. Laplacian算子 边缘提取5. Canny 边缘检测算法5.1 计算梯度的强度及方向5.2 非极大值抑制5.3 双阈值检测5.4 抑制孤立弱边缘 二. 轮廓信息1. 获取轮廓信息2. 画轮廓 一. 边缘检测 1. 边缘的定义…

自动化爬虫工具:you-get安装与使用

Windows下的安装命令&#xff1a; pip install you-get linux下的安装命令&#xff1a; pip3 install you-get 下载完成后&#xff0c;我们可以看到如下的警告&#xff0c;意思就是这个工具并未被添加到环境变量中&#xff0c;如果我们想在命令行中直接调用&#xff0c;需要…

sql今天学习总结

排序order by&#xff08;默认升序&#xff09; order by id desc(降序排序&#xff09; order by id,number&#xff08;先按id排再按name排序&#xff09; in,not in and or 通配符 where name like "Aa%";选取所有以Aa开头的名字 like "%r" 以r结…

Matlab 使用subplot绘制多个子图,一元拟合

实现效果&#xff1a; clc; clear;filename sri.xlsx; % 确认文件路径data readtable(filename); datavalue data{:,2:end}; datavalue datavalue;fig figure(Position, [0, 0, 1500, 900]); indexString ["(a)","(b)","(c)","(d)&qu…

python自动生成SQL语句自动化

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python自动生成SQL语句自动化 在数据处理和管理中&#xff0c;SQL&#xff08;Structured …

opencv图片绘制图形-------c++

绘制图形 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>bool opencvTool::drawPolygon(std::string image_p, std::vector<cv::Point> points) {cv::Mat ima cv::imread(image_p.c_str()); // 读取图像&#xf…

国外企业使用生成式人工智能实例100

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

将游戏界面与注册/登录界面连接到一起

一、 导包 在注册页面中导入一个import subprocess包 二、 使用代码将其连接到一起 在循环中加入下面这一行代码&#xff0c;用来实现效果 subprocess.run(["python", "game代码.py"]

Linux中的vi与vim:编辑器的王者之争与深度探索

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Linux的起源与发展 2、vi与vim的历史与发展 …

符合医药行业规范的液氮罐运输和存储温度监测解决方案

API原料药、冻干物质和人体样本必须在玻璃相中以尽可能低的温度运输和存储。专门的低温容器——干式液氮罐——可通过液氮&#xff08;LN2&#xff09;将温度保持在-196 C。由于温度极低&#xff0c;低温容器的温度数据监测不仅具有挑战性&#xff0c;而且还需要更复杂的过程&a…