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

相关文章

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo