1. dify的rag流程 dify内置的rag比较简单,主要流程如下所示: 2.Extractor 文件内容提取器 提取文件的内容。对于doc、pdf、excel、csv、markdown等不同格式的文件,使用不同的方式提取文件内容。目前存在两类解析方案: 基于 Unstructured 的文件解析方案,支持接入付费的 Unstructured 服务,部分的格式解析只有付费版本才支...
今年 Google 在大模型上的进展着实很令人惊叹,去年诸神大战的时候 Gemini 一直不温不火的,但是自从 gemini2.5 以来发生了很大改变,我自己用了一个多月的 gemini-2.5,个人体验觉得非常不错(尤其是 gemini-2.5-flash,个人感觉是真快啊!),在编写代码方面个人感觉略强于 grok3,显著强于 qwen3。 简单介绍 Gemini-cli 是 Goog...
更换起因:今天早上组长看到服务器上 weaviate 一直占用着大量的 cpu 资源,但是也不清楚它到底在干什么,正好上次探索 RAG 之后项目开始使用 milvus 了,师兄就说要不直接也把 dify 换成 milvus 好了。 查看了一下官方文档:Dify:迁移 Weaviate 向量数据到其他向量数据库,发现步骤并不复杂,其实就是更新一下.env 文件还有 docker-compose...
前言 说一下目前使用 dify 引擎搭建工作流的时候遇到的问题:把工作流打包成工具(workflow_tool)之后,工作流工具不能流式输出。这次修改的目的就是是其能够流式输出,优化体验。 改造前的问题 先讲一下目前的需求:现在我们小组主要负责的是搭建烟草领域的问数智能体,相关数据又分为销量数据、零售户数据、品牌品规数据等领域,由于每个部分的计算规则不一样,一开始想着把所有计算规则都塞到...
根据前面两小节的认识,可以发现 dify 的处理流程大概是这样的: 1234567891011121314151617181920212223workflowAppRunner.run() -> workflow_entry.run() -> GraphEngine.run() { if 流程类型 is CHAT: 使用Answer...
在上一小节简单解析了一下 dify 工作流引擎处理过程中WorkflowAppRunner -> WorkflowEntry -> GraphEngine 这几层的处理过程。然后上一节说到 WorkflowAppRunner 会先根据配置文件解析出工作流的图数据结构,用以后续的执行,这一小节就详细介绍一下这个部分。我们重点讲Graph.init 这个部分,然后由于这个部分比较复杂...
注:当前研究的 dify 版本为 0.19.1 正好最近和小组长一起在尝试修改 dify 的后台代码,希望可以将“工作流工具”改成流式输出的格式,不过任何事都得一步步来,这两天先看了一下 dify 里最核心的部分:GraphEngine,正好记录一下阅读完源码之后的一点理解。 1. 简单梳理 Workflow 部分源码结构 按照 dify 的 Readme 文件将后端服务跑起来之后,我...
%% ~~好久没写博客了,自从上月去导师公司体验早九晚五的工作生活之后,每天回来就想开躺,Obsidian都懒得开了(在此为我的懒惰道歉😭)。 不过总体说来,这一个月在项目架构、打包部署方面收获还是挺多,之前干的活基本都是堆屎造梦,当发生改动的时候很可能要修改很多东西,甚至是要重写。这一个月以来主要是对之前项目进行解耦,提前约定好各个模块的输入和输出格式,每个人可以先做自己的模块,然后我再...
线段树是一种高级数据结构,我自己刷题用这种数据结构已经很多次了,可是一旦过段时间不刷就容易忘记这个结构,因此这里做下笔记,忘记的时候方便自己回忆。 1.基础结构 线段树基础信息 OI 官网介绍:线段树介绍_OI 简单来说,线段树可以在的时间内批量修改和查询区间的值,但批量操作需要有合并性,比如批量相加,乘除,最大最小值等。其空间复杂度为,准确来说是,4 这个数字取自实践尝试所得。OI ...
1、Git init (在本地工程目录下),生成.git 文件夹 1Git init 2、上传修改的文件 1git add * (*可替换成具体要上传的文件名,*表示提交所有有变化的文件) 3、添加上传文件的描述 1git commit -m "test" (”test“为分支名) 4、(创建分支) 1git branch test 5、(切换分支) 1git checkout ...