DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了

这边分享下raglow的agent,也就是工作流。

基础组件介绍

我们按照下图的数据介绍组件。

Begin(开始)组件

  • 启动工作流:Begin组件是工作流中的起始组件,自动出现在画布上,不能被删除。原文
  • 设置开场白或接受输入:可以设置开场白或接受用户输入的全局变量。

null

  • • 在开始节点中,我们通过2设置agent的开白场
  • • 通过点击3新增变量(需要注意的是,ragflow的变量是全局变量)
  • • 打开变量设置对话框以后,我们可以通过4设置输入框的类型

Retrieval(知识检索)组件

此组件用于从知识库中检索相关信息。选择知识库。如果没有检索到任何内容,将返回“空响应”。

    • 新增输入变量3:有两种类型的输入变量——引用和文本。引用e使用组件输出或用户输入作为数据源,Text使用固定文本作为查询。没有dify丰富,而且还有个问题,引用的时候能看到所有的变量
  • 4相似度阈值:设置用户查询与数据集中存储的块之间的相似度阈值,默认值为0.2

  • 关键词相似度权重5:设置关键词相似度在综合相似度得分中的权重,默认值为0.7,向量相似度的权重为0.3。

  • Top N6:从检索到的块中选择“Top N”块并传递给LLM,默认值为8。

  • 重排模型7:可选,如果选择了重排模型,将使用加权关键词相似度和加权重排得分进行检索,但这会显著增加系统的响应时间。

  • 知识库8:可以选择多个知识库,如果选择多个,必须保证它们使用相同的嵌入模型,否则会出现错误信息

  • 空回复9:如果没有检索到数据,回复设置的默认值

Generate(生成回答)组件

