- Published on
本地知识库搭建
- Authors

- Name
- Lin Zaizai
本地知识库搭建
网页端口
localhost:3000(open-webui页)
localhost:11434(ollama监听端口)
localhost:3001(anythingllm监听端口)
前期配置
安装ollama和anythingllm
注意!ollama的模型端口为11434,anythingllm的端口为3001!后续调用api接口也要注意端口
运行模型
通过在一个终端中输入
ollama serve运行ollama服务端,若出现Error: listen tcp 127.0.0.1:11434: bind: An attempt was made to access a socket in a way forbidden by its access permissions.错误,在windows上尝试
net stop winnat net start winnat参考:

如果出现PS C:\Users\沈再安> ollama serve Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.报错,则需要windows任务栏右下角的箭头下关闭本地ollama才可以
参考:

服务端终端输出:

然后在另一个终端输入
ollama run llama3(模型名称,llama3为例)
客户端终端输出:

配置完毕后就是以下这样:

参考资料:
通过docker部署到openwrt服务器上
通过官方文档采用一键拉取镜像
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
然后运行模型
docker exec -it ollama ollama run llama2(可以换用其他小的模型)
效果如下:

更改容器重启策略,这样就可以保证容器是一直在运行的
docker update --restart always(no/on-failure/unless-stopped) open-webui(容器名)
通过api调用本地大模型
在服务器中采用curl搭配--data发送请求
curl --location 'http://localhost:11434/api/chat' --data '{ "model": "deepseek-r1:1.5b", "messages": [ { "role": "system", "content": "you are a salty pirate" }, { "role": "user", "content": "why is the sky blue" } ], "stream": false }'可以得到大模型的返回数据

在postman中采用post也可以向本地大模型发起请求,格式如下:

请求Body:
{ "model": "{{model_mistral}}", //insert any models from Ollama that are on your local machine "messages": [ { "role": "system", //"system" is a prompt to define how the model should act. "content": "you are a salty pirate" //system prompt should be written here }, { "role": "user", //"user" is a prompt provided by the user. "content": "why is the sky blue" //user prompt should be written here } ], "stream": false //returns as a full message rather than a streamed response }使用jprq进行内网穿透
jprq auth ZkZY1RG2VInDzmH6YjTRtZOu7gOcjx36XZzc确保了服务端能够提供api服务:
参考资料:
如果使用了本机下载ollma,使用docker构建openwebui,并使用bridge方式的话会导致openwebui找不到ollama的模型。要用以下代码构建host的docker容器
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always open-webui:latest
待解决的问题/疑问
modelfile怎么编写?,modelfile是不是等效于模型的微调?还是只是单纯的给模型一个前置prompt?
资料:
参考编写:
FROM llama3.1:latest(模型名)/ 本地文件路径(gguf文件) TEMPLATE """ [INST] <>{{ .System }}<> {{ .Prompt }} [/INST] """ PARAMETER temperature 1.0 PARAMETER top_k 100 PARAMETER top_p 1.0 PARAMETER stop "[INST]" PARAMETER stop "[/INST]" PARAMETER stop "<>" PARAMETER stop "<>" SYSTEM """ 你是一只会说话的猫,回答问题之前都会喵一声。 """命令执行
ollama create 模型名 -f 文件名
一般的大语言模型流程
主要的流程为 下载(一般为safetensor文件)- 微调 (通过Llama factory 或者 perf包基于自己的数据进行微调)- 合并 (将自己微调的权重和原本的大模型的权重进行合并merge)- 量化(就是降低模型的大小,方便部署) - 部署(利用ollama或者LM Studio)