基于Dify与Xinference构建企业级大模型知识库

1,075 阅读8分钟

一、构建企业级知识库的重要性

在当今数字化时代,企业知识库的构建至关重要。随着企业的发展,知识和信息不断积累,若缺乏有效的管理,很容易陷入混乱。企业知识库能够将这些零散的知识整合起来,实现知识的有序化。

AI 聊天机器人作为企业知识库的交互界面,具有诸多优势。首先,它能够提供 24小时在线服务,不受时间和地点的限制。用户可以随时随地与聊天机器人进行交流,获取所需信息,无需等待人工处理。其次,聊天机器人基于海量的数据和知识库,能够提供多领域的知识咨询。无论是在工作中遇到的专业问题,还是在学习中需要获取相关知识,聊天机器人都能及时准确地给出答案和指导。

此外,AI 聊天机器人还可以成为学习的有力辅助工具。它可以根据用户的需求提供个性化的学习计划和建议,帮助用户更好地组织学习时间和方法。同时,在情感支持方面,聊天机器人也能发挥一定的作用。当用户在工作或学习中遇到挫折、困惑或压力时,可以与聊天机器人进行沟通,获得一定的安慰和鼓励。 总之,构建企业级知识库并结合 AI 聊天机器人,能够极大地提升企业的工作效率和服务质量,为企业的发展提供有力的支持。

二、Dify 与 Xinference 简介

image.png

(一)Dify 的特点与功能

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

(二)Xinference 的优势与用途

Xinference 是一个性能强大且功能全面的分布式推理框架,在大模型部署和推理中具有显著优势。它支持多种形式的开源模型,提供了 WebGUI 界面和 API 接口,方便用户进行模型部署和推理。Xinference 可安装多种模型,包括大模型、嵌入模型、重排序模型、图像模型和语音模型等。例如,框架内置众多中英文的前沿大语言模型,如 baichuan、chatglm2 等,一键即可体验。Xinference 与 Dify 配合使用时,可以为企业知识库的构建提供更强大的支持。在 Dify 中,通过集成 Xinference 提供的模型,可以实现更高效的知识检索和处理。例如,添加 Xinference 的文本嵌入模型和重排模型,可以提高知识库的召回准确率和排序效果。同时,Xinference 的管理模型功能也为企业知识库的维护提供了便利,用户可以使用命令行列出所有支持的指定类型的模型,以及停止某个正在运行的模型。

三、构建企业级知识库的步骤

企业级知识库的构建首先需要安装基础环境。

安装Dify的方式有多种,这里介绍使用Docker Compose的方式

前提条件

安装 Dify 之前, 请确保你的机器已满足最低安装要求:

  • CPU >= 2 Core
  • RAM >= 4 GiB
操作系统软件描述
macOS 10.14 or laterDocker Desktop为 Docker 虚拟机(VM)至少分配 2 个虚拟 CPU(vCPU) 和 8GB 初始内存,否则安装可能会失败。有关更多信息,请参考 《在 Mac 内安装 Docker 桌面端》
Linux platformsDocker 19.03 or later Docker Compose 1.28 or later请参阅安装 Docker安装 Docker Compose 以获取更多信息。
Windows with WSL 2 enabledDocker Desktop我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。有关更多信息,请参阅使用 WSL 2 后端在 Windows 上安装 Docker Desktop

克隆 Dify 代码仓库

克隆 Dify 源代码至本地环境。

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

启动 Dify

  1. 进入 Dify 源代码的 Docker 目录

    cd dify/docker
    
  2. 复制环境配置文件

    cp .env.example .env
    
  3. 启动 Docker 容器

    根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档

    • 如果版本是 Docker Compose V2,使用以下命令:
    docker compose up -d
    
    • 如果版本是 Docker Compose V1,使用以下命令:
    docker-compose up -d
    

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

