嘘~ 正在从服务器偷取页面 . . .

【AI大模型应用学习笔记】Windows11系统本地部署Dify并构建RAG系统方案


一、环境准备

1.1 安装git工具

1.2 安装docker

1.2.1 下载 Docker Desktop

  • 访问 Docker 官网:https://www.docker.com/
  • 点击页面上的“Download for Windows - AMD64”按钮,以下载适用于 Windows 系统的 Docker Desktop 安装文件。

1.2.2 安装 Docker Desktop

  • 双击下载的安装文件,开始安装 Docker Desktop。
  • 按照安装向导的指示完成安装。在安装过程中,将提示安装 WSL 2,建议勾选此选项以获得更好的性能。

1.2.3 配置 Docker Desktop

  • 安装完成后,启动 Docker Desktop

  • 首次打开时,将出现 Docker 订阅协议,点击 Accept(接受)以继续。

  • 随后,系统将提示用户登录。您可以选择使用 GitHub 账户或 Google 账户登录,若无上述账户,可选择跳过登录步骤。

  • 接下来,将出现调查问卷,您可以根据个人喜好选择填写,或直接跳过此步骤。

1.3 汉化 Docker Desktop(可选)

若想使 Docker Desktop 显示中文界面,按照以下步骤进行汉化:

1.3.1 下载对应版本的中文语言包:

  • 访问 GitHub,下载适用于 Docker Desktop 的中文语言包,Windows系统下下载app-Windows-x86.asar 包即可,链接地址为:DockerDesktop-CN
  • 将下载的文件移动到 C:\Program Files\Docker 目录下(即 Docker 的安装根目录)。

1.3.2 检查 Docker Desktop 版本:

  • 启动 Docker Desktop,版本号将在右下角显示。

1.3.3 备份并替换 app.asar 文件:

  • 打开 Docker Desktop 中文语言包,选择与您 Docker 版本相符的 app.asar 文件并复制。
  • 导航至 Docker 的安装目录,路径默认为:
    C:\Program Files\Docker\Docker\frontend\resources
  • 在该目录下找到 app.asar 文件,建议先备份原文件,然后将复制的中文语言包中的 app.asar 文件粘贴并替换原有文件。

1.3.4 重新启动 Docker Desktop:

  • 完成替换后,请关闭 Docker Desktop,然后重新启动该程序。此时,Docker Desktop 应该以中文界面显示。

二、 Dify本地部署步骤详解

先运行我们安装的docker Desktop软件

2.1 克隆dify本地,输入命令(科学上网环境自备):

git clone https://github.com/langgenius/dify.git

**2.2 使用Docker一键部署(推荐新手)

进入dify/docker目录,打开终端,输入命令:

cd dify/docker
cp .env.example .env
docker-compose up -d  # 启动中间件(PostgreSQL/Redis/Weaviate)
  • 验证服务:访问http://localhost/apps,首次需设置管理员账号。
    如果成功部署,终端出现内容如下:
[+] Running 12/12
 ✔ Network docker_default             Created                              0.4s
 ✔ Network docker_ssrf_proxy_network  Created                              0.1s
 ✔ Container docker-db-1              Healthy                              3.2s
 ✔ Container docker-redis-1           Starte...                            1.9s
 ✔ Container docker-web-1             Started                              1.2s
 ✔ Container docker-ssrf_proxy-1      S...                                 2.5s
 ✔ Container docker-sandbox-1         Star...                              2.5s
 ✔ Container docker-weaviate-1        Sta...                               2.5s
 ✔ Container docker-plugin_daemon-1   Started                              4.3s
 ✔ Container docker-api-1             Started                              4.1s
 ✔ Container docker-worker-1          Start...                             4.2s
 ✔ Container docker-nginx-1           Starte...                            4.9s

如果出现报错,我们打开Docker,在设置的Docker 引擎 里面,一个json配置文件的入口,我们在里面添加下面内容开启国内镜像加速:
方法一:

{
  "registry-mirrors": [
      "https://docker.1ms.run",
      "https://docker.xuanyuan.me"
    ],
  "proxies": {
    "default": {
      "httpProxy": "http://127.0.0.1:7890",
      "httpsProxy": "http://127.0.0.1:7890",
      "noProxy": "localhost,127.0.0.1,registry-1.docker.io,docker.io,docker.1ms.run,docker.xuanyuan.me"
    }
  }
}

方法二:

{
  "proxies": {
    "default": {
      "httpProxy": "http://host.docker.internal:7890",
      "httpsProxy": "http://host.docker.internal:7890",
      "noProxy": "localhost,127.0.0.1,.local,host.docker.internal"
    }
  }
}

重新启动Docker,然后重新进入dify/docker目录执行命令:

