使用命令 ollama run deepseek-r1:14b 可以让Ollama运行deepseek-r1这个大语言模型。但使用 ollama run bge-m3 去运行bge-m3这个向量模型却收到了 Error: "bge-m3" does not support generate 的错误提示。那么Ollama到底能运行向量模型吗?
答案是肯定的:Ollama可以运行向量模型。Ollama运行起来后,可以通过向Ollama server发送把文本(Does Ollama support embedding models?)向量化的REST API请求来验证这一点。
- 使用Ollama原生的REST API
curl http://localhost:11434/api/embed -d '{
"model": "bge-m3",
"input": "Does Ollama support embedding models?"
}'
我们能收到如下的响应
{"model":"bge-m3","embeddings":[[-0.026484825,...,0.0074991593]],"total_duration":1359942167,"load_duration":1293536042,"prompt_eval_count":9
- 使用OpenAI兼容的REST API
curl http://localhost:11434/v1/embeddings -d '{
"model": "bge-m3",
"input": "Does Ollama support embedding models?"
}'
我们能收到如下的响应
{"object":"list","data":[{"object":"embedding","embedding":[-0.026484825,...,0.0074991593],"index":0}],"model":"bge-m3","usage":{"prompt_tokens":9,"total_tokens":9}}
那么,为什么不能通过 ollama run 的方式运行向量模型呢?因为向量模型的使用一定需要一个文本作为参数。执意要使用 ollama run 方式运行向量模型的话,命令的使用应该是 ollama run bge-m3 "Does Ollama support embedding models?" ,但看起来Ollama维护团队还没有支持这种用法的打算。
从Ollama运行原理角度去分析,当我们使用 ollama run bge-m3 时,Ollama server会收到/api/generate的REST API请求,之后Ollama会去检查命令行中提供的模型是否具备generate的能力(capability)。向量模型是不支持文本生成能力的,所以我们自然会收到文章开头提到的错误提示了。
向量模型的这个特殊性在当前AI生态的其他地方也有所体现。比如One API这个开源API网关就无法测试向量模型的是否可用
当我们去点击测试按钮去测试Ollama-bge-m3这个向量模型时,就会收到错误提示。当然One API在这个页面里也明确说明了渠道测试仅支持chat模型,相信后续随着版本的演进,这个功能也会完善起来。这里补充一下,虽然One API里无法测试向量模型,使用One API仍然可以代理向量模型的使用。
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。