【业余玩儿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

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

三频BE12000国补到手2549元! ROG 魔盒Pro WIFI7电竞AI路由器上架

《三频BE12000国补到手2549元!ROG魔盒ProWIFI7电竞AI路由器上架》近日,华硕带来了ROG魔盒ProWIFI7电竞AI路由器(ROGSTRIXGR7Pro),目前新... 华硕推出了ROG 魔盒Pro WIFI7电竞AI路由器(ROG STRIX GR7 Phttp://www.cppcn

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