此组件用于调用LLM生成文本,请注意提示词的设置。

  • • 在生成回答组件1中,我们通过2可以修改修改组件的id

  • • 通过3调整组件使用的模型,可以选择已经配置的模型服务

    • • ragflow给了我们三组参数4用来控制模型的自由度,可以减少我们的思考
    • • 需要注意的是,我们需要关注下最大Token根据自己的业务来即可。
    • 存在惩罚(Presence penalty):鼓励模型在响应中包含更多样化的标记,默认值为0.4
    • 频率惩罚(Frequency penalty):阻止模型在生成的文本中过于频繁地重复相同的单词或短语,默认值为0.7
  • • 系统提示词6,通过提示词我们来指定模型的能力,一般会结合输入,需要注意的是ragflow不能通过{来快捷的获取变量引用

  • • 引用,主要用于多轮会话,是否引用以前的内容,12是引用多少个窗口,这个和token相结合

  • • 通过7新增变量以后,才可以在组件内使用,和dify一样

Interact(对话)组件

该组件用作机器人与人类之间的接口。它接收用户的输入并显示机器人的计算结果。

Categorize(问题分类)组件

此组件用于对文本进行分类。请指定类别的名称、描述和示例。每个类别都指向不同的下游组件。问题分类,你可以理解为是条件判断的增强,条件判断是基于具体的值,问题分类是使用大模型根据问题描述,以及示例,推导出的分类,并指向对应的流程。

  • • 引用节点输出1并不是一个结构化的输出,
  • • 模型参数的调整和生成回答一样
  • • 通过345设置大概什么情况归到这个分类。

Message (静态消息)组件

此组件用于向用户发送静态信息。您可以准备几条消息,这些消息将被随机选择。

Rewrite(问题优化)组件

此组件用于细化用户的提问。通常,当用户的原始提问无法从知识库中检索到相关信息时,此组件可帮助您将问题更改为更符合知识库表达方式的适当问题。

keyword( 关键词 )组件

该组件用于从用户的问题中提取关键词。Top N指定需要提取的关键词数量。比如用于我们之前的从数据库查询知识的场景,不用我们去处理了。

Switch(条件)组件

该组件用于根据前面组件的输出评估条件,并相应地引导执行流程。通过定义各种情况并指定操作,或在不满足条件时采取默认操作,实现复杂的分支逻辑。

null

这里可以通过引用组件的输出值作为比较条件,可以添加多个条件,且支持逻辑操作符。该组件可用于连接多个下游组件。它接收来自上游组件的输入并将其传递给每个下游组件。

null

ragflow中,有些节点的输出,只能指向一个节点,如果你需要并行操作的时候,需要添加集线器。

Template(模板转换)组件

该组件用于排版各种组件的输出。有助于将各种数据或信息源组织成特定格式,便于后续处理和展示

  • • 1、支持Jinja2模板,会先将输入转为对象后进行模版渲染
  • • 2、同时保留原使用{参数}字符串替换的方式

(循环)组件

该组件首先将输入以“分隔符”分割成数组,然后依次对数组中的元素执行相同的操作步骤,直到输出所有结果,可以理解为一个任务批处理器。 例如在长文本翻译迭代节点中,如果所有内容都输入到LLM节点,可能会达到单次对话的限制,上游节点可以先将长文本分割成多个片段,配合迭代节点对每个片段进行批量翻译,避免达到单次对话的LLM消息限制。

高级应用组件

高级应用组件主要是封装了一些能力。这些是我给它分的类,没看到官方的文档。主要以实际应用为主。这次简单的过一下功能,以及大致的用户,具体的使用还得具体使用的时候验证

null

invoke(Http)组件

该组件可以调用远程接口调用。将其他组件的输出作为参数或设置常量参数来调用远程函数。

  • • 我们可以通过1设置请求地址
  • • 请求方法2中目前只支持get、post、put三种方法
  • 3可以自定义超时时间
  • • 可以在4自定义请求头
  • • 可以通过5设置代理
  • • 通过6可以新增请求参数

通过这个invoke组件,明显感受到设计这块的人,并没有考虑其他语言的通用性,典型的python接口规范。也不知道是不是实现比较复杂。

另一个方面,对于结构化数据,我们该返回一个什么样的格式?有没有特殊的要求?未知,只能自己去摸索。

网页爬虫

该组件可用于从指定url爬取html源码。

邮箱

发送邮件到指定邮箱

ExeSQL 组件

该组件通过SQL语句从相应的关系数据库中查询结果。支持MySQL,PostgreSQL,MariaDB。

null

通过界面盲猜

GitHub 插件

该组件用于从 https://github.com/ 搜索仓库。Top N 指定需要调整的搜索结果数量。

搜索、翻译、学术

还提供了搜索、翻译、学术相关的组件,具体怎么用,只能靠盲猜。后续结合官方的示例琢磨下。

通过上面的组件,我们可以看到ragflow的交互难度,对与小白用户不友好,以前觉的腾讯元器的agent死难用,看了这个,觉的,嗯,腾讯的还行。

智能体应用

我们结合一个官方的agent示例,简单的了解下

null

img

使用客服模板创建。梳理了下示例

null

先看下整体流程

  • • 红色的线代表整个运行流程。
  • • 在这个过程中把问题也细化了
  • • 也检索到了对应的内容
  • • 一旦关闭了右侧的聊天框,再打开就没了,就体验来说和dify差的太多。

开始节点

作为交互程序,开始节点不需要设置什么。只设置好开白场即可。

问题分类

null

在每个分类下,都有对应的描述,和示例,32b的模型能流畅的运行。

null

缓解抱怨

null

细化问题

null

知识检索

null

根据知识库推导

null

发布应用

null

点击右上角的嵌入网站,我们可以看到一串html代码,我们把http连接拿到,直接在浏览器里可以访问。

总结

  • • ragflow的的官方文档相对来说还是比较欠缺的,特别是用户交互这块。
  • • ragflow的ui使用成本相对比较高,组件不知道返回什么,只能根据示例或意图推断
  • • 使用ragflow建议是有技术底子的
  • • 英文文档的描述习惯和中文还是有很大的差别的

说实话,用着有点崩溃,哈哈。

相关资料

清华DeepSeek相关资料
https://pan.quark.cn/s/5c1e8f268e02

北京大学DeepSeek相关资料
https://pan.quark.cn/s/918266bd423a

零基础使用DeepSeek
https://pan.quark.cn/s/17e07b1d7fd0

ollama的docker镜像
https://pan.quark.cn/s/e1383d4d8c1a

deepseek的模型(ollama上pull下来的)
https://pan.quark.cn/s/dd3d2d5aefb2

dify相关镜像
https://pan.quark.cn/s/093f68430c68

ragflow相关资料和模型
https://pan.quark.cn/s/aa29090b27ba

总入口(有时候会被屏蔽):
https://pan.quark.cn/s/d9539de91d14

如何零基础入门 / 学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

read-normal-img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

### RAGFlowDeepSeek集成与配置指南 #### DeepSeek概述 DeepSeek是一个基于Dify构建的本地知识库解决方案,支持通过Ollama来安装和管理文本嵌入模型。这使得用户能够在私有环境中部署先进的自然语言处理能力[^1]。 #### FastGPT/RagFlow简介 FastGPT/RagFlow专为企业级用户提供了一个高度可定制化的平台,它不仅拥有强大的检索增强生成(Retrieval-Augmented Generation, RAG)引擎,还具备工作流编排(Workflow Orchestration)功能,可以满足复杂的数据处理和服务调用需求[^2]。 #### 集成方案设计 为了实现RagFlowDeepSeek的有效结合,建议采取如下架构: - **数据层**: 利用DeepSeek作为底层的知识存储仓库; - **索引服务**: 借助于Ollama提供的向量数据库技术创建高效的语义索引; - **应用逻辑层**: RagFlow负责定义具体的查询流程以及如何组合多个API请求完成特定任务; #### 安装准备事项 确保已经按照官方指导完成了以下准备工作: - Ollama环境设置完毕并能正常运行; - 已经获取到了所需的预训练模型文件; - 成功克隆了RagFlow项目源码至开发机器上; #### 实现步骤说明 ##### 创建新的Pipeline 在`pipelines/`目录下新建Python脚本用于描述整个pipeline的工作方式: ```python from ragflow.pipelines import PipelineBuilder from ragflow.nodes.retriever.deepseek_retriever import DeepSeekRetrieverNode from ragflow.nodes.generator.text_generator_node import TextGeneratorNode def create_pipeline(): builder = PipelineBuilder() retriever_config = { "host": "<your_deepseek_host>", "port": 8090, "index_name": "example_index" } generator_config = {"model_path": "./models/pretrained_model"} pipeline = ( builder.add_node( node=DeepSeekRetrieverNode(**retriever_config), name="Retrieve Documents", ) .add_node(node=TextGeneratorNode(**generator_config), name="Generate Response") .build() ) return pipeline ``` 此处展示了怎样连接到远程主机上的DeepSeek实例,并指定要使用的索引名称。同时也指定了用来生成回复的具体模型路径。 ##### 运行测试样例 编写简单的命令行界面来进行交互式的问答会话模拟: ```python if __name__ == "__main__": from ragflow.utils.logger import setup_logger logger = setup_logger(__file__) pipe = create_pipeline() while True: query = input("Ask anything (or type 'exit' to quit): ") if query.lower() == 'exit': break try: result = pipe.run(query=query) print(f"\nAnswer:\n{result['response']}\n") except Exception as e: logger.error(e) ``` 这段代码实现了基本的人机对话循环,在其中每次输入一个问题都会触发一次完整的pipeline执行过程,最终返回由AI合成的回答内容给用户查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值