有手就会之使用Dify构建RAG聊天应用(基于私有知识库和搜索引擎)

本文主要是介绍有手就会之使用Dify构建RAG聊天应用(基于私有知识库和搜索引擎),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前我的文章里写的是通过langchain来构建RAG应用,对于很多人来说。langchain作为一个框架上手难度大,代码不够直观。但是通过dify你将学会可视化搭建工作流。

什么是dify?

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

通俗点说,通过手机点击创建ai应用,而不用写代码了。

官网链接

阅读本文之前,假设读者已经了解llm、prompt、chatglm、git、github、docker、rag流程、向量数据(embedding)的相关知识,假如没有,可以先学习这些知识。

怎么使用dify?
安装dify
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d  
检查

输入docker ps,出现以下服务就是正常的
在这里插入图片描述
安装好之后,打开localhost:80(如果你安装在服务器或者wsl中),需要将localhost转换为对应的ip。

第一次登陆需要设置管理员账户

在这里插入图片描述

假设你已经完成了管理员的创建
创建一个llm应用

创建应用
在这里插入图片描述
在这里插入图片描述
添加llm model
在这里插入图片描述
这里我使用chat glm的在线model,读者可以根据自己的喜好添加model。
输入完secret key选择相应的model之后就可以使用了。

在这里插入图片描述
这样你就完成了dify的第一个应用!!!

是不是很简单!!!

进阶

接下来我们将使用dify搭建一个RAG聊天应用

再次创建应用

这一次我们选择工作流编排的方式创建聊天机器人
在这里插入图片描述
进去之后我们会看到一个开始模块,然后会在左下角看见几个icon,点击
在这里插入图片描述
创建完知识检索的块,之后上传你的pdf文件,然后向量化,检索的话可以使用多种方式,嫌麻烦可以默认。

在这里插入图片描述

在这里插入图片描述
这里相当于之前使用langchain的时候进行的文档加载与向量化,具体可以看下我这篇文章,langchain入门系列之六 使用langchain构建PDF解析助手

具体作用相当于这一块的代码

# 解析pdf并保存到本地向量数据库中
def save_pdf(file_path, file_name):loader = PyPDFLoader(file_path)# 分割text_spliter = RecursiveCharacterTextSplitter(chunk_size=200,chunk_overlap=5,  # 每个块之间的重叠长度length_function=len,)pages = loader.load_and_split(text_spliter)persist_path = persist_directory + file_name# 持久化到本地Chroma.from_documents(documents=pages,embedding=embedding,persist_directory=persist_path)# 加载向量索引
def load_index(file_name):persist_path = persist_directory + file_nameprint(persist_path)index = Chroma(persist_directory=persist_path, embedding_function=embedding)return index

在这里面需要注意的是查询变量,我们用的sys.query,这是最开始的输出。
在这里插入图片描述
根据文章内容测试一下,发现有内容返回,那就没问题。

创建条件流

在这里插入图片描述
json解析
在这里插入图片描述
条件分支
在这里插入图片描述

在这里插入图片描述
QA
在这里插入图片描述
QA 答案
在这里插入图片描述
duckduckgo搜索
在这里插入图片描述
搜索答案提取

在这里插入图片描述
搜索答案回复
在这里插入图片描述

小试牛刀

在这里插入图片描述
当我输入拿破仑意识到了什么时?llm根据书中内容,回复了答案。

注意的事

配置duckduckgo貌似需要科学上网,否则会超时,这里可以替换成bing。

这篇关于有手就会之使用Dify构建RAG聊天应用(基于私有知识库和搜索引擎)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131715

相关文章

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自