FastGPT部署接入 M3E和chatglm2-m3e文本向量模型

时间:2024-10-25 07:13:52

前言

FastGPT 默认使用了 openai 的 embedding 向量模型,如果你想私有部署的话,可以使用 M3E 向量模型进行替换。M3E 向量模型属于小模型,资源使用不高,CPU 也可以运行。下面教程是基于 “睡大觉” 同学提供的一个的镜像。

部署镜像

m3e-large-api

镜像名: stawky/m3e-large-api:latest
国内镜像/fastgpt_docker/m3e-large-api:latest 端口号: 6008 环境变量:

chatglm2-m3e

镜像名: stawky/chatglm2-m3e:latest
国内镜像名: /fastgpt_docker/chatglm2-m3e:latest
端口号: 6006

设置安全凭证(即oneapi中的渠道密钥)
默认值:sk-aaabbbcccdddeeefffggghhhiiijjjkkk
也可以通过环境变量引入:sk-key。有关docker环境变量引入的方法请自寻教程,此处不再赘述。

docker部署

m3e-large-api

docker run -itd --name m3e-large-api  -p 6008:6008  --restart=always stawky/m3e-large-api:latest
  • 1

显卡模式启动(阿里镜像)

docker run  -itd --name m3e-large-api -p 6008:6008 --gpus all --restart=always /fastgpt_docker/m3e-large-api:latest
  • 1
  • 添加参数 --gpus all
  • 常见问题 Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
    解决办法如下:
# 设置稳定版仓库和GPG密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L /nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L /nvidia-docker/$distribution/ | sudo tee /etc/apt//

# 安装nvidia-docker2和重启Docker服务
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

- Docker配置: 检查Docker守护程序的配置文件(通常是 /etc/docker/),确保有正确的配置来启用GPU支持。添加类似以下内容(如果尚未包含):

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

chatglm2-m3e

docker run -itd --name chatglm2-m3e  -p 6006:6006  --restart=always stawky/chatglm2-m3e:latest
  • 1

接入 One API

添加一个渠道,参数如下:
在这里插入图片描述

  • 接入fastgpt时,模型名必须为m3e且fastgpt向量模型配置也必须为m3e,默认密匙为sk-aaabbbcccdddeeefffggghhhiiijjjkkk

测试

curl 例子:

curl --location --request POST 'https://domain/v1/embeddings' \
--header 'Authorization: Bearer xxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
  "model": "m3e",
  "input": ["laf是什么"]
}'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Authorization 为 sk-key。model 为刚刚在 One API 填写的自定义模型。

接入 FastGPT

修改 配置文件,在 vectorModels 中加入 M3E 模型:

"vectorModels": [
    {
      "model": "text-embedding-ada-002",
      "name": "Embedding-2",
      "price": 0.2,
      "defaultToken": 500,
      "maxToken": 3000
    },
    {
      "model": "m3e",
      "name": "M3E(测试使用)",
      "price": 0.1,
      "defaultToken": 500,
      "maxToken": 1800
    }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

测试使用

  • 创建知识库时候选择 M3E 模型。

注意,一旦选择后,知识库将无法修改向量模型。
在这里插入图片描述

  • 导入数据

  • 搜索测试
    在这里插入图片描述

  • 应用绑定知识库

  • 在这里插入图片描述

注意,应用只能绑定同一个向量模型的知识库,不能跨模型绑定。并且,需要注意调整相似度,不同向量模型的相似度(距离)会有所区别,需要自行测试实验。