Dify可零代码实现图书精准检索与个性化推荐:先上传含书名等字段的CSV元数据并配置混合检索,再创建智能体执行RAG查询,最后通过工作流基于阅读偏好生成定制书单。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让读者输入一句话就能精准找到馆藏图书,还能根据阅读偏好自动推荐匹配书单,Dify能直接实现这个需求,不需要写一行代码,全部在网页界面点选配置。
准备图书元数据与知识库
先整理好你的图书数据:每本书必须包含书名、作者、ISBN、分类号、简介、出版年份字段,保存为CSV或Excel文件(注意首行是字段名,不要空行)。如果已有MARC格式,需用工具转成CSV;若直接从图书馆OPAC导出,检查是否含乱码,用UTF-8编码另存。
登录Dify控制台→左侧导航栏点击【知识库】→右上角【+ 新建知识库】→填写名称如“馆藏图书元数据”,描述可填“含3276本中文图书结构化信息”→点击【创建】。
进入新建的知识库页面→点击【上传文件】→拖入你准备好的CSV文件→勾选【自动检测分隔符】和【首行为标题】→点击【确认上传】。这一步耗时取决于文件大小,10MB以内通常10秒内完成解析。
【必须确保CSV中“简介”列内容不为空,否则RAG检索时会丢失关键语义特征】
配置多模态检索增强(支持关键词+语义混合搜索)
知识库上传完成后,不要急着测试,先优化检索逻辑:点击知识库右上角【设置】图标→切换到【检索设置】标签页。
方法一:启用混合检索策略
开启【关键词检索】开关→将权重设为30%;开启【向量语义检索】开关→权重设为70%;在【分块大小】中输入512→【重叠长度】设为64。这样既能命中标题/作者等精确字段,又能理解“适合初中生读的科幻小说”这类自然语言查询。
方法二:添加过滤条件强化准确性
在【元数据过滤】区域点击【+ 添加条件】→字段选择“出版年份”→操作符选“≥”→值填“2010”→再点一次【+ 添加条件】→字段选“分类号”→操作符选“包含”→值填“I247”(中国图书馆分类法中“小说”大类)。这样用户搜“近年热门小说”,结果不会混入1980年代出版的旧书。
保存设置后,系统自动触发向量化重建,状态栏显示“处理中”约2–5分钟,期间不可修改知识库内容。
搭建图书检索智能体
回到Dify首页→点击【+ 新建】→选择【智能体】→类型选【聊天助手】→名称填“图书检索小助手”,描述写“输入任意需求,返回匹配图书列表及馆藏位置”→模型选你已配置的本地DeepSeek或Qwen2-7B→点击【创建】。
Qwen 视频智能分析基础客户端(免费版),基于 Qwen 3.5 Plus 多模态模型对本地视频进行内容分析,支持场景描述与基础内容理解,采用默认抽帧频率和提示词,适合快速概览视频,API Key 读取自 ~/.skill-platform/skill-platform.json 的 skills 配置。
进入编辑界面→左侧菜单选【提示词编排】→在系统提示词框中粘贴以下内容:
你是一个高校图书馆专业检索员。用户提问可能含模糊表达(如“讲人工智能伦理的入门书”),请严格按三步响应:①提取核心主题词与限制条件(如年龄、难度、格式);②调用知识库执行混合检索;③仅返回至多5本最匹配图书,每本按固定格式输出:【书名】《XXX》|作者:XXX|索书号:XXX|馆藏地:XXX|简介:XXX(限50字内)。禁止解释、禁止补充说明、禁止生成不存在的图书。
在用户提示词模板中输入:请帮我找{query}。→点击【保存】。
接着切到【功能设置】→开启【启用知识库检索】→在下拉菜单中勾选刚建好的“馆藏图书元数据”知识库→【检索模式】选“混合检索”→【最大返回条数】设为5→【相关性阈值】滑块拉到0.65(太低易召回无关书,太高可能漏检)。
构建个性化书单生成工作流
第一步:创建新工作流
首页点击【+ 新建】→选择【工作流】→名称填“个性书单生成器”,描述写“基于用户阅读历史与偏好生成定制化书单”→点击【创建】。
第二步:添加用户输入节点
画布空白处双击→选择【用户输入】节点→字段名填“阅读偏好”,类型选“文本”,提示语写“请简单描述您最近喜欢的1–2本书,或您的阅读兴趣方向(如:喜欢东野圭吾的推理小说,想尝试类似风格)”→勾选【必填】→保存。
第三步:连接知识库检索节点
从左侧组件栏拖入【知识库检索】节点→双击配置→知识库选“馆藏图书元数据”→检索方式选“语义检索”→在【检索查询】字段中输入:与{阅读偏好}风格/主题高度相似的图书,排除已提及的书名→设置【返回数量】为8。
第四步:插入排序与精炼节点
拖入【代码】节点→选择Python运行时→在代码框中粘贴:
result = sorted($input, key=lambda x: float(x.get('score', 0)), reverse=True)[:5]
return result
这一步把语义匹配得分最高的前5本筛出来,去掉冗余结果。
第五步:配置最终输出格式
拖入【应答】节点→在消息内容中输入:
为您精选的5本推荐图书:
{% for item in $input %}?《{{ item.title }}》|作者:{{ item.author }}|理由:{{ item.reason }}
{% endfor %}
→点击【保存】→点击右上角【发布】。










