AI 推理

  • AI 推理 > 最佳实践 > 基于 Web 客户端搭建 DeepSeek-R1 + 私有知识库

    基于 Web 客户端搭建 DeepSeek-R1 + 私有知识库

    最近更新时间: 2025-03-05 18:28:42

    自2月7日,七牛云官宣全面集成 deepseek-r1模型以来,我们用户最关心的问题是:“如何搭建我们公司的知识库啊?”
    为此,七牛工程师结合实战经验,从易搭、易用、实惠等角度出发,整理了一份部署建议:申请七牛云云主机 -→ 部署ollama/vllm deepseek-r1模型 +open-webui 服务 -→ 基于openwebui创建您的知识库 -→ 实现RAG(增强检索生成)。

    按照本方案提供的方式完成部署后,会在云服务器上搭建一个如下图所示的运行环境。实际部署时,您可根据具体的资源规划调整部分配置。

    截屏2025-02-19 17.05.35.png

    下面,详细介绍下deepseek-r1模型的部署和基于open-webui的知识库构建。

    一、部署deepseek-r1 + open-webui

    1. docker镜像一键部署:open-webui + deepseek-r1模型

    
    # 启动镜像 将会从指定服务器中下载镜像 并运行一个容器 在浏览器地址栏输入<IP>:8000即可访问到open-webui的网页界面
    # 初次运行容器时 需要等待模型下载完毕后 才能开始正常对话
    # 7B模型
    docker run --gpus all -p 8000:8080 -it registry-aigc.qiniu.io/miku-aigc/deepseek7b_ollama_lite_openwebui:0.2.0
     
    # 8B模型
    docker run --gpus all -p 8000:8080 -it registry-aigc.qiniu.io/miku-aigc/deepseek8b_ollama_lite_openwebui:0.2.0
     
    # 14B模型
    docker run --gpus all -p 8000:8080 -it registry-aigc.qiniu.io/miku-aigc/deepseek14b_ollama_lite_openwebui:0.2.0
     
    # 32B模型
    docker run --gpus all -p 8000:8080 -it registry-aigc.qiniu.io/miku-aigc/deepseek32b_ollama_lite_openwebui:0.2.0
     
    # 70B模型
    docker run --gpus all -p 8000:8080 -it registry-aigc.qiniu.io/miku-aigc/deepseek70b_ollama_lite_openwebui:0.2.0
    

    2. 手动安装: 先部署deepseek-r1模型,后启动open-webui服务

    2.1 部署deepseek模型服务:ollama 或 vllm

    1. ollama部署方式
    # 1. 安装ollama
    curl -fsSL https://ollama.com/install.sh | sh
    
    # 2. 配置ollama ip为广播地址 (如下图所示)
    vim /etc/systemd/system/ollama.service
    Environment="OLLAMA_HOST=0.0.0.0"
    
    # 3.运行模型,以14b蒸馏模型为例,也可以其他32b、70b...模型
    ollama run deepseek-r1:14b or ollama run deepseek-r1:32b 
    

    image.png


    1. vllm部署方式
    # 安装vllm
    pip install vllm
    
    # 运行模型:
    # --api-key参数为服务访问所需的密钥,后续会用到
    # --tensor-parallel-size 参数和单机所使用的显卡数保持一致
    vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-14B --tensor-parallel-size 2 --max-model-len 32768 --enforce-eager --api-key deepseek-d-14b
    
    # 报错解决
    # 如果设备不支持bf16数据格式,需要改成fp16,添加–dtype=half 参数
    

    2.2 启动open-webui

    # 安装open-webui
    pip install open-webui
    
    # 启动open-webui
    open-webui serve
    

    浏览器输入<IP>:<PORT>,进入注册页面,注册管理员账户并登陆;其次,配置模型(需以管理员账户登陆),再打开配置面板:

    image.png

    2.3 open-webui配置deepseek-r1模型

    根据部署的服务为ollama还是vllm,选择相应的配置方式

    配置ollama模型

    image.png

    image.png

    配置vllm模型

    image.png

    image.png

    3. 进行对话

    docker一键部署或手动安装后,可以通过open-webui提供的web客户端直接访问达模型,进行推理,对话。

    image.png

    image.png

    二、知识库的创建和使用

    即可以通过 open-webui 提供的 web 客户端,也可以通过 API 方式使用

    2.1 基于web客户端

    2.1.1 添加知识库

    image.png
    image.png

    2.1.2 使用知识库

    方式一:用#使用对应知识库,再输入需要提问的信息

    image.png
    image.png

    方式二:新增一个绑定了知识库的模型,然后在使用时,选择对应的模型,再进行提问

    image.png

    image.png

    添加知识库前后对比如下:

    image.png
    image.png

    2.2 API方式

    为了确保安全访问 API,需要进行身份验证,从Open WebUI 中的“设置”>“帐户”获取您的 API 密钥,或者使用 JWT(JSON Web Token)进行身份验证。

    image.png

    2.2.1 获取通过 Open WebUI 创建或添加的所有模型

    # YOUR_API_KEY 填写上面查到的API密钥
    # localhost:8000 其中localhost改为对应的ip地址,8000改为对应的端口号
    curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:8000/api/models
    

    image.png

    2.2.2 发起聊天

    curl -X POST http://localhost:8000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
          "model": "DeepSeek-R1-UD-IQ1_M:latest",
          "messages": [
            {
              "role": "user",
              "content": "你是谁?"
            }
          ]
        }'
    

    2.2.3 添加知识库

    # 1.创建知识库并记录返回的知识库ID,记为{knowledge_id}
    curl -X POST http://localhost:8000/api/v1/knowledge/create \
    -H "Authorization: Bearer Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
            "name": "API知识库",
            "description": "通过API创建"
        }'
    
    # 2.上传外部数据文件并记录返回的文件ID
    curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Accept: application/json" \
    -F "file=@/path/to/your/file" http://localhost:8000/api/v1/files/
    
    # 3.将文件添加进知识库,用到第1步中的{knowledge_id}和第2中返回的文件ID
    curl -X POST http://localhost:8000/api/v1/knowledge/{knowledge_id}/file/add \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"file_id": "your-file-id-here"}'
    

    2.2.4 根据单个文件或者知识库进行聊天

    # 1.查询利用单个文件来增强响应,需要用到上一步中的文件ID
    curl -X POST http://localhost:8000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
          "model": "DeepSeek-R1-UD-IQ1_M:latest",
          "messages": [
            {"role": "user", "content": "你是谁."}
          ],
          "files": [
            {"type": "file", "id": "your-file-id-here"}
          ]
        }'
    
    # 2.查询利用知识集合来增强响应,需要用到上一步中的知识库ID
    curl -X POST http://localhost:8000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
          "model": "DeepSeek-R1-UD-IQ1_M:latest",
          "messages": [
            {"role": "user", "content": "你是谁."}
          ],
          "files": [
            {"type": "collection", "id": "{knowledge_id}"}
          ]
        }'
    

    image.png

    三、附录

    相关链接:

    以上内容是否对您有帮助?
  • Qvm free helper
    Close