dify可自动筛选if≥5的论文:需上传含impact_factor数字字段的结构化文献数据,配置元数据筛选(impact_factor≥5且journal_name="nature"),启用weaviate或bge重排序,并验证metadata中if值真实存在且格式正确。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要从数百篇学术文献中快速筛选出影响因子(IF)≥5的论文,但每次手动查Web of Science或Scopus太耗时——Dify能自动完成元数据提取、阈值过滤与结果排序,全程无需写代码。
准备带IF字段的结构化文献数据
上传的PDF或TXT文档必须已包含可解析的IF数值,否则后续过滤会失效。Dify无法从纯扫描版PDF中OCR识别数字,也不支持从DOI反查IF。
推荐用Zotero导出BibTeX或CSV,确保字段名含impact_factor或if(全小写,无空格),值为纯数字如7.2或12.8。
若原始文件无IF字段,需先用Python脚本批量补全:读取DOI→调Crossref API→提取journal-issn→匹配JCR数据库→写入新字段。这一步必须在上传前完成。
创建字符串+数字混合元数据
进入知识库 → 点击【元数据】→ 新建两个字段:
第一个字段类型选“字符串”,名称填journal_name,用于后续按期刊名二次筛选;
第二个字段类型选“数字”,名称填impact_factor,【务必选“数字”而非“字符串”,否则无法做≥比较】。
批量编辑所有文献文档,在impact_factor栏直接填入数值(如9.3),不要加单位、括号或文字说明。
配置知识检索节点的双层过滤
第一步:在工作流中选中知识检索节点 → 展开【元数据筛选】→ 添加第一条规则 → 字段选impact_factor → 操作符选≥ → 值填5。
第二步:在同一面板再添加第二条规则 → 字段选journal_name → 操作符选= → 值填"Nature"(注意英文期刊名必须加英文双引号,中文期刊名不加)。
两条规则是“且”关系,系统会同时满足两个条件才返回结果。漏掉任一引号或大小写错误(如"nature")会导致整条规则失效。
启用重排序提升高IF论文优先级
方法一:使用Weaviate内置reranker(最快上手)
确保知识库设置页已勾选「启用Rerank」,类型选weaviate-reranker-cohere,该模型对学术文本语义理解强,能将IF=15.6的综述排在IF=5.1的快报前面。
方法二:接入自定义BGE-Reranker服务(精度更高)
在重排序节点配置API端点http://localhost:8080/rerank,请求体必须包含{"query":"影响因子筛选","documents":[...]},文档数组里每个对象需含content和metadata字段。
重排序后,Top-K默认返回3条,但你可在节点参数中把top_k改为10,避免因IF值接近导致漏掉关键论文。
验证筛选结果是否准确
步骤一:用测试问题“请列出IF≥5的Cell论文”触发工作流;
步骤二:在调试面板查看检索节点输出的retrieved_documents数组,逐个检查每项的metadata.impact_factor值是否真≥5;
步骤三:打开任意一条返回结果的原文高亮,确认impact_factor字段在原始文档中真实存在且未被清洗规则误删——比如正则[^\w\s\u4e00-\u9fa5]会删掉小数点,导致7.2变成72。











