前言
目前常用的webui如下:
- AnythingLLM:文档(https://docs.anythingllm.com/),Github(https://github.com/Mintplex-Labs/anything-llm)
- Open WebUI:文档(https://docs.openwebui.com/),Github(https://github.com/open-webui/open-webui)
- Dify:文档(https://docs.dify.ai/),Github(https://github.com/langgenius/dify)
- RagFlow:文档(https://ragflow.io/docs/v0.17.0/),Github(https://github.com/infiniflow/ragflow)
下面简单归纳下这四个项目的主要区别和侧重点:
- AnythingLLM
- 定位与特点:这是一个开箱即用的一体化 AI 应用,集成了 RAG(检索增强生成)、多模型支持(如 OpenAI、LocalAI 等)以及多向量数据库支持。
- 优势:无需大量代码配置,适合快速搭建私有知识库问答系统,支持多用户协作和灵活部署(云端、本地、自托管)。
- 适用场景:企业内部快速搭建知识问答系统,特别适用于对接外部和自带大语言模型场景。
- Open WebUI
- 定位与特点:该项目以直观的 Web 界面为核心,主要用于管理和调用 LLM 模型,提供了一个前端交互平台。
- 优势:界面友好、易于上手,能快速接入外部模型,同时也支持自带模型部署,重点在于用户体验和操作简便。
- 适用场景:适合需要可视化管理 LLM 调用、对接外部 API 或自建模型的团队,帮助非技术人员也能轻松使用。
- Dify
- 定位与特点:Dify 更专注于知识库问答系统的构建,提供管理员上传文档、文档自动分段、向量化处理和对话问答等功能;同时支持分享知识库接口供其它应用使用。
- 优势:流程较完整,对文档预处理、分段和自定义工作区管理支持较好,同时支持外部模型接入和内置模型调用。
- 适用场景:适用于需要精细化管理文档内容、定制化知识库工作区的企业,尤其在数据安全和内容整理方面表现突出。
- RagFlow
- 定位与特点:RagFlow 基于 Retrieval-Augmented Generation(RAG)思路,着重于打通文档检索与生成回答的各个环节。
- 优势:模块化设计、灵活扩展,能够自定义检索策略和生成流程,提升答案的相关性和准确性。
- 适用场景:适合对问答系统有较高定制需求的企业,比如需要根据不同业务场景调整检索、排序和生成流程的场景。
总体来说,四者都是开源且可自部署的免费方案:
- 如果你追求一站式、快速上线,AnythingLLM 可能是个好选择;
- 如果更看重界面体验和操作便捷,Open-webui 能带来更直观的管理体验;
- 如果需要完善的文档处理流程和自定义工作区,Dify 在细节上更贴合企业级需求;
- 如果你需要极致定制的检索生成流程,RagFlow 的模块化设计会让你更灵活地搭建系统。
应用基本部署
AnythingLLM
拉取镜像
docker pull mintplexlabs/anythingllm:1.7.4
创建工作目录
export STORAGE_LOCATION=$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATION && \ touch "$STORAGE_LOCATION/.env" && \ chown -R 1000:1000 ${STORAGE_LOCATION} # anythingllm 1.7.4 需要设置挂载目录属主为1000,因为这是容器内的userid
启动容器
docker run -d -p 3001:3001 --cap-add SYS_ADMIN -v ${STORAGE_LOCATION}:/app/server/storage -v ${STORAGE_LOCATION}/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" docker.io/mintplexlabs/anythingllm:1.7.4
即可通过
http://localhost:3001
访问anytingllm。
Open WebUI
拉取镜像
docker pull ghcr.io/open-webui/open-webui:v0.5.18-cuda
创建挂载目录(可忽略,在容器启动时会自动创建)
docker volume create open-webui
启动容器
docker run -d -p 3000:8080 -e PORT=8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:v0.5.18-cuda # PORT 是open webui的服务端口 # OLLAMA_BASE_URL 是外部的ollama服务地址,没有可不写
Dify
这里我们需要使用 docker-compose
来部署。如需下载 docker-compose
请点击这里:https://docs.docker.com/compose/install/
clone仓库
git clone https://github.com/langgenius/dify.git --branch 1.0.0
导航到 Dify 源代码中的 Docker 目录
cd dify/docker
复制环境配置文件
cp .env.example .env
启动 Docker 容器
docker compose up -d # docker compose -f docker-compose.yaml up -d # 或 docker-compose up -d
初次启动可能会报错,原因是.env中的变量不能有空格,根据提示修改即可。
比如错误
unexpected character "%" in variable name near "%H:%M:%S\n# Log Timezone......
,是因为LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S
这个变量有空格,修改为LOG_DATEFORMAT="%Y-%m-%d %H:%M:%S"
即可。
启动成功后即通过80端口访问Dify。如果想修改默认端口号,可以通过修改 .env
配置文件来自定义访问端口。
需要修改Nginx配置:
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
RagFlow
待补充