Dify知识库图文混排到底应该怎么做,两种主流方案,一次讲清!

如果你想在使用dify知识库的实现下面的图文混排效果,那你非常有必要读一下这篇文章。

我发现,目前实现这样的图文混排效果应该是有两种方案:
使用图床或者直接将word文件导入知识库。
大家用知识库多的话,或者大模型多的话,可能都知道大模型其实非常擅长理解markdown文件,图床就是markdown中的图像在网络上存储的位置。
而word导入知识库以后,word中的图片会被dify的知识库解析,然后存储到dify所在的服务器。
上面的这两种方案,其实本质上的原理,都是使用的dify的前端是支持markdown渲染的。因此,markdown的图片渲染也是支持的。
下面实验的dify版本是1.9.2,win11环境,docker启动。
markdown图床
使用markdown图床的方式,实现知识库答案的图文混排。
前几天,我们怕了E大很多的文章,这里我们就以E大的文章为例。
如果大家看了之前的文章的话:
从被 Trae 气到崩溃,到用 Gemini 一次跑通,终于爬下了孟岩和E大的全部理财干货
可能看到了我爬取得markdown文档图片是在本地电脑上存储的,在markdown中的引用方式如下:

所以我们首先要将它上传到一个图床,这里我实验吗,所以直接用的自己的阿里云oss。
如果大家在公司内部使用的话,可能需要自建一个图床,因此相对来说图床的方案会有服务器,所以成本会高一些。

接下来我们开始建立知识库:

选择分块逻辑:

这里大家可以看到我在markdown文本中,将每个主题相同的大块使用##这种二级标题符号进行了隔离,所以我们在dify知识库建立的时候,分隔符可以选择##。

这里大家需要特别注意一点,就是你的分块长度不能太短,不然可能会导致图片的URL地址被截断,直接导致后续知识库的输出就无法输出完整地URL,当然,也就没办法实现图文混排了。
下面我们做一下召回测试,大家可以看到是可以召回图片的:

这里我开始其实是碰到了一个问题的,就是图片无法加载,只显示了图片链接,后来看浏览器控制台,发现图片访问403forbidden了。
我就抓紧回忆了下,我在阿里云oss的bucket里面开启了白名单 Referer,没有将本地的http://localhost/加入白名单,后来改掉以后就正常了。
ok,下面我们开始测试,配置一个简单地chatflow:

提示词很简单是:
### 角色 |
效果如下,非常完美:

这是llm的答案结构:
"text": "根据提供的知识库检索结果,**网格1.0的主要缺点**是:\n\n- **在一波强势上涨中,盈利不足**。例如,在2015年底到2016年底的一波接近**80%的暴涨**中,网格1.0的每一格投入只赚了**5%~8%**。虽然所有投入都赚钱且后续下跌都躲过了,但这种策略会导致投资者在看到品种价格大幅上涨(如从0.4涨到0.8)后,对自己在最低位买入却仅赚取微小利润就卖出的操作感到**极度不满意**。\n\n\n\n\n\n**核心问题**是网格1.0无法充分捕获大趋势行情中的利润,因此在强势单边上涨市场中表现不佳。这也促使了网格2.0版本的开发,通过子策略组合来优化这一问题. |
总结一下Markdown + 图床
核心收益是:
- 灵活性高:知识库源文件(Markdown)和图片资源(图床)是分离的,未来无论迁移到哪个系统,都非常方便。
- 方便管理:图片资源集中在图床(如 OSS)管理,查找、替换都很方便。
但是缺点也很明显:
- 成本:需要额外的图床服务器或对象存储服务费用。
- 运维:需要处理图床的访问权限、白名单(就像我遇到的 Referer 问题),甚至要多维护一个系统。
word混排方案
word混排方案和md图床方案的差别就是,知识库我们上传的是word。
word知识库上传时,我们选择分隔符是\n\n,我这里将md格式导出为word以后,特意在每个章节中间加了两个分隔符。

大家可以看到预览时,这里也有一个相对的文件地址:

大家可以看到,图片也可以被渲染出来:

那这个图片是在哪里存储呢?看这个地址,我就知道他一定在本地,那到底在哪里呢。
我们问问Trae(或者任何一个AI 的IDE或者Claude code),让他来看看代码,帮我们找找答案。
下面这个提示词时经过Trae优化的。
针对在本地使用Docker启动的Dify系统中,当向知识库上传Word文档后,文档中包含的图片文件的存储位置及知识库引用方式进行深入分析。请详细说明以下内容: |
Trae的答案:

我们去目录下看看,果然是:


那其他格式的文档会进行存储吗?
我们也问问,这是trae分析代码的答案,看来是不会了。只有word。

ok我们将chatflow中的知识库切换为word的知识库。试一下。
很棒,也成功了:

这是LLM的答案:
"text": "根据知识库检索结果,网格2.0的“留利润”子策略做法如下:\n\n**核心思想**:在每一次网格卖出操作中,将**利润部分留下**。由于这部分是0成本,因此可以无限期持有,不受市场短期波动影响,并有望获得长期收益。\n\n**具体做法(基础版本)**:\n1. 以初始价格(例如1元)买入一定金额(例如10000元)的品种,获得相应份额(例如10000份)。\n2. 当价格上涨至网格卖出点位(例如1.05元)时,执行卖出操作。\n3. 卖出时,**仅卖出收回本金所需的部分份额**,将利润对应的份额留下。\n * **举例说明**:1元买入10000元(10000份),在1.05元卖出时,卖出价值10000元的9524份,剩下的476份(即5%的利润)**永不卖出**,或仅在品种达到极度高估时才考虑卖出。\n * \n\n**策略的进化(高级版本)**:\n你还可以选择**留下多于利润的本金**,实现更强的长期持仓效果。\n* **举例说明(留双份利润)**:同样在1.05元卖出时,不仅可以留下5%的利润,还可以额外留下5%的本金。即卖出9048份(价值9500元),将500元利润与500元本金对应的份额留下,这部分**长期持有**或极度高估时再卖。\n* \n\n**策略优势**:\n这种方法利用了**金融心理学**中的“心理账户”概念,将利润部分视为“免费得到”的资产,有助于**减少情绪化交易**,并能够享受到指数型品种**长期上涨**带来的收益。" |
word方案总结
所以word方案总结下来,就是成本短期相对低一些,不需要单独的图床服务器,图片存储在 dify 的 Docker 卷中,开箱即用。
但是基本上无法迁移,而且图片还无法管理,因为图片都是完全的系统生成的名字。
最后
所以,到底怎么选择呢,一张表给大家总结下:
| 维度 | Markdown + 图床方案 | Word 导入方案 |
|---|---|---|
| 部署成本 | 中(需要额外图床服务) | 低(无额外服务) |
| 操作便捷性 | 中(需要上传图片到图床) | 高(写完 Word 直接上传) |
| 长期管理 | 高(图片资源独立,易于维护) | 低(图片存储黑盒,不易管理) |
| 数据迁移性 | 高(标准 Markdown,通用性强) | 极低(图片链接与系统强绑定) |
| 推荐场景 | 公司生产环境、长期项目、多人协作 | 个人实验、快速原型、临时项目 |
这样看起来,大家是不是立刻知道如何选择了,所以:
- 想快速验证、不在乎以后? 那就用 Word 方案,省时省力。
- 但凡是公司用,考虑长期维护? 那图床这个服务器和服务运维的投入,我认为是绕不过去的坎。
希望这个对比能帮你省下纠结的时间。
以上,谢谢大家看我的文章,如果对大家有用的话,请大家一键三连!!!




