本文主要是介绍【业余玩儿AI】【文档问答】实操记录0825 - 本地Dify知识库Demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
电梯
- 前文回顾
- 准备: 模型
- 启动Dify
- 配置模型
- 准备知识库
- 搭建Dify知识库问答
- 小体会
前文回顾
这里书接上文,上文说到:经过一番折腾本地部署的Dify链接上了Ollama,准备开始在Dify上实现文档问答.
继续记录本地Dify文档问答的过程.很多小坑和试错不经意间就过去了,文章里面只能记录最必要的信息,所谓理论联系实际,实践出真知,有需要的需要自己动手搓一遍.
准备: 模型
全流程涉及到三种模型,LLM(chat),Rerank和Embeding模型, Dify和它的应用配置会需要这些模型的APIKEY.下
关于这三种模型面是我最近的一点认识(毕竟是从0开始学习,这点认识难免是粗浅的)
- Remark模型,用来从分段好的知识库种进行检索出和问题最相关的分段
- Embedding,把问题和索引出来的结果嵌入到知识库
- 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运行的前提下是可以直接进入的.
小体会
- 本来目标是做文档问答的,是希望把每个文档都进行提炼,然后做个PPT. 但是这个应用作为知识库问答的工具, 会根据问题在整个知识库里面搜索和回答. 为了缩小它的搜索范围,我每次只在知识库里面启用1个文档,然后只问关于这个文档的问题.
- 关于模型的参数, 自己的理解:TopK是 检索结果按照匹配程度排序并筛出最匹配的数量, Score是个认为相似的阈值, 温度是模型思维发散程度,越小回答越接近原始信息, TOPP类似,越小越确定.
- 模型,整个应用涉及的模型至少有三个,最后的结果和每个模型的性能都是有关系的.想要达到合适的效果,还是要画些精力来了解模型的.
- 应用流程, 当然整个应用的流程也是必须要了解清楚的, 从而可以更清楚应用对模型的需要.
- 读了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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!