[+] Running 11/11
 ✔ Network docker_ssrf_proxy_network  Created                                                                 0.1s 
 ✔ Network docker_default             Created                                                                 0.0s 
 ✔ Container docker-redis-1           Started                                                                 2.4s 
 ✔ Container docker-ssrf_proxy-1      Started                                                                 2.8s 
 ✔ Container docker-sandbox-1         Started                                                                 2.7s 
 ✔ Container docker-web-1             Started                                                                 2.7s 
 ✔ Container docker-weaviate-1        Started                                                                 2.4s 
 ✔ Container docker-db-1              Started                                                                 2.7s 
 ✔ Container docker-api-1             Started                                                                 6.5s 
 ✔ Container docker-worker-1          Started                                                                 6.4s 
 ✔ Container docker-nginx-1           Started                                                                 7.1s

最后检查是否所有容器都正常运行:

docker compose ps

在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox

NAME                  IMAGE                              COMMAND                   SERVICE      CREATED              STATUS                        PORTS
docker-api-1          langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   api          About a minute ago   Up About a minute             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           About a minute ago   Up About a minute (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "sh -c 'cp /docker-e…"   nginx        About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        About a minute ago   Up About a minute (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                   sandbox      About a minute ago   Up About a minute             
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   About a minute ago   Up About a minute             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     About a minute ago   Up About a minute             
docker-web-1          langgenius/dify-web:0.6.13         "/bin/sh ./entrypoin…"   web          About a minute ago   Up About a minute             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   worker       About a minute ago   Up About a minute             5001/tcp

通过这些步骤,你应该可以成功在本地安装 Dify。

更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

同步环境变量配置 (重要!)

  • 如果 .env.example 文件有更新,请务必同步修改您本地的 .env 文件。
  • 检查 .env 文件中的所有配置项,确保它们与您的实际运行环境相匹配。您可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。

访问 Dify

你可以先前往管理员初始化页面设置设置管理员账户:

image.png

# 本地环境
http://localhost/install

# 服务器环境

http://your_server_ip/install

Dify 主页面:

# 本地环境
http://localhost

# 服务器环境
http://your_server_ip

image.png

自定义配置

编辑 .env 文件中的环境变量值。然后重新启动 Dify:

docker compose down
docker compose up -d

完整的环境变量集合可以在 docker/.env.example 中找到。

Xinference的安装可以参考这篇文章

四、总结与展望

用 Dify 与 Xinference 构建企业级知识库具有显著的优势和巨大的潜力。

首先,从功能角度来看,Dify 强大的 LLMOps 平台功能与 Xinference 全面的分布式推理框架相结合,为企业提供了从模型部署、推理到知识管理的一站式解决方案。Dify 的在线文档处理功能,如批量上传、数据分段、手动调整以及多种检索方式,配合 Xinference 的多模型支持和高效推理能力,能够极大地提高知识的存储、检索和利用效率。

其次,在实际应用中,这种组合能够满足企业不同场景下的需求。无论是为员工提供快速准确的知识查询服务,还是作为学习辅助工具和情感支持渠道,都能发挥重要作用。例如,在企业内部的项目开发中,员工可以通过与知识库交互,快速获取所需的技术文档和经验分享,提高工作效率。

展望未来,随着人工智能技术的不断发展,Dify 与 Xinference 的组合将有更广阔的发展空间。一方面,随着模型的不断优化和更新,知识库的准确性和响应速度将进一步提高。例如,新的大语言模型的出现可能会为知识库的构建和应用带来更多的可能性。另一方面,随着多模态数据的不断丰富,企业知识库将不仅仅局限于文本信息,还可以整合图像、音频等多种形式的知识,为用户提供更加全面的服务。

此外,随着企业对知识管理的重视程度不断提高,对知识库的安全性、可扩展性和个性化定制需求也将不断增加。Dify 和 Xinference 可以通过不断升级和改进,满足企业在这些方面的需求,为企业的数字化转型和创新发展提供更强大的支持。

总之,用 Dify 与 Xinference 构建企业级知识库是一种具有前瞻性和创新性的选择,将为企业的发展带来更多的机遇和挑战。