目录
安装 Dify
Dify --- Windows 下 Docker 安装 Dify
Dify中定义了五种应用类型:
- 聊天助手:基于 LLM 构建对话式交互的助手。(多问多答)
- 文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等。(一问一答)
- Agent:能够分解任务、推理思考、调用工具的对话式智能助手。
- 对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式。
- 工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式。
下面通过创建一个聊天助手来演示Dify中应用创建方式与流程。该聊天助手中引入了本地知识库,支持提示词中设置变量并让聊天助手从本地知识库中获取知识并回复。
接入模型


添加知识库
大模型先在本地知识库里找有没有相关知识,如果没有再去网上找

知识库:对文本内容进行分片(Chunk) -> 每个段进行向量化(Vector) => DB
提问:也会对输入的内容进行分片(Chunk) -> 进行向量化(Vector) -> 和知识库(DB)里的向量进行匹配 -> 找出片段 Chunk -> 交给大模型(LLM)-> 大模型进行回答
如果回答不准:
- LLM 大模型问题
- 知识库切分嵌入(Embedding)、参数问题


嵌入后的内容

创建聊天助手



- 提示词:给当前机器人,设定一个角色,用于约束 AI 给出专业的回复,让回应更加精确。你可以借助内置的提示生成器,编写合适的提示词。提示词内支持插入表单变量,例如 {{input}}。提示词中的变量的值会替换成用户填写的值。
- 知识库:如果想要让 AI 的对话范围局限在知识库内,例如企业内的客服话术规范,可以在"上下文"内引用知识库。
发布应用

检索设置
Top K 调高,或者 阈值调低

一个大文档,切分先多 Chunk 片段,可以设置 Chunk 的字符量是多少、两个Chunk有多少内容是重合的
Chunk 多少合适:
1个Chunk 不管问什么,都会返回这个,会掺杂很多无用的信息,造成不准
1万个 Chunk,有可能产生上下文断层,每个片段的信息量太少了
中文:500 字符左右,英文适当放大

如果搜索出来的片段,在Chunk2里,但是语义逻辑上的内容有可能也包含在了 Chunk1、Chunk3 里。只是包含得比较少,按阈值的方式,没有返回到上下文里,相当于也丢失了一些语义。
手动解决:当匹配到了 Chunk 后会把上面1、2个,下面1、2个也加到上下文里面(业界手动实现,采用的做法),加太多没有太大意义,可能会导致大模型回答不太精准,一般开发 RAG 是这么做的。
像Dify,不涉及代码开发,所以没办法做到RAG精准控制