开源RAG,本地mac启动 dify源码服务

一、Dify文档

参考官方文档来操作,基本没太大的问题。一些细节,我在本篇文章中补充了出来。

这篇文章主要讲以源码的方式启动后端服务,前端服务使用容器启动。

dify 文档地址

欢迎使用 Dify | 中文 | Dify

Dify 本地源码部署文档(有本地源码部署,我们才能在源码上继续做修改)

本地源码启动 | 中文 | Dify

二、写在前边

先知道要花费多少资源

这里docker 容器,占用了8个G的内存!

三、本地源码跑dify (后端)

# 创建名为 dify 的 Python 3.10 环境

conda create --name dify python=3.10

# 切换至 dify Python 环境

conda activate dify

3.1 拉取代码

可以进入到自己的代码常用目录,再拉取代码

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

进入到dify目录可以看到

请记住web 和 api的路径,后边会用到

3.2 安装dockerdesk

Mac 使用本地源码的方式运行,也需要先安装docker。安装docker 是因为dify 需要以docker容器的方式来运行 PostgresSQL / Redis / Weaviate

接着上一步从git上拉取的代码,先进入到dify目录,再进入到docker目录,然后使用docker compose来启动这些依赖的容器。

3.3 以docker的方式启动dify所需的数据库等服务

cd docker

docker compose -f docker-compose.middleware.yaml up -d

可以看到在拉取

拉取成功

看到有这些容器在运行

3.4 本地源码启动

分为前端和后端,并不一定都需要。例如只想调试后端,可以把前端以docker的方式来运行。不要安装前端那些环境。

启动步骤

3.4.1 进入 api 目录


cd api

3.4.2 复制环境变量配置文件


cp .env.example .env



3.4.3 生成随机密钥,并替换 .env 中 SECRET_KEY 的值



openssl rand -base64 42

得到一个密钥

复制密钥,vim .env文件

修改SECRET_KEY=生成等密钥

3.4.4 安装依赖

这里下载依赖的时候,使用阿里的源会更快一些。速度从几十kb直接到数10M
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

3.4.5 执行数据库迁移将数据库结构迁移至最新版本

flask db upgrade

3.4.5 启动服务

flask run --host 0.0.0.0 --port=5001 --debug

启动有一个警告错误,先不用处理,不影响。

3.4.6 启动 Worker 服务

用于消费异步队列任务,如数据集文件导入、更新数据集文档等异步操作。 Linux / MacOS 启动:

复制

celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail --loglevel INFO

如果使用 Windows 系统启动,请替换为该命令:

复制

celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail --loglevel INFO

正确输出:

复制

 -------------- celery@TAKATOST.lan v5.2.7 (dawn-chorus)
--- ***** ----- 
-- ******* ---- macOS-10.16-x86_64-i386-64bit 2023-07-31 12:58:08
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         app:0x7fb568572a10
- ** ---------- .> transport:   redis://:**@localhost:6379/1
- ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- -------------- [queues].> dataset          exchange=dataset(direct) key=dataset.> generation       exchange=generation(direct) key=generation.> mail             exchange=mail(direct) key=mail[tasks]. tasks.add_document_to_index_task.add_document_to_index_task. tasks.clean_dataset_task.clean_dataset_task. tasks.clean_document_task.clean_document_task. tasks.clean_notion_document_task.clean_notion_document_task. tasks.create_segment_to_index_task.create_segment_to_index_task. tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task. tasks.document_indexing_sync_task.document_indexing_sync_task. tasks.document_indexing_task.document_indexing_task. tasks.document_indexing_update_task.document_indexing_update_task. tasks.enable_segment_to_index_task.enable_segment_to_index_task. tasks.generate_conversation_summary_task.generate_conversation_summary_task. tasks.mail_invite_member_task.send_invite_member_mail_task. tasks.remove_document_from_index_task.remove_document_from_index_task. tasks.remove_segment_from_index_task.remove_segment_from_index_task. tasks.update_segment_index_task.update_segment_index_task. tasks.update_segment_keyword_index_task.update_segment_keyword_index_task[2023-07-31 12:58:08,831: INFO/MainProcess] Connected to redis://:**@localhost:6379/1
[2023-07-31 12:58:08,840: INFO/MainProcess] mingle: searching for neighbors
[2023-07-31 12:58:09,873: INFO/MainProcess] mingle: all alone
[2023-07-31 12:58:09,886: INFO/MainProcess] pidbox: Connected to redis://:**@localhost:6379/1.
[2023-07-31 12:58:09,890: INFO/MainProcess] celery@TAKATOST.lan ready.

四、用docker的方式启动前端

4.1 文档

单独启动前端 Docker 容器 | 中文 | Dify

作为后端人员,如果不需要前端源码启动,那就可以以docker的方式来启动!

4.2 本地构建镜像

我是用本地代码来构建的镜像,耗时挺长,第一次738s!

这里看一下构建好的镜像

docker images

4.3 docker启动前端

docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 dify-web

容器启动的结果

4.4 这里访问前端项目

本地访问 http://127.0.0.1:3000

五、起停服务汇总

后端

数据库等服务,以docker容器的方式启动

后台服务

flask run --host 0.0.0.0 --port=5001 --debug

启动worker服务

..

前端服务,以docker启动

docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 dify-web

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解读伊朗发布的直升机事故调查报告?一般事故调查报告应怎么写?

如何解读伊朗发布的直升机事故调查报告?一般事故调查报告应怎么写? 据央视新闻客户端消息:当地时间5月23日,伊朗武装部队总参谋部发布首份已故总统莱希及其随行人员乘坐的直升机事故调查报告。以下是#李秘书讲写作#对报告内容的解…

