你好!如果你正在学习怎么让大模型(比如 ChatGPT、通义千问)真正为你所用——不仅能回答公开知识,还能读懂你公司的内部文档、记住你的业务数据、甚至处理录音和图片——那么这篇文章就是为你准备的。
我会带你从零开始,理解大模型应用开发中最核心的几个概念:RAG(检索增强生成)、知识库、数据库、多模态处理,然后手把手教你用Dify这个开源平台把理论变成能跑的应用。全程不贴复杂源码,只用大白话和实际操作为你拆解每一步。
一、先搞懂三个核心概念:知识库、数据库、RAG
很多新手分不清“知识库”和“数据库”,觉得都是存东西的。实际上它们解决的问题完全不同。
1.1 知识库 vs 数据库(记住这张表就够了)
| 对比点 | 知识库 | 数据库 |
|---|---|---|
| 存什么 | 文档、段落、文本片段(PDF、Word、网页) | 表格、字段、记录(Excel、CSV) |
| 用来干嘛 | 检索和召回相关内容,“从资料里找答案” | 增删改查结构化数据,“对表格做操作” |
| 是否常改 | 通常不频繁修改(比如公司制度一年一改) | 经常新增、修改、删除(每天签到、订单) |
| 工作流节点 | 知识库检索节点 | 数据库节点(查询、新增、更新、删除) |
| 典型场景 | 课程问答、产品说明书问答、制度问答 | 签到记录、绩效管理、订单查询、用户信息 |
错误理解:只要是自己的数据都放知识库 → 错。表格数据放知识库没法做“把张三的分数加5分”这种操作。反之,长篇文档放数据库也不合适,因为数据库不擅长检索段落语义。
1.2 什么是 RAG(检索增强生成)?为什么需要它?
大模型本身有几个硬伤:
知识截止到训练时,不知道最新信息。
不知道你公司的内部资料。
遇到不确定的问题容易瞎编(幻觉)。
每次资料变化都去重新训练模型,成本太高。
RAG 的思路非常巧妙:不把知识硬塞进模型大脑,而是让模型在回答问题时,先去你的资料库里翻书,找到相关内容,再结合自己的语言能力来回答。
标准流程长这样:
你的文档 → 解析 → 切分成小段 → 转换成向量(语义指纹)→ 存入向量库 用户提问 → 把问题也转成向量 → 检索最相似的几个片段 → 把片段+问题一起给大模型 → 大模型生成回答
这个过程里最关键的一步是分段(chunking)——把长文档切成一个个小片段。切太大,检索不精准;切太小,上下文不完整。通常还会让相邻片段重叠几句,避免知识点被拦腰切断。
1.3 三种检索方式:全文检索、语义检索、混合检索
全文检索:关键词匹配,就像你在 Word 里按 Ctrl+F 搜一个词。优点是精确,缺点是换成同义词就搜不到。
语义检索:把文本和问题都转成“向量”(一串数字,代表语义位置),计算向量之间的距离。意思越近,向量越接近。优点是灵活,换说法也能找到。
混合检索:把前两者结果合并,再排序一次,取长补短。这是目前最稳的做法。
调参小贴士:在实际使用中,你主要调三个参数:
召回数量(TopK):每次返回几个片段?太少漏信息,太多模型读太多无关内容。建议 3~5。
最小匹配度(Score):相似度门槛。0.5 宽松,0.7 平衡,0.85 严格。如果资料质量高,可以设高一点。
查询改写:把用户口语化问题(如“那个啥,怎么弄”)改成规范检索词,大幅提升召回率。
二、多模态:让 AI 能看、能听、能说、能生成
除了文字,真实世界还有图片、音频、视频。大模型应用也要覆盖这些。
2.1 图像能力
文生图:你写一段描述(“一只穿西装的猫,坐在办公室”),AI 给你画出来。提示词要包含:主体、场景、风格、光线、颜色,以及你不希望出现什么。
图片清晰度提升:把模糊的老照片变清晰。注意这不是魔法,原图信息严重缺失时效果有限,而且通常消耗积分。
2.2 音频能力
语音转文字(ASR):把面试录音、会议录音转成文字。转出来的文字通常没有标点,需要再让大模型加上标点、整理成通顺段落。
文字转语音(TTS):把一段文字变成语音,像 AI 配音。可以选音色、语速、情绪。常见于短视频解说、有声新闻。
2.3 视频生成
根据文字描述生成几秒钟的视频。目前成本高、效果不稳定(人手、物理动作容易出错),真实工作中通常需要多次生成再人工剪辑,不要对它期望太高。
把这些能力放到真实场景里(比如 AI 面试助手):
简历评估:知识库存简历模板,数据库存违禁词,大模型分块评估。
面试录音分析:ASR 转文字,大模型区分角色、提取问答对、评估表现。
面试题生成:从知识库检索岗位要求,从数据库读历史题,大模型生成新题。
批量处理:循环处理多个候选人的数据。
三、Dify 是什么?为什么选它?
Dify 是一款开源的大语言模型应用开发平台,它把构建 AI 应用所需的技术栈(模型接入、Prompt 编排、RAG 引擎、Agent 框架、工作流编排)全部打包好,让你像搭积木一样快速搭建生产级应用。
和 Coze 相比,Dify 的核心定位是面向开发者的 LLMOps 与 BaaS 平台,强调私有化部署、模型中立(支持超 50 个模型)、精细控制工作流和 RAG。Coze 更偏向面向消费者的 AI 应用商店,零代码快速发布到抖音、飞书。
什么时候选 Dify?
你需要私有化部署,数据不出公司(金融、医疗行业刚需)。
你想自由切换模型,不被某一家锁定。
你的业务逻辑复杂,需要多步骤、多分支的工作流。
你的文档格式多样(扫描件、表格、图文混排),需要更强的解析能力。
如果你只是个人玩玩,想几分钟搭个聊天机器人发到社交平台,那 Coze 更合适。
四、Dify 安装实战(附避坑地图)
Dify 官方推荐用 Docker 部署。在动手之前,你得先理解两个 Docker 概念,不然装完也不知道它在干啥:
镜像(Image):一个只读的“安装包”,里面包含完整操作系统 + 应用。
容器(Container):镜像运行起来的实例,可启动、停止、删除。
4.1 安装 WSL 2(仅 Windows 用户)
Docker 依赖 Linux 内核,所以 Windows 要先装 WSL(Windows Subsystem for Linux)。打开 PowerShell(管理员),敲:
wsl --install
安装完成后必须重启电脑。
如果提示“虚拟化未开启”,去 BIOS 把 Intel VT-x 或 AMD SVM 打开。
4.2 安装 Docker Desktop
下载安装包,安装时务必勾选“使用 WSL 2 代替 Hyper-V”。装完后,进入 Settings → Docker Engine,加上国内镜像源(如https://docker.m.daocloud.io),否则拉取镜像慢到崩溃。
4.3 拉取并启动 Dify
从 GitHub(
langgenius/dify)下载源码压缩包,解压。进入
docker文件夹,把.env.example重命名为.env。在该目录打开终端,执行
docker compose up -d。等待镜像拉取(首次可能几 GB,耐心等,断线重试会自动续传)。
浏览器访问
http://127.0.0.1/install,注册管理员账号。
如果启动失败:检查端口是否被占用(80、443、6379),或者重新执行
docker compose down再up。大多数问题重试就能解决。
五、第一个工作流:让大模型听话
5.1 接入模型供应商
点击右上角头像 → 设置 → 模型供应商。Dify 把模型分成三类:
系统推理模型(对话用)
Embedding 模型(知识库向量化用)
语音转文字模型
以通义千问为例:填入 API Key(阿里云百炼申请)和模型名称(如qwen-turbo),保存测试连通性。
如果想接本地 Ollama,注意 Ollama 默认只监听127.0.0.1,需要改成0.0.0.0才能让容器里的 Dify 访问。
5.2 创建空白工作流
在“工作室”点击“创建空白应用”,类型选工作流。
5.3 拖拽节点
开始节点:增加一个输入变量
query(文本类型),代表用户问题。LLM 节点:拖到画布,连接开始节点。模型选刚接入的,系统提示词写“你是一个乐于助人的助手,请用中文回答”,上下文引用
query。结束节点:输出 LLM 节点的
text。
点击“试运行”,输入“西安有什么好吃的”,你会看到模型返回回答。如果回答是英文,就在系统提示词里强调“用中文”。
六、重头戏:知识库 RAG 完整实战
6.1 创建知识库
顶部导航栏点击知识库→ 创建知识库。选择数据源(支持 PDF、Word、Excel、TXT、HTML 等),上传你的文档,点击下一步。
6.2 配置分段模式(核心)
Dify 提供两种模式:
通用模式:手动设置分段标识符(默认
\n按段落分)、最大长度(默认 500 Tokens)、重叠长度(建议 10-25%)。父子模式(推荐新手):自动生成大块(父块)和小块(子块)。检索时用子块精确定位,然后把整个父块给大模型补充上下文,兼顾准确性和完整性。在 AI 客服场景中,用户问题命中一个句子,系统把整个段落送给模型,回答就更有底气。
6.3 索引方法与检索设置
经济模式:关键词检索,省 token,但精度略低。
高质量模式:向量检索,精度高,消耗 token。提供三种检索方式:
向量检索:语义匹配,找意思相近的。
全文检索:关键词匹配。
混合检索:两者结合,再排序。可以启用 Rerank 模型进一步优化排序。
参数调优:
TopK:推荐 3~5。
Score 阈值:默认 0.5。资料杂就调高到 0.7,资料少就降到 0.3。
6.4 验证知识库效果
处理完成后,页面显示“嵌入完成”。在右侧“召回测试”里输入问题,系统会显示召回的片段和相似度分数。分数越高说明匹配越好——如果召回结果不理想,回去调整分段规则或阈值。
6.5 在工作流中使用知识库
方式一:Agent 直接引用
创建 Agent 应用,在上下文里添加知识库,就可以直接对话。
方式二:工作流(Chatflow)引用
创建 Chatflow 应用。
在 LLM 节点前加一个“知识检索”节点,选择你的知识库。
LLM 节点的上下文选择检索节点的
result。系统提示词写:
请根据文本内容{{#context#}}回答。加一个“直接回复”节点输出结果。
试运行。
关键设计思路:先查知识库,如果有结果就用知识库回答;如果没结果(Score 太低),可以调用联网搜索兜底;最后大模型润色成自然语言。千万不要把检索到的原始片段直接丢给用户,一定要让大模型整理一下。
七、高级进阶:用工作流自动生成微调语料
微调(Fine-tuning)是用你的专业数据再训练大模型,让它变成某个领域的专家。但微调的第一步就是准备“问答对”数据集,手动整理几百条太累人。Dify 的工作流可以帮你批量生成。
微调语料的标准格式是 JSONL,每行一个 JSON 对象,包含messages数组,里面有三个角色:
system:系统指令(比如“你是一个科普达人”)user:用户问题assistant:模型回答
工作流节点构成:
开始节点:接收两个输入——
attachments(上传文档)和systemprompt(系统提示词)。文档提取器:解析文档内容(注意不支持 Word)。
代码执行节点:因为 Dify 的 LLM 有上下文长度限制,用代码把文档截取前 800 字符(你也可以改成 2000,但要看你用的模型窗口大小)。
LLM 节点:系统提示词定义角色和生成规范,要求每次生成 10 个生活化问题,答案必须基于原文,输出严格的 JSONL 格式。
结束节点:输出 JSONL 文本。
运行后你会得到一批问答对,保存为.jsonl文件,以后微调模型时直接喂给训练框架。这个案例展示了 Dify “代码节点 + LLM 节点”协同工作的强大之处——不仅能做问答,还能帮你准备训练数据,打通整个 AI 应用生命周期。
八、再进一步:接入 RAGFlow 处理扫描版 PDF
Dify 自带知识库对扫描版 PDF(图片型)解析效果不够好。这时候引入RAGFlow——一个基于深度文档理解(DeepDoc)的开源 RAG 引擎,能通过 OCR、布局识别、表格结构识别把图片里的文字精准提取出来。
8.1 安装 RAGFlow(小心端口冲突)
因为 Dify 已经占用了 80 端口和 6379 Redis 端口,RAGFlow 必须错开:
克隆源码:
git clone https://github.com/infiniflow/RAGFlow.git。进入
docker目录,修改docker-compose.yml,把 web 端口映射从80:80改成8880:80。修改
.env文件,把 Redis 端口从 6379 改成6380。执行
docker compose up -d。浏览器访问
127.0.0.1:8880,注册登录。
8.2 在 RAGFlow 中创建知识库
点击“知识库” → “新建”,上传文档,RAGFlow 提供多种分片方式,针对不同文档类型优化:
General:通用文档(DOCX、PDF、PPT 等)
Q&A:问答对(Excel 或 CSV)
Resume:简历解析为结构化数据
Manual:手册(按标题层级切分)
Table:表格数据
Paper:论文(按章节切分)
Book:书籍(可设置页面范围)
Laws:法律文书(按“ARTICLE”粒度)
RAGFlow 还支持知识图谱,开启后能提升关系查询的效果。
8.3 打通 Dify 和 RAGFlow
这一步最容易踩坑:
在 RAGFlow 右上角头像 → API,生成一个 API Key(以
ragflow-开头)。获取你的局域网 IP(命令行
ipconfig或ifconfig,一般是192.168.x.x)。回到 Dify 的知识库页面,点击“连接外部知识库”→ “外部知识库 API”。
填入:
API Endpoint:
http://{你的局域网IP}:9380/api/v1/dify。千万不能用127.0.0.1,因为 Dify 运行在容器里,容器内的 127.0.0.1 指向容器自己,不是宿主机。API Key:填刚才生成的
ragflow-密钥。知识库 ID:从 RAGFlow 知识库详情页的 URL 里获取。
点击“连接”。
连接成功后,在 Dify 的 Agent 或工作流中,上下文里就可以添加这个外部知识库了,检索时自动调用 RAGFlow 的深度解析能力。
九、数据库操作:不只是检索,还能增删改查
知识库是“只读”的,但数据库可以增、删、改、查结构化数据。以绩效数据表为例(工号、姓名、绩效等级):
9.1 查询数据
用户问:“张三的绩效是多少?”系统先提取关键信息(人名“张三”,字段“绩效”),然后去数据库查name == "张三"的记录,最后把结果(比如“B级”)用自然语言说出来。
9.2 新增数据
用户说:“新增员工乔峰,工号 666,绩效 S。”系统抽取姓名、工号、绩效,调用新增节点写入数据库。注意:如果用户漏了必填字段,系统应该提示,而不是盲目新增。
9.3 更新数据
用户说:“把乔峰工号 666 的绩效改成 D。”系统先用姓名+工号定位唯一记录,再更新绩效字段。为什么要用两个条件?因为姓名可能重名,工号如果用户输错也很危险,联合条件更稳。
9.4 删除数据
用户说:“删除乔峰工号 666 的绩效记录。”系统定位后删除。真实业务中删除要非常谨慎,通常建议用“软删除”(加一个“已删除”标记),而不是物理删除。
易错点:
工号虽然看起来是数字,但通常不参与计算,最好存成字符串(避免前导 0 丢失)。
字段名、抽取字段名、节点绑定字段名必须完全一致。
更新和删除必须有明确条件,不能只靠姓名这种不稳定条件。
十、总结与选型建议
Dify vs Coze 怎么选?
| 维度 | Coze | Dify |
|---|---|---|
| 定位 | AI 应用商店/生态 | LLMOps 与 BaaS 平台 |
| 目标用户 | 非技术人员、运营、创作者 | 开发者、AI 工程师、企业技术团队 |
| 模型支持 | 优先字节及国内模型,相对封闭 | 支持 50+ 开源与商用模型,模型中立 |
| 功能重心 | 对话体验,快速发布到飞书、抖音 | 复杂工作流编排、精细 RAG 控制 |
| 部署方式 | SaaS,数据平台托管 | 支持私有化部署,数据自主可控 |
| 开源协议 | 部分组件开源 | 开源(Apache-2.0),Open-Core |
简单结论:
个人练手、快速原型、发到社交平台 →选 Coze。
企业级应用、私有化部署、复杂逻辑、深度定制 →选 Dify。
可以先用 Coze 验证想法,再移植到 Dify 做生产环境。
十一、最后给你一张“避坑清单”
❌ 知识库不是数据库,不要混用。
❌ 文档上传后一定要看分段效果,分段不好检索就废。
❌ 检索结果不要直接丢给用户,必须大模型润色。
❌ 知识库无结果时要有兜底(联网搜索或提示)。
❌ 数据库字段名和节点绑定的字段名要完全一致。
❌ 更新和删除必须用联合条件定位(如姓名+工号)。
❌ 工号存成字符串,不要存数字。
❌ 多模态节点的输入类型要改对(图片用 image,音频用 audio)。
❌ ASR 输出没标点,记得后续处理。
❌ 视频生成成本高、效果不稳定,别过度承诺。
读完这一篇,你相当于同时掌握了Coze 的理论知识和Dify 平台的实战技能。接下来,建议你打开电脑,按顺序把工作流、知识库、RAGFlow 都跑一遍。犯错不怕,Dify 的沙箱环境随便折腾——你离自己的第一个 AI 应用,只差一个“试运行”按钮。