背景

我们在检索的时候,可以通过调整语义和关键词的权重来检索知识。从而实现关键词+语义的互补。
而在dify的rag中,是没有关键词的。在dify1.2.0
的时候,dify新增了一个元数据的功能,我们可以给文档设置元数据,从而在检索的时候,通过元数据作为关键词,可以过滤一部分内容。
但是该功能是文档级别的,并不能匹配到分段内容。
我们先看下我接下来的检索实验。
dify中的检索实验
在dify中一共有三中模式。
-
• 向量检索: 向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。 -
• 全文检索:关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 -
• 混合检索: 同时执行全文检索和向量检索,通过权重或 Rerank 模型,从查询结果中选择匹配用户问题的最佳结果。
知识库配置
为了减少干扰,我使用同一个文档,同一个向量模型,4个知识库做测试。
-
• 知识库1:bge-m3-向量检索 -
• 知识库2:bge-m3- 全文检索 -
• 知识库3:bge-m3-混合-权重 -
• 知识库4:bge-m3-混合-rerank

知识库1:bge-m3-向量检索

知识库2:bge-m3- 全文检索

知识库3:bge-m3-混合-权重

知识库4:bge-m3-混合-rerank

测试文档
## 案例1:风寒感冒
- **症状描述**:鼻塞流清涕、畏寒无汗、头痛、咳嗽白痰、舌淡苔白
- **理论依据**:《伤寒论》太阳病理论,寒邪束表致卫阳被遏。大椎为诸阳之会可散寒解表,风门为风邪出入门户,合谷属阳明经通调肺气
- **配穴方案**:大椎、风门、合谷
- **操作流程**:先灸大椎20分钟至潮红,再灸风门15分钟,最后灸合谷10分钟。每日1次,连续3天
## 案例2:脾胃虚寒型胃痛
- **症状描述**:胃脘冷痛、喜温喜按、食少便溏、四肢不温、舌淡胖有齿痕
- **理论依据**:《针灸甲乙经》"中脘主腹胀不通",配合胃经合穴足三里健运脾土,神阙温补元阳
- **配穴方案**:中脘、足三里、神阙
- **操作流程**:神阙隔姜灸5壮,中脘悬灸25分钟,足三里双穴各灸15分钟。饭前操作,隔日1次
## 案例3:寒凝血瘀型痛经
- **症状描述**:经前小腹冷痛拒按、经血紫暗有块、得热痛减、面色青白
- **理论依据**:《妇人大全良方》寒客胞宫理论,关元为任脉与三阴经交会穴,三阴交统调阴经,次髎温通胞宫
- **配穴方案**:关元、三阴交、次髎
- **操作流程**:经前3天开始灸,关元灸30分钟,三阴交双穴各15分钟,次髎20分钟。每日1次至经期第2天
分片设置

分片规则统一如上图。
-
• 父子分段 -
• 父段分片标识 ##
-
• 字段分片标识默认 n
检索结果
在我的分片内容中有健运脾土
这个

向量检索中,能召回到

在全文检索中,反而没有召回到,这就让我有点惊讶(先问了下chatgpt,后续研究下这里的代码)


混合检索-rerank也召回到了

混合-权重也召回到了。
这只是我测试的一个词,而在实际使用的时候,检索效果依赖具体 query 与文本 embedding 的相似度,因此具备不确定性。 而全文检索整个知识库就没有几个文档,就得2~3秒的,性能不高。后续得自己看下源码。
于是我就在想如何加上关键词,让检索更精准。
关键词设置

我是不是可以在整理数据的时候,提取出关键词,然后将关键词作为子分段,反正父子检索式检索到内容以后,会把整个父分段作为上下文。

于是我让大模型生成关键词,然后添加进去。

子分段作为独立的关键词,并向量化存储,然后检索的时候,理论上应提升检索召回率,但仍依赖 embedding 的语义表达,不能等同于精确匹配


我看了代码,没对query做改写。为啥score这么低?

这细节上的点,还得深入研究下,看下源代码,以及做更多的样本测试。
系列文章
uv配置环境
dify相关
DeepSeek+dify 本地知识库:真的太香了
Deepseek+Dify本地知识库相关问题汇总
dify的sandbox机制,安全隔离限制
DeepSeek+dify 本地知识库:高级应用Agent+工作流
DeepSeek+dify知识库,查询数据库的两种方式(api+直连)
DeepSeek+dify 工作流应用,自然语言查询数据库信息并展示
聊聊dify权限验证的三种方案及实现
dify1.0.0版本升级及新功能预览
Dify 1.1.0史诗级更新!新增"灵魂功能"元数据,实测竟藏致命Bug?手把手教你避坑
【避坑血泪史】80次调试!我用Dify爬虫搭建个人知识库全记录
手撕Dify1.x插件报错!从配置到网络到Pip镜像,一条龙排雷实录
dify1.2.0升级,全新循环节点优化,长文写作案例
dify1.x无网环境安装插件
dify项目结构说明与win11本地部署
Dify 深度拆解(二):后端架构设计与启动流程全景图
ragflow相关
DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)
DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了
DeepSeek+ragflow构建企业知识库:高级应用篇,越折腾越觉得ragflow好玩
RAGFlow爬虫组件使用及ragflow vs dify 组件设计对比
从8550秒到608秒!RAGFlow最新版本让知识图谱生成效率狂飙,终于不用通宵等结果了
以为发现的ragflow的宝藏接口,其实是一个天坑、Chrome/Selenium版本地狱
NLTK三重降噪内幕!RAGFlow检索强悍竟是靠这三板斧
从代码逆向RAGFlow架构:藏在18张表里的AI知识库设计哲学
解剖RAGFlow!全网最硬核源码架构解析
深度拆解RAGFlow分片引擎!3大阶段+视觉增强,全网最硬核架构解析
深度拆解RAGFlow分片引擎之切片实现
RAGFlow核心引擎DeepDoc之PDF解析大起底:黑客级PDF解析术与致命漏洞
RAGFlow 0.18.0 实战解读:从 MCP 支持到插件配置的全流程揭秘
ragflow 0.19.0 图文混排功能支持