基于微信的家庭理财管理小程序的设计与实现(论文+源码)_kaic

摘 要 随着中国经济的飞速发展,家庭收入不断增高,人们的消费除了简单的维持日常生活之外,还有其他的消费方式,比如旅游、电商购物等,层出不穷的消费方式带给人快乐的同时,也常常让一些人逐渐无法把握住自…

【LeetCode】每日一题 2024_5_24 找出最具竞争力的子序列(栈,模拟,贪心)

文章目录 LeetCode?启动!!!题目:找出最具竞争力的子序列题目描述代码与解题思路 每天进步一点点 LeetCode?启动!!! 题目:找出最具竞争力的子序列 题目链接&a…

广义线性chirplet变换【附MATLAB代码】

文章来源:微信公众号:EW Frontier 摘要 时频分析方法是一种刻画信号时变特征的有效工具,在相当长的一段时间内受到了广泛的关注。随着TF算法的发展,许多先进的方法被提出,可以提供更精确的TF结果。但是,不…

【LabVIEW FPGA入门】使用事件发生函数同步FPGA循环

1.使用事件发生函数 使用 Occurrences 函数来控制单独的同步活动。特别是,当您希望程序框图的一部分等待程序框图的另一部分完成任务而不强制 LabVIEW 进行轮询时,请使用这些函数。 您可以使用全局变量执行类似于occurrences函数的功能,通过一…

详解CSS(二)

目录 1.背景属性 1.1背景颜色 1.2背景图片 1.3背景平铺 1.4背景位置 1.5背景尺寸 2.圆角矩形 3.元素的显示模式 3.1行内元素/内联元素(Inline element) 3.2块级元素(Block-level element) 3.3行内块元素(In…

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II 1 题目介绍2 个人解题思路2.1 代码2.2 思路 3 官方题解 1 题目介绍 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组…

d20(184-190)-勇敢开始Java,咖啡拯救人生

目录 网络通信 网络通信三要素(IP地址,端口号,协议 IP地址 InetAddress 端口号 协议 传输层的两个通信协议 UDP通信 java.net.Datagramsocket类 客户端 服务端 UDP通信多收多发 客户端 服务端 TCP通信 java.net.Socket类 客…

【全网最全】2024电工杯数学建模A题21页初步参考论文+py代码+保奖思路等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模A题21页初步参考论文py代码保奖思路等(后续会更新成品论文)「首先来看看目前已有的资料&#x…

企业应考虑的优秀云安全措施

作为云客户,企业有责任确保正确使用他们提供的工具来保证数据和应用程序的安全。让德迅云安全来跟大家一起研究一些典型企业应该考虑的优秀云安全措施。 在数据安全和隐私方面,企业是否在努力跟上疫情的发展?企业不是一个人。就像多年以前,C…

解决小皮面版搭建php网站数据库连接不了

首先进入mysql bin目录下 并执行cmd mysql -u root -pCREATE USER userlocalhost IDENTIFIED BY pass;GRANT ALL PRIVILEGES ON *.* TO userlocalhost;GRANT SELECT, INSERT, UPDATE ON database_name.* TO xxwlocalhost;FLUSH PRIVILEGES;select host ,user from mysql.user…

DOS学习-目录与文件应用操作经典案例-del

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统的del命令是一个用于删除文件的命令行工具。以下…

使用公共Wi-Fi所面临的风险有哪些

尽量不要使用公共wifi做转账、支付、修改密码等金融性或私密性的操作。公共Wi-Fi网络存在许多风险。尽管商家可能认为他们为顾客提供了一个有价值的服务,很多人也认为在星巴克噼里啪啦的乱敲键盘非常小资,但其实这些网络的安全性可能存在极大的漏洞&…

51打开工程,发现cannot read project file问题

解决办法: 1、路径太长,可以在桌面重新创建一个文件夹,把所有的文件都移动到新的文件夹中 2、创建工程的时候,都勾选上,就没问题

OracleDG原理

一、DataGuard架构介绍 1、基本介绍 在DG环境中,至少会有两个数据库,一个数据库处于Open状态,对外提供服务,这个数据库叫做primary Database。第二个数据库处于恢复状态,叫做Standby Database。运行时Primay Databas…

vue从入门到精通(四):MVVM模型

一,MVVM MVVM(Model–view–viewmodel)是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型,但是 Vue 的设…

手机相册怎么恢复?如何挽救误删的照片?

手机相册成为我们存储和分享照片的主要途径,这些照片可能代表着我们的美好回忆、重要时刻或珍贵的瞬间。然而,有时候我们会因为误操作或一时冲动,将一些珍贵的照片误删,并且很难找回来。手机相册怎么恢复呢?本文将为你…

基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别是计算机视觉领域的一个重要研究方向,广泛应用于安全监控、身份验证、人机…

Android 性能为王时代SparseArray和HashMap一争高下

文章目录 一、SparseArray 源码分析1. **类定义和构造函数**2. **基本方法**2.1 put(int key, E value)2.2 get(int key)2.3 delete(int key)2.4 removeAt(int index)2.5 gc()2.6 size()2.7 keyAt(int index) 和 valueAt(int index) 3. **辅助方法**3.1 binarySearch() 二、使用…

最新AI智能问答创作系统ChatGPT网站源码V4.20版本,GPTs、AI绘画、AI换脸、垫图混图+(GoMaxAI系统搭建部署教程文档)

Midjourney(人工智能图像生成器),仅用了一年时间就已经火爆全球。它就像是一个想象力的助力器,总能带给人们一些不可思议的奇妙的作品。Midjourney虽然是一款最强的AI绘画工具,但对于很多人来说Midjourney怎么用&#…