为 Discourse AI 插件运行自建模型

Discourse AI 插件提供了可以自建的鉴黄、鉴脏、情绪分析、嵌入 4 种功能,但在使用这些功能之前,需要先运行其对应的模型。

Discourse 官方已经为这些模型打包好了 Docker 镜像,所以我们可以很轻松地在服务器上运行模型。
注意:支持中文的嵌入模型multilingual-e5-small特别占内存(在我这里容器占用了 30 G+),其他容器占用约 2 G / 个。

接下来,运行以下命令以启动 Discourse 提供的鉴脏、鉴黄、情感分析容器:

# 请先关闭 selinux,否则下载模型会出错无权限
mkdir /opt/tei-cache
docker run -itd --restart always -e "API_KEYS=xxx" --name detoxify -e BIND_HOST=0.0.0.0 -p8082:80 ghcr.io/discourse/detoxify:latest
docker run -itd --restart always -e "API_KEYS=xxx" --name nsfw -e BIND_HOST=0.0.0.0 -p8083:80 ghcr.io/discourse/nsfw-service:latest
docker run -itd --restart always --name sentiment --shm-size 1g -p 8084:80 -v /opt/tei-cache:/data ghcr.io/huggingface/text-embeddings-inference:cpu-latest --model-id cardiffnlp/twitter-roberta-base-sentiment-latest --revision refs/pr/30 --api-key xxx

其中请替换 API_KEYS 为你自己设置的密钥,以防止接口被盗用。
如果服务器位于国内导致 ghcr.io 链接速度过慢,可以修改为 ghcr.dockerproxy.com 以加速。

如果你的服务器配置满足运行嵌入模型的要求,可以运行以下命令启动 HuggingFace 提供的嵌入模型容器:

docker run -itd --restart always --name embeddings --shm-size 1g -p 8081:80 -v /opt/tei-cache:/data ghcr.io/huggingface/text-embeddings-inference:cpu-latest --model-id intfloat/multilingual-e5-large --api-key xxx

可选 3 个模型,具体见后台 ai embeddings model 配置项,中文使用multilingual-e5-large
同样需要设置--api-key以防止滥用。
如果服务器位于国内导致 HuggingFace 链接速度过慢,可以添加 -e "http_proxy=http://192.168.x.x:xxxx" -e "https_proxy=http://192.168.x.x:xxxx" 到命令中以使用代理加速。

如果运行一切正常(可通过docker logs xxx 查看容器日志),那么就可以在 Discourse 后台配置插件了。
对于 Discourse 提供的 3 个容器,配置好对应的 API 端点和密钥即可,模型可自行选择。
对于 HuggingFace 的嵌入模型,需要配置 ai hugging face tei endpointai hugging face tei api key。在下方 ai embeddings model 选择使用的模型
,需要和前面启动容器填写的模型 ID 一致。

最后,启用各功能对应的总开关即可。

还在折腾吗?

1 Like

可以考虑收集建一个敏感内容库,这种的还不只是Discourse可以用,其他的论坛聊天室都能用

测试一下回复