近期Dify官方发布了1.1.0版本,我第一时间体验了一下,发现这次更新真的挺实用的。作为一款开源的LLM应用开发平台,Dify这次带来了不少改进,特别是知识库检索方面有了明显提升。我整理了一下这次更新的亮点,希望能给正在使用 Dify 的朋友们提供一些参考。
🌟 重点功能:知识检索的元数据过滤
这次更新中我最喜欢的是知识检索的元数据过滤功能。元数据本质上就是“关于数据的数据”。它为主要数据提供了额外的背景或属性标签,使搜索和检索更加精确。简单来说,就是现在可以通过文档的各种属性来筛选检索结果了,这对于管理大量文档的项目来说简直是救星。
接下来,我分享一下具体怎么用:
场景:技术文档知识库的精准检索
假设你有一个包含各部门技术文档的知识库,现在需要只检索研发部2024年1月之后发布的Python相关文档。
- 添加元数据字段 首先在知识库设置中添加自定义元数据字段。我添加了"部门"(department)、"发布日期"(publish_date)和"技术标签"(tech_tags)三个字段。
- 上传文档并设置元数据 上传文档时,为每份文档设置对应的元数据值。比如一份第三方Python接口文档,设置department="研发部",publish_date="2025-02-15",tech_tags="Python"。
-
使用元数据过滤进行检索 在执行检索时,添加元数据过滤条件:
- 部门 = "研发部"
- 发布日期 > "2024-02-27"
- 技术标签 包含 "java"
image
执行测试的时候发现基于元数据过滤这种方式检索没生效,查看控制台日志发现报错,有bug......😂
禁用元数据过滤后,知识库搜索正常,这...
建议要使用元数据过滤功能的小伙伴等后续的修复版本,该版本元数据过滤有BUG,个人不建议使用该功能。
💪 其他实用功能与优化
除了知识检索的改进,这次更新还有几个我觉得挺实用的改进:
工作流优化
IF-ELSE节点现在可以处理缺失的文件变量了,这解决了我之前经常遇到的一个痛点。有次做一个文档处理流程,用户没上传可选文件时整个流程就崩了,现在这种情况能正常处理了。
并行分支数量增加也是个好消息,之前做复杂流程时总觉得分支不够用,现在终于不用为此头疼了。
HTTP请求节点支持跳过SSL验证,这个在内网测试环境特别有用,省去了配置证书的麻烦。
搜索体验提升
关键词搜索改进后,中文检索的效果明显好了。之前搜索某些中文词汇时总觉得结果不太准,现在匹配度高了不少。这应该是得益于pg_bigm关键词搜索集成的改进和Unicode处理的优化。
🛡️ 安全修复
这个版本修复了一个向量数据库中的SQL注入漏洞,这点必须要强调一下。如果你的Dify应用已经部署在生产环境,强烈建议尽快升级,安全问题不容忽视。
🔧 其他问题修复
还有一些小问题的修复也值得一提:
- 解决了流式输出在条件分支中断的问题(这个bug困扰我好久了)
- 修复了Trace返回空值导致页面崩溃的问题(上一篇文章中有提到我遇到这个问题时的临时解决方案)
- 补全了一些缺失的翻译
- 修复了Nginx模板环境变量替换的问题
这些看似小修小补,但对日常使用体验的提升还是很明显的。特别是那个流式输出的问题,之前总是在关键点断掉,用户体验很差,现在终于解决了。
📋 详细升级指南与代码
这里我把具体的升级步骤和代码整理了一下,方便大家参考。升级过程不复杂,但也要小心操作,特别是有自定义配置的用户。
Docker Compose 部署升级详解
我一直是使用docker方式进行部署,下面是我记录的升级过程:
- 首先,一定要备份你的配置文件和数据:
# 进入docker目录
cd /dify/docker
# 备份docker-compose配置(日期时间戳方便识别)
cp docker-compose.yaml docker-compose.yaml.bak.20250318
# 备份重要数据
mkdir -p dify-backups
tar -czvf dify-backups/dify-volumes-$(date +%Y%m%d).tar.gz volumes/
2. 然后拉取最新代码并重新部署:
# 拉取最新代码
git checkout main
git pull origin main
# 看一眼有什么变化(可选)
git log --oneline -n 10
# 停止当前服务
docker compose down
# 启动新版本(加上-d参数让它在后台运行)
docker compose up -d
# 查看服务启动状况
docker compose ps
3. 检查日志确认一切正常:
# 查看API服务日志
docker compose logs -f api
# 查看前端日志
docker compose logs -f web
有一次我在升级时遇到了数据库连接问题,检查日志发现是之前有自定义的环境变量没有正确迁移。如果你也遇到类似问题,可以对比一下旧的和新的docker-compose.yaml文件,看看有什么差异。
源码部署升级详解
源码部署的升级稍微麻烦一点,需要手动处理依赖和数据库迁移:
# 1. 停止当前运行的服务(根据你的具体部署方式可能不同)
supervisorctl stop dify-api
supervisorctl stop dify-worker
supervisorctl stop dify-web
# 2. 备份代码和数据库
pg_dump -U postgres -d dify > dify_backup_$(date +%Y%m%d).sql
# 3. 切换到新版本并更新代码
cd /dify
git fetch --all
git checkout 1.1.0 # 注意是直接切到1.1.0标签
# 4. 更新API服务依赖
cd api
poetry install
# 5. 执行数据库迁移
poetry run flask db upgrade
# 6. 更新前端依赖
cd ../web
npm install
npm run build
# 7. 重启服务
supervisorctl start dify-api
supervisorctl start dify-worker
supervisorctl start dify-web
# 8. 检查服务状态
supervisorctl status
升级后的验证
不管用哪种方式升级,完成后最好做个简单验证:
- 登录管理后台,看看是否正常
- 检查一下知识库功能,特别是新的元数据过滤
- 测试一下之前创建的应用是否还能正常工作
- 查看系统日志,确认没有异常错误
总结
Dify 1.1.0版本算是一次不大不小的更新,但带来的改进确实解决了不少实际问题。但是缺憾就是 知识检索的元数据过滤功能存在bug ....
升级过程总体来说比较顺利,大部分情况下30分钟左右就能搞定。即使你不是特别熟悉Linux和Docker,按照上面的步骤应该也能顺利完成。如果实在不放心,可以先在测试环境试一下。
如果你有什么Dify使用心得或者遇到升级问题,欢迎在评论区交流,我们一起探讨AI应用开发的最佳实践!