一、Dify
低代码/无代码开发:Dify通过可视化的方式允许开发者轻松定义Prompt、上下文和插件等,无需深入底层技术细节。
模块化设计:Dify采用模块化的设计,每个模块都有清晰的功能和接口,开发者可以根据需求选择性地使用这些模块来构建自己的AI应用。
丰富的功能组件:平台提供了包括AI工作流、RAG管道、Agent、模型管理等丰富功能组件,帮助开发者从原型到生产的全过程。
支持多种大语言模型:Dify已支持主流的模型,开发者能够根据自己的需求选择最适合的模型来构建AI应用。
Dify
聊天助手(Chat Assistant):
基于LLM的对话助手,能够与用户进行自然语言交互,理解用户的问题、请求或指令,并给出相应的回答或执行相应的操作。
文本生成(Text Generation):
专注于各种文本生成任务,如撰写故事、新闻报道、文案、诗歌等创意写作,以及文本分类、翻译等任务。
Agent(智能代理):
这种助手不仅具备对话能力,还具备任务分解、推理、工具调用等高级能力。它能够理解复杂的指令,将任务分解为多个子任务,并调用相应的工具或API来完成这些子任务。
工作流程(Workflow):
根据用户定义的流程编排,灵活地组织和控制LLM的工作流程。用户可以自定义一系列的操作步骤和逻辑判断,让LLM按照预定的流程执行任务。
Dify
二、Dify + RAG
如何将文档上传到Dify知识库构建RAG?将文档上传到Dify知识库的过程涉及多个步骤,从文件选择、预处理、索引模式选择到检索设置,旨在构建一个高效、智能的知识检索系统。
1. 创建知识库:Dify主导航栏中的“知识”,在此页面可以看到已有的知识库。
创建新知识库:拖放或选择要上传的文件,支持批量上传,但数量受订阅计划限制。
空知识库选项:如果尚未准备文档,可选择创建空知识库。
外部数据源:使用外部数据源(如Notion或网站同步)时,知识库类型将固定,建议为每个数据源创建单独知识库。
2. 文本预处理与清理:内容上传到知识库之后,需要进行分块和数据清洗,这个阶段可以理解为内容的预处理和结构化。
自动模式:Dify自动分割和清理内容,简化文档准备流程。
自定义模式:对于需要更精细控制的情况,可选择自定义模式进行手动调整。
3. 索引模式:根据应用场景选择合适的索引模式,如高质量模式、经济模式或问答模式。
高质量模式:利用Embedding模型将文本转换为数值向量,支持向量检索、全文检索和混合检索。
经济模式:采用离线向量引擎和关键字索引,虽然准确率有所降低,但省去了额外的 token 消耗和相关成本。
问答模式:系统会进行文本分词,并通过摘要的方式,为每段生成QA问答对。
4. 检索设置:
(1)在高质量索引模式下,Dify 提供三种检索设置:向量搜索、全文搜索、混合搜索
向量搜索:将查询向量化,计算与知识库中文本向量的距离,识别最接近的文本块。
全文搜索:基于关键字匹配进行搜索。
混合搜索:结合向量搜索和全文搜索的优势。
Rerank模型:对检索结果进行语义重排序,优化排序结果。
(2)在经济索引模式下,Dify 提供单一检索设置:倒排索引和TopK
倒排索引:一种为快速检索文档中的关键字而设计的索引结构。
TopK和分数阈值:设置检索结果的数量和相似度阈值。
三、Dify + Agent
1. 探索与集成应用模板
2. 选择推理模型
3. 编写提示与设置流程
4. 添加工具与知识库
工具集成:在“工具”(Tools)部分,用户可以添加各种内置或自定义工具,以增强代理助理的功能。这些工具可以包括互联网搜索、科学计算、图像创建等,帮助代理助理与现实世界进行更丰富的交互。
知识库:在“上下文”(Context)部分,用户可以整合知识库工具,为代理助理提供外部背景知识和信息检索能力。
5. 推理模式设置
Function Calling:对于支持该模式的模型(如GPT-3.5、GPT-4),建议使用此模式以获得更好更稳定的性能。
ReAct:对于不支持Function Calling的模型系列,Dify提供了ReAct推理框架作为替代方案,以实现类似的功能。