huggingface嵌入模型
查看嵌入模型排名
访问网址:
https://huggingface.co/spaces/mteb/leaderboard
选择中文
注意,英文的嵌入模型好,不代表 中文的向量化的效果好。
huggingface下载模型
参考:
https://zhuanlan.zhihu.com/p/663712983
推荐这样用huggingface推荐工具优雅的下载。
1 | # 下载工具,最好提前给终端开一下代理。 |
传输,这一步可能是因为服务器不能科学上网,我们把下载好的模型传到服务器中。
我这里是从MacBook 传到Linux中。
1 | tar -czvf ritrieve_zh_v1.tar.gz ritrieve_zh_v1/ |
在Linux服务器中校验
1 | cd /home/cys/data/models/embeddingModel |
模型中介(huggingface/text-embeddings-inference)
在这里可以查看使用嵌入模型的通用中介工具的相关内容:
https://github.com/huggingface/text-embeddings-inference/pkgs/container/text-embeddings-inference
配置 yml 文件
1 | cd /home/cys/docker_data/embeddingModel/ritrieve_zh_v1 |
open webUI控制页面修改
在设置、文档、中选择 “语意向量模型” ,重排模型等等修改成 ritrieve_zh_v1
检查模型是否可用
1 | curl -X POST "http://localhost:8002/embed" -H "Content-Type: application/json" -d '{ |
可能遇到的问题
报错:onnx/model.onnx does not exist
onnx/model.onnx does not exist
错误根因:ORT 后端找不到 ONNX 文件
TEI 支持 Safetensors,但生产级部署推荐 ONNX
将 Safetensors 模型导出为 ONNX
1 | # 安装 Optimum ONNX Runtime 支持: |
yml中网络问题
前文中的使用的是 一个 docker 的网络,在一台机器内部 部署了多个服务,如open webUI、 seargxn等等都是
1 | networks: |
但是事实上,在实际项目中 可以把嵌入模型部署到其他机器中,然后通过 IP:port 这样的地址加端口的方式调用,都是 容器映射到宿主机的某个端口,通过宿主机的IP 加上暴露的端口,最好配上一个 APIkey 来实现相互链接,而不是在一个 机器中使用上面的 docker network 网络。
测试能否正常使用
1 | # 假如嵌入模型部署在10.5.9.254的docker 容器中,在任意能访问10.5.9.254的机器上执行。 |
在open webUI中上传大文件问题
上传一个 5M docx 文件到知识库中, 居然花了我6个小时,我都惊了。
解决方法是docker compose 的yaml文件中改 嵌入模型 cpu 处理 为 GPU 版本来处理。
这也是我为什么推荐使用 另一台机器 部署 嵌入模型容器的原因,因为这两台机器的GPU资源 快要满了。
同时注意:
如果本地知识库上传了很大的几M 的文件 ,如果还选择了 “完整上下文模式”,很可能会导致 prompt 过大,从而出现 类似 ValueError: This model's maximum context length is 53520 tokens. However, you requested 3305318 tokens in the messages, Please reduce the length of the messages.
这样的报错。