之前有使用
AnythingLLM
以及Page Assist
来加载本地文档作为知识库进行上下文聊天背景,但效果不是很理想(也有可能没玩明白),今天使用本地部署的Dify
自定义开发一个相同功能的应用。
💞更多内容,可关注公众号“ 一名程序媛 ”,我们一起从 0 - 1 学编程💞
1 Ollama运行大模型
这个教程已经很多了,有不懂的也可以参考之前的文章按步走即可,这里重点提一下要拉取的模型
ollama pull deepseek-r1:1.5b
ollama pull nomic-embed-text
确保Ollama is running...
在Dify 》 设置 》 模型供应商中将拉取的模型添加进来
2 添加知识库
切换到“知识库”界面,点击“创建知识库”
拖动本地文档以上传,点击“下一步”进行“知识库预处理”,也即“分段和清洗”
这一步是关键,分段的结果直接决定着后续知识招回的结果
通过设置“分段标识符”来解析我们自己的文档,点击“预览块”来查看分段结果,如果非预期,则调整标识符后,再次预览,如果始终达不到预期分段效果,则要考虑修改源文档后再次上传处理
分段预览Ok后,索引方式可选择“经济”或“高质量”,描述里已经说的很清楚,经济方式不消耗tokens,但效果可能不理想
这里选择“高质量”,Embedding
模型选择Ollama
拉取的nomic-embed-text
检索设置可默认“向量检索”,也可选择“混合检索”效果可能会更好
最后“保存并处理”,等待完成即可
3 创建空白应用
- 回到“工作室”界面,点击“创建空白应用”
- 应用类型选择“Chatflow”,这种可以反复询问确认以贴合本意
- 设置一个可识别的名称,“创建”即可
4 编排本地知识库应用
默认可能已经添加了三个节点:开始,LLM大语言模型,直接回复
不管默认如何,我们在“开始”节点之后添加一个“知识检索”节点,右侧会显示节点属性
- 我们在“查询变量”里选择“开始”下的“sys.query”变量,也即用户聊天窗口中的输入内容
- 再在“知识库”属性下添加刚才建立的本地文档知识库
点击“LLM”大模型节点,在其属性设置中“模型”选择“deepseek-r1:1.5b
”
- “上下文”选择“知识检索”下的“
result
”变量 - “
SYSTEM
”提示词可编辑为如下内容
你要根据用户输入的问题
{{#sys.query#}}
和提供的参考{{#context#}}
,找出最符合的一条记录,
然后直接输出找到的这条最符合的记录。
点击“直接回复”节点,在回复内容中直接使用“LLM
”下的“text
”变量即可
5 完善应用
完成以上操作,一个应用也就完成了,但效果如何,还需要反复调试
点击“预览”,尝试交流一下,根据deepseek
思考的过程,可以知道我们给出的提示词是否Ok
,如果让大模型很矛盾,则我们要回头去调整提示词
如果看到思考过程中,对于检索出来的片段,deepseek
不能很好的获取我们的问题结果,则要考虑是不是我们提供的数据定义不够明确,考虑是否需要完善知识库
经过反复调试,你终将拥有一个你自己打造的听话又适用的AI助手,不会“瞎”回答了!
💞更多内容,可关注公众号“ 一名程序媛 ”,我们一起从 0 - 1 学编程💞