docker-compose up -d

如果需要重启所有服务,可以执行命令:

docker-compose -f docker/docker-compose.yaml down && docker-compose -f docker/docker-compose.yaml up -d

三、接入 Ollama 部署的本地模型

Ollama 是一款跨平台推理框架客户端(MacOS、Windows、Linux),专为无缝部署大型语言模型(LLM)(如 Llama 2、Mistral、Llava 等)而设计。通过一键式设置,Ollama 可以在本地运行 LLM,将所有交互数据保存在自己的机器上,从而提高数据的私密性和安全性。

下载并启动 Ollama

  1. 下载 Ollama
    访问 Ollama 下载页,下载对应系统 Ollama 客户端。

  2. 运行 Ollama 并与 Llama3.2 聊天

    ollama run llama3.2

    启动成功后,ollama 在本地 11434 端口启动了一个 API 服务,可通过 http://localhost:11434 访问。
    如需运行其它模型,访问 Ollama Models 了解详情。

  3. 在 Dify 中接入 Ollama

    在 设置 > 模型供应商 > Ollama 中填入:

    • 模型名称:llama3.2

    • 基础 URL:http://<your-ollama-endpoint-domain>:11434
      此处需填写 Ollama 服务地址。这里分几种情况:

      • 若 Dify 为 Docker 部署,建议填写局域网 IP 地址,例如:
        http://192.168.1.3:11434 或 Docker 容器的内部 IP 地址,例如:http://host.docker.internal:11434
      • 若为本地源码部署,可填写 http://localhost:11434
    • 模型类型:对话

    • 模型上下文长度:4096
      模型的最大上下文长度,若不清楚可填写默认值 4096。

    • 最大 token 上限:4096
      模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。

    • 是否支持 Vision:
      当模型支持图片理解(多模态)勾选此项,如 llava

    • 是否支持函数调用:

    点击 “保存” 校验无误后即可在应用中使用该模型。

    Embedding 模型接入方式与 LLM 类似,只需将模型类型改为 Text Embedding 即可。

  4. 使用 Ollama 模型

    进入需要配置的 App 提示词编排页面,选择 Ollama 供应商下的 llava 模型,配置模型参数后即可使用。也可以配置你自己在Ollama中下载的模型

四、使用Dify构建RAG

4.1 ollama安装 Embedding 模型

通过 ollama 来安装Embedding模型,运行命令下载:

ollama run nn200433/text2vec-bge-large-chinese

4.2 在 Dify 中接入 Ollama

在 设置 > 模型供应商 > Ollama 中填入:
设置同上面添加大模型一样,只需要在选择模型类型时选:Text Embedding

4.3 知识库创建

进入Dify知识库界面,点击创建知识库

进入界面后,我们对知识库进行一个基础设置:

知识库配置好后,我们就可以在我们创建的应用下引用我们的知识库

问题记录

系统环境:
WSL2-Ubuntu22.04 + docker desktop + dify

dify添加 OpenAI API Key没有反应

docker容器中日志:

2025/05/14 10:53:50 run.go:132: [ERROR]plugin langgenius/openai:0.0.22 exited with error: exit status 1

0453ede311196acaad0531ad9e3d5561cd622e6508cd3254/main.py", line 7, in <module>

plugin = Plugin(DifyPluginEnv())

^^^^^^^^^^^^^^^

File "/app/storage/cwd/langgenius/openai-0.0.22@fa668d0ec3b434270453ede311196acaad0531ad9e3d5561cd622e6508cd3254/.venv/lib/python3.12/site-packages/pydantic_settings/main.py", line 176, in __init__

super().__init__(

File "/app/storage/cwd/langgenius/openai-0.0.22@fa668d0ec3b434270453ede311196acaad0531ad9e3d5561cd622e6508cd3254/.venv/lib/python3.12/site-packages/pydantic/main.py", line 253, in __init__

validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

pydantic_core._pydantic_core.ValidationError: 1 validation error for DifyPluginEnv

REMOTE_INSTALL_URL

Field required [type=missing, input_value={'INSTALL_METHOD': 'local'}, input_type=dict]

For further information visit [https://errors.pydantic.dev/2.11/v/missing⁠](https://errors.pydantic.dev/2.11/v/missing)

docker容器中API容器日志:

2025-05-14 11:00:50.513 ERROR [Dummy-2] [app.py:875] - Exception on /console/api/workspaces/current/model-providers/langgenius/openai/openai [POST]

Traceback (most recent call last):

File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request

rv = self.dispatch_request()

^^^^^^^^^^^^^^^^^^^^^^^

File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request

return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/app/api/.venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper

resp = resource(*args, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^

File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view

return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]

文章作者: 墨宇Logic
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 墨宇Logic !
  目录