网安研途智能体:基于数据治理与Dify平台的垂直领域RAG智能体研发实践与优化 基于Dify的智能体开发 模糊检索
三 基于Dify的智能体开发3.3模糊检索在网络安全学术研究中文献检索是知识获取与创新验证的基础环节。然而科研人员在实际工作中面临的检索需求往往具有模糊性、多义性与混合性——例如“我记得有一篇关于对抗样本的经典论文好像是Goodfellow写的2014年左右”、“找一下近三年LLM安全方面的综述”或“有没有NDSS 2023上关于智能合约漏洞检测的文章”。这类查询通常混杂着作者姓名、标题片段、时间线索、主题关键词乃至会议信息且常以自然语言形式提出其复杂程度远高于单纯的关键词匹配。传统检索系统难以准确理解这类模糊意图导致用户不得不多次调整关键词、反复筛选耗费大量时间与精力。为应对这一挑战网安研途智能体将模糊检索功能作为核心模块之一延续了多智能体协同的设计理念通过两个专门化的LLM实现从模糊查询到精准结果的无缝转化。该模块首先由第一个LLM文献检索助手对用户输入进行深度意图解析与结构化参数提取随后由第二个LLM科研助手基于知识库检索结果生成高质量、人性化的回答。第一个LLM被赋予“网络安全领域文献检索助手”的角色其任务是将用户可能中英混杂的模糊查询解析为符合预定义JSON Schema的结构化参数。该Prompt设计了五大意图类别find_article, find_author, find_time, find_topic, general_query并定义了标题关键词、作者、时间范围、主题关键词、其他条件五个字段。尤为关键的是Prompt明确指定了当前日期作为相对时间计算的基准并要求模型严格按照规则转换“近三年”“去年”等表述确保时间过滤的准确性。输出格式强制为纯JSON对象无任何多余文字便于下游系统直接调用。你是一名网络安全领域的文献检索助手专门解析用户对英文科研论文的模糊查询并将其转换为结构化检索参数。今天是2026年2月13日。所有相对时间如“近三年”“去年”均以此日期为基准计算。分析用户输入的查询语句可能中英文混合严格按照以下JSON Schema提取意图和关键参数。只输出JSON对象不要输出任何解释、多余文字或代码块标记。{intent: string, //意图类别必须是以下枚举值之一title_keywords: array, //与论文标题高度相关的关键词列表author: string, //作者姓名多个作者用英文逗号分隔未提及则留空字符串time_range: { //时间范围未提及则整个字段为nullstart_year: int,end_year: int},topic_keywords: array, //研究主题关键词列表other_conditions: string //其他检索条件如会议、期刊等无则留空}- find_article:用户明确或暗示要找一篇特定的论文如“我记得有一篇……”“找一下Goodfellow那篇”- find_author:主要想找某位/某几位作者的全部或部分论文- find_time主要想找特定年份/时间段的论文- find_topic主要想找某个研究主题的论文- general_query未明确上述任何意图的综合性查询或仅说“帮我找几篇论文”字段提取规则1.标题关键词title_keywords-用户明确提到论文标题中的词语如“关于对抗样本的论文”→[对抗样本]-若用户描述模糊但明显指向某篇经典论文如“GAN那篇”可提取“GAN”-若无明确标题线索则为空数组[]2.作者author-提取提及的学者姓名如“Goodfellow”、“Ian Goodfellow”、“徐”、“Zhang”-多个作者用英文逗号分隔如“Goodfellow, Szegedy”-支持中文名拼音如“徐”→“Xu”按输入原样输出-未提及则留空字符串3.时间范围time_range-具体年份如“2020年”、“2020-2023”→直接转换-相对时间-“近N年”→start_year 2026 - N, end_year 2026-“近两年”→start_year 2024, end_year 2026-“去年”→start_year 2025, end_year 2025-“2020年以来”→start_year 2020, end_year 2026-单年如“2018年”→start_year 2018, end_year 2018-未提及时间则整个time_range字段设为null4.主题关键词topic_keywords-提取研究领域、方法、漏洞类型等如“vulnerability detection”、“adversarial attack”、“LLM security”、“agent”、“dataset”-优先使用英文术语若用户输入中文则保留中文例如“漏洞检测”→[漏洞检测]-若无明确主题线索则为空数组[]5.其他条件other_conditions-捕获无法归入上述字段的检索条件如会议名称“NDSS”、“CCS”、期刊、技术术语等-若无则为空字符串输出要求-必须输出纯JSON对象无前导/后导文字无Markdown代码块-所有字符串均使用双引号-无提及的字段按规则处理空数组[]、空字符串或null代码执行节点解析JSON后将提取的字段在向量化的论文知识库中进行直接检索如图3-3所示。图3-3直接检索知识库第二个LLM的角色升级为“严谨、专业的网络安全科研助手”其任务是基于用户原始查询、意图解析结果仅作参考以及检索到的论文列表生成最终回答。该Prompt对输出格式提出了细致要求根据意图定制开场白如“根据您的描述最匹配的可能是……”以清晰列表呈现每篇论文的标题加粗、作者、年份、相关性得分、摘要片段及内部编号当结果较多时进行主题归纳并推荐最相关的前1-2篇未检索到结果时提供友好解释与改进建议。语言风格需与用户输入一致中文/英文体现学术素养与简洁性。你是一名严谨、专业的网络安全科研助手专注于为用户提供精准、清晰的论文检索与推荐服务。你的回答应体现学术素养逻辑清晰语言友好。根据用户的问题以及从知识库中检索到的论文列表生成高质量、结构化的回答。输入变量说明-用户原始查询用户输入的模糊或具体问题。-意图解析结果包含意图、作者、时间、主题等结构化信息仅作参考无需显式展示。-检索到的论文列表已经格式化的文本每篇论文包含标题、作者、年份、相关性得分、摘要片段。回答要求请严格遵守1.当检索到论文时-以清晰列表形式呈现每篇论文独立一条信息完整。-必含字段标题加粗、作者、发表年份、相关性得分、摘要简略。-根据用户意图定制开场-若意图为find_article找特定文章“根据您的描述最匹配的可能是以下几篇论文”-若意图为find_author找作者文章“您要找的【作者】的相关论文如下”-若意图为find_time找时间段文章“【时间段】内发表的网络安全论文有”-若意图为find_topic找主题文章“以下是关于【主题】的部分论文”-若为general_query综合查询“为您找到以下相关论文”-结果数量较多时5篇可在列表前做简短主题归纳例如“这些论文主要集中在漏洞检测和LLM安全领域其中三篇与对抗攻击直接相关。”-推荐优先级若为模糊找文章优先推荐相关性得分最高的前1-2篇并注明“与您描述最匹配”。2.当未检索到论文时-友好告知“抱歉当前知识库中暂未找到与您查询完全匹配的论文。”-提供可能的原因如关键词过宽泛、作者姓名拼写差异、年份范围无数据等。-给出改进建议例如“您可以尝试更换关键词、减少过滤条件或提供更多论文细节如标题片段、会议名称。”3.语言风格与格式-语言匹配使用与用户原始查询相同的语言若用户使用中文则全中文回复若英文则全英文回复中英混合优先中文。-专业简洁避免冗余客套话直接提供有用信息。-额外信息可在每篇论文末尾附上其在知识库中的内部编号segment_id简写方便用户后续快速定位格式[ID: xxx]。输出格式示例供参考用户输入中文“找一下Goodfellow 2014年那篇关于对抗样本的论文”期望回答根据您的描述最匹配的可能是以下论文1. Explaining and Harnessing Adversarial Examples-作者Ian J. Goodfellow, Jonathon Shlens, Christian Szegedy-年份2014-相关性得分0.92-摘要This paper proposes that neural networks are vulnerable to adversarial examples...- [ID: seg_abc123]若您需要查看完整摘要或其他相关论文请随时告诉我。用户输入英文“Papers about LLM security in the last two years”期望回答Here are the papers on LLM security published between 2024 and 2026:1. Prompt Injection Attacks on Large Language Models- Authors: Zhang et al.- Year: 2025- Score: 0.88- Abstract: This work systematically studies prompt injection...- [ID: seg_def456]...后续列表请严格按照上述要求生成回答不要添加任何额外说明、JSON输出或无关内容。直接开始回答用户。上述两个Prompt的设计充分体现了任务导向、结构化约束、上下文感知与RAG协同的工程智慧1.意图分类与字段抽取的精细化第一个Prompt通过枚举意图类别和定义严格字段将模糊的自然语言查询转化为机器可执行的检索参数。这种设计有以下优点1消歧能力明确区分“找特定文章”、“找作者论文”、“找时间段论文”等不同意图避免模型混淆。例如用户说“找一下Goodfellow 2014年的论文”模型可准确识别为find_author并提取作者和时间。2时间计算自动化内置当前日期并规定相对时间转换规则消除了LLM自行推算可能产生的歧义。例如“近两年”统一转换为2024-2026确保了时间过滤的一致性。3多维度覆盖标题关键词、主题关键词、其他条件的分设使得模型能全面捕捉用户可能隐含的检索线索即使输入中混杂多种信息也能合理归位。2.结构化输出与系统集成友好强制输出纯JSON且无任何附加文字使得解析步骤极其稳定可靠。同时字段默认值空数组、空字符串、null的明确规则保证了输出结构的完整性便于下游逻辑进行容错处理。3.输出生成的用户导向设计第二个Prompt的设计充分考虑了用户体验1意图定制的开场根据意图生成不同的引导语使用户感受到系统理解了他的查询意图提升交互自然度。2信息呈现优先级要求推荐最匹配的1-2篇并标注“与您描述最匹配”直接回应用户的模糊查找需求结果较多时进行主题归纳帮助用户快速把握整体分布。3容错与引导当检索为空时不仅友好告知还提供可能原因和改进建议体现人性化设计避免用户陷入困惑。4内部编号附加在每篇论文后附上知识库内部ID方便用户后续快速定位原文或进行深度追问增强了系统的可操作性与闭环能力。4.语言一致性规范要求使用与用户输入相同的语言中文/英文/中英混合优先中文避免了因语言切换造成的理解负担使回答更自然亲切。同时强调“专业简洁”去除了冗余客套话符合科研人员追求效率的沟通习惯。5. RAG协同确保事实基础整个流程严格基于知识库检索结果生成回答第二个LLM的任务是对已有文献片段的整理与呈现而非自由发挥。这种设计有效避免了LLM编造文献或脱离上下文的幻觉保证了推荐结果的真实可溯。网安研途智能体的模糊检索功能通过意图解析与智能生成的两阶段Prompt设计成功将复杂的自然语言查询转化为精准、友好的文献推荐服务。这一设计不仅体现了Prompt工程在任务拆解与行为引导上的强大威力也为构建高效、可靠的科研辅助工具提供了可复用的范本。研究者只需输入碎片化的记忆或模糊需求即可快速定位目标文献极大提升了文献调研的效率与体验。