【业余玩儿AI】【文档问答】实操记录0825 - 本地Dify知识库Demo

本文主要是介绍【业余玩儿AI】【文档问答】实操记录0825 - 本地Dify知识库Demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

电梯

  • 前文回顾
  • 准备: 模型
  • 启动Dify
  • 配置模型
  • 准备知识库
  • 搭建Dify知识库问答
  • 小体会

前文回顾

这里书接上文,上文说到:经过一番折腾本地部署的Dify链接上了Ollama,准备开始在Dify上实现文档问答.
继续记录本地Dify文档问答的过程.很多小坑和试错不经意间就过去了,文章里面只能记录最必要的信息,所谓理论联系实际,实践出真知,有需要的需要自己动手搓一遍.

准备: 模型

全流程涉及到三种模型,LLM(chat),Rerank和Embeding模型, Dify和它的应用配置会需要这些模型的APIKEY.下
关于这三种模型面是我最近的一点认识(毕竟是从0开始学习,这点认识难免是粗浅的)

  1. Remark模型,用来从分段好的知识库种进行检索出和问题最相关的分段
  2. Embedding,把问题和索引出来的结果嵌入到知识库
  3. LLM Chat类的模型,就是用来从知识库里面拉去信息进行对话
    如果只是测试,Remark和Embedding两种模型在Jina传送门都是可以白剽到APIKey的,亲测是可用的;LLM除了本地的Ollama,还有很多LLM是每天都有免费token额度的,用来学习一点儿问题都没有,我就用了google的gemini的apikey.

启动Dify

之前通过docker部署好了Dify,启动它,从localhost/install进行访问,以后会自动跳转.
在这里插入图片描述

配置模型

进入之后,点击右上角用户名称,下拉菜单里面点击设置
在这里插入图片描述
设置页面左上角点击模型供应商,页面里面要在右侧自己配.
在这里插入图片描述

准备知识库

在DIfy主页上面点击知识库,然后左边点创建知识库.右边这个是我已经建好的.
在这里插入图片描述
创建知识库页面点击下面创建一个新的知识库
在这里插入图片描述
输入完知识库名称进入新知识库的准备界面,我输入的是Demo
在这里插入图片描述
点击下面的添加文件或者右边的加号都可以添加文件,文件支持拖拽,文件添加完点击下面下一步
在这里插入图片描述
配置分段和清洗, 我这里选了的右侧经济的索引方式.
在这里插入图片描述
下面检索设置的向量检索这里,下面有一行蓝色的知识库设置,可以现在设置也可以上传文件之后再设置,我是在上传之后设置的.
点击保存并处理,点击之后要稍等一会儿在知识库页面才会出现文件.
通过主页进入知识库,选中刚才新建的知识库,进入
在这里插入图片描述
点击左边的设置, 这里因为用的是白剽的rerank和embeding模型,所以可以厚着脸皮选择左侧的高质量,选中之后配置下面的embedding模型,下面检索设置这里选择混合检索,点击rerank模型,这里选择好rerank模型.
在这里插入图片描述
点击保存. 这样知识库就就绪了.
不放心可以回到知识库,点击左侧的召回测试,从你的文档里面复制粘贴一段内容,发送之后会在右侧预览召回的片段.

搭建Dify知识库问答

会到主页,选择工作室页面,点击从应用模板创建
在这里插入图片描述
这里会看到很多已经存在的工作流Demo,我选择了Knowledge Retreival+Chat这个,和我的目标非常相近.
在这里插入图片描述
开始配置,可以看到右上角有个黄色的标注1,这个是配置检查,有错误会在这里查看具体是什么问题.先不管.
在这里插入图片描述
Start这个不需要修改.点击第二个节点Knowledge Retrieval,这里按照下图123顺序添加好知识库.
在这里插入图片描述
然后会自动跳出来召回设置,配置rerank模型就好了.配置完上面那个黄色的标志1就没了.之前就是因为这个召回的配置里面rerank模型是空的所以检查有错误.
在这里插入图片描述
接下来配置第三节点,LLM,按照下图顺序进行配置,LLM模型那按照各自的情况选择:在这里插入图片描述
选好LLM模型之后会自动跳出来模型的参数配置. 参数的边上悬浮可以看到参数的意义.
在这里插入图片描述
配置完了之后,可以看到右侧system这里,实际是permote里面system部分的消息.我配置的这个流程主要是为了快速了解AESQ100的相关内容, 然后输出的内容我需要是mark down格式,后面可以复制了直接粘贴到文件,然后再找个AI工具做成PPT,所以作为了微调,如下:

You are a helpful assistant and an expert in AEC_Q100, answer questions from user about AEC_Q100 testing.
Use the following context as your learned knowledge, inside <context></context> XML tags.
<context>
{{#context#}}
</context>
When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question in markdown format.

最后第四节点,answer这里是不需要调整的. 最后点击右上角发布,按照顺序点.这里要注意左侧那个标志,里面会对配置进行检查,如果有问题会用黄色标志进行提示.
在这里插入图片描述
点击运行会直接进入chat界面. 这个页面的链接可以保存, dify运行的前提下是可以直接进入的.
在这里插入图片描述

小体会

  1. 本来目标是做文档问答的,是希望把每个文档都进行提炼,然后做个PPT. 但是这个应用作为知识库问答的工具, 会根据问题在整个知识库里面搜索和回答. 为了缩小它的搜索范围,我每次只在知识库里面启用1个文档,然后只问关于这个文档的问题.
  2. 关于模型的参数, 自己的理解:TopK是 检索结果按照匹配程度排序并筛出最匹配的数量, Score是个认为相似的阈值, 温度是模型思维发散程度,越小回答越接近原始信息, TOPP类似,越小越确定.
  3. 模型,整个应用涉及的模型至少有三个,最后的结果和每个模型的性能都是有关系的.想要达到合适的效果,还是要画些精力来了解模型的.
  4. 应用流程, 当然整个应用的流程也是必须要了解清楚的, 从而可以更清楚应用对模型的需要.
  5. 读了Dify的帮助文档, 对我这种目标远大的小卡拉米来说算是很有价值的学习资料.

.
.
.
D:\mybin>python “D:\mybin\PythonScripts\getdays.py”


Since I started self-learning AI, it has been 13 days already. Keep going!

这篇关于【业余玩儿AI】【文档问答】实操记录0825 - 本地Dify知识库Demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE