鸿蒙智能体开发实战:21.使用知识库 📅 发布时间:2026/7/13 21:46:33 👁️ 浏览次数: 前言在上一篇文章中我们详细介绍了如何在小艺开放平台上创建和发布知识库。但知识库本身只是一个资料仓库只有将其整合到智能体中配置合适的检索策略才能真正发挥知识库的价值。知识库与智能体的关系可以类比为参考书与学生参考书的内容再丰富学生也需要知道如何查阅、理解什么内容、如何组织答案。本文就是要教会你的智能体如何查阅参考书来回答用户问题。本文涵盖知识库在智能体中的绑定配置、检索参数调优、查询改写机制、无召回处理策略以及在角色指令中引用知识库的高级用法。知识库在智能体中的作用三大核心价值作用说明典型场景知识增强补充大模型未覆盖的特定领域知识产品手册问答、行业法规咨询事实控制约束智能体基于给定数据回答减少幻觉企业知识库、技术支持信息溯源回答可追溯至原始文档增强可信度客服系统、教育培训知识库问答的基本流程用户提问 ↓ 智能体接收问题 ↓ 知识库检索 → 匹配相关段落 ↓ 大模型基于检索结果生成回答 ↓ 返回带引用的答案给用户图1知识库问答的完整检索流程包含阈值过滤和段落匹配在智能体中添加知识库操作步骤进入智能体的编排页面找到“知识库”配置区域点击“添加”按钮在弹出的对话框中选择已创建的知识库点击“确认添加”完成绑定图2在智能体编排页面的知识库配置区域添加知识库一个智能体可以同时绑定多个知识库知识库之间是并行检索的关系。系统会从所有已绑定的知识库中检索相关内容合并后交给大模型生成答案。多个知识库的管理策略当绑定了多个知识库时需要注意以下事项1. 知识库内容应尽量不重叠 例如一个知识库存放产品文档另一个存放常见问题 2. 检索范围无优先级区分 系统会从所有绑定的知识库平等地检索内容 3. 合理控制总数据量 过多数据可能影响检索效率知识库检索配置详解在智能体的知识库设置中有三个关键参数直接影响检索效果。检索文本相关阈值定义设置检索召回知识库段落的相关系数范围0~1。工作原理# 检索阈值的工作原理示意defsearch_with_threshold(query:str,threshold:float)-list: 根据阈值筛选检索结果 Args: query: 用户查询 threshold: 相似度阈值 (0~1) Returns: 大于等于阈值的匹配段落 # 1. 对查询进行向量化query_vectorembed_query(query)# 2. 在知识库中搜索相似段落all_segmentssearch_similar(query_vector)# 3. 根据阈值过滤filtered[segforseginall_segmentsifseg.similarity_scorethreshold]returnfiltered阈值选择建议阈值范围效果适用场景0.7~0.9高精度只返回高度相关的内容技术文档、法规条款等需要高准确性场景0.5~0.7平衡模式兼顾精度和召回通用知识问答0.3~0.5高召回返回大量相关内容探索性问答、创意生成系数设置越高返回给大模型的内容片段完整度和相关度越高大模型生成的回复准确性也就越高。系数设置越低返回给大模型的内容片段完整度和相关度越低准确性和可用性也就越低。最大召回分段数定义召回并输入给大模型的最大分段数范围0~20。配置建议分段数场景说明1~3精确问答只使用最相关的少数段落4~8综合问答适用于内容覆盖较广的查询9~20复杂分析需要大量参考信息的场景数值越大返回给大模型的内容片段越多但可能引入噪声数值越少内容越精准但可能遗漏相关信息。最大召回Token数定义召回并输入给大模型的最大token数范围0~999999。配置建议- 简单问答场景1000~3000 tokens - 综合知识问答3000~8000 tokens - 复杂分析场景8000~20000 tokens 注意token数不宜过大否则会 1. 增加大模型的处理时间和成本 2. 引入过多无关信息影响回答质量 3. 可能超过大模型的上下文窗口限制参数配置示例{knowledge_base_config:{retrieval_threshold:0.65,max_segments:5,max_tokens:5000,query_rewrite:true}}查询改写机制为什么需要查询改写在多轮对话中用户的问题通常依赖于上下文语境仅凭用户最新一条提问可能无法准确识别其真实检索意图。例如问题1知识库检索节点可以用来做什么 回复1知识库检索节点可以基于用户输入查询指定的知识库... 问题2怎么用对于问题2如果脱离上下文系统无法判断用户指的是知识库检索节点怎么用。查询改写正是为了解决这个问题。查询改写的工作原理原始用户输入 怎么用 ↓ 结合对话历史上下文 ↓ 改写后输入 知识库检索节点怎么用 ↓ 执行知识库检索查询改写的配置在知识库设置中知识库检索节点默认开启查询改写。你无需额外配置即可享受查询改写的效果。# 查询改写的逻辑示意defquery_rewrite(original_query:str,conversation_history:list)-str: 基于对话历史改写用户查询 Args: original_query: 用户当前输入 conversation_history: 对话历史列表 Returns: 改写后的完整查询 # 结合上下文构建完整查询意图contextextract_context(conversation_history)rewrittenllm_rewrite(original_query,context)returnrewritten查询改写的最佳实践默认开启绝大多数场景下建议保持开启长对话场景查询改写效果更明显问题切换场景当用户切换到新话题时改写能自动适应关闭场景如果每次查询完全独立不需要历史上下文可以关闭无召回回复配置当知识库中没有匹配到相关内容时需要给用户一个合理的回应。配置方式知识库支持两种无召回回复模式模式说明示例默认回复系统使用预设的通用回复语“抱歉这个问题不在知识范围内”自定义回复开发者自定义回复内容“抱歉暂时未检索到相关内容有疑问请联系XXX”自定义回复配置示例# 知识库无召回回复配置no_recall_response:type:custom# 或 defaultmessage:抱歉我没有找到关于这个问题的信息。请尝试换个方式提问或联系我们的技术支持团队。自定义回复可以包含公司名称、联系方式等信息让用户体验更加友好。在角色指令中引用知识库除了自动检索外你还可以在智能体的角色指令中显式引用知识库内容。引用语法在角色指令中你可以使用特定语法来指导智能体如何利用知识库## 角色指令示例 你是一个产品技术支持专家。在回答用户问题时请遵循以下规则 1. 当用户询问产品功能时优先参考知识库中的产品文档 2. 如果知识库中有明确的答案直接引用并注明来源 3. 如果知识库中没有相关信息告知用户并尝试提供通用建议 4. 不确定的内容不要编造坦诚说明不确定性知识库引用指南## 知识库使用规则 - 知识库是唯一的权威信息来源 - 回答中应体现知识库中的具体内容 - 当知识库内容与大模型知识冲突时以知识库为准 - 可引用知识库中的特定章节或段落知识库问答效果测试测试方法配置完成后建议通过以下方式测试知识库的效果在编排页面直接对话测试在智能体编排页面的调试与预览区域发送问题观察回答是否基于知识库内容对比测试分别测试开启知识库和关闭知识库的回答差异边界测试测试知识库覆盖范围内的问题测试知识库未覆盖的问题观察无召回回复测试模糊含义的问题观察查询改写效果测试用例清单# 知识库测试用例test_cases[# 1. 知识库覆盖范围内的问题{query:产品的保修期是多久,expected:基于知识库回答},# 2. 需要多轮上下文的问题{query:那过期了怎么办,expected:基于上文知识库综合回答},# 3. 知识库未覆盖的问题{query:你们的竞争对手产品怎么样,expected:无召回回复},# 4. 模糊查询{query:怎么弄,expected:查询改写后检索},]调试技巧如果发现知识库回答不符合预期可以从以下角度排查# 知识库调试检查清单# 1. 检查知识库状态知识库是否已发布 → 确认状态为已上架# 2. 检查绑定关系智能体是否已绑定知识库 → 确认知识库在智能体配置中# 3. 检查检索参数阈值是否过高导致没有召回 → 尝试降低阈值 分段数是否太少 → 增加最大召回分段数# 4. 检查查询改写是否开启了查询改写 → 确认配置 对话历史是否正确传递 → 检查会话上下文知识库使用最佳实践检索配置优化策略# 推荐的检索配置策略# 策略一高精度模式适用于法规、合同等场景strategy_high_precision:threshold:0.8max_segments:3max_tokens:2000rewrite:true# 策略二平衡模式适用于通用问答strategy_balanced:threshold:0.65max_segments:5max_tokens:5000rewrite:true# 策略三高召回模式适用于探索性问答strategy_high_recall:threshold:0.45max_segments:10max_tokens:10000rewrite:true多知识库场景建议按主题拆分知识库产品知识库、技术文档库、FAQ库等便于管理和更新控制单个知识库大小推荐单个知识库文件不超过50个过大的知识库影响检索效率定期更新知识库设置更新周期建议每月审查一次及时淘汰过时的内容常见问题排查Q: 为什么知识库没有返回结果A: 可能的原因阈值设置过高、知识库内容与查询不匹配、知识库尚未发布、绑定关系未生效。Q: 为什么回答不够准确A: 尝试降低阈值以召回更多段落或增加最大召回分段数。同时检查知识库文档的质量和覆盖范围。Q: 多轮对话中知识库检索不准确怎么办A: 确认查询改写功能已开启。如果关闭了查询改写在多轮对话中用户的简短提问可能无法被准确理解。总结本文详细介绍了在智能体中使用知识库的各项配置和优化策略添加知识库绑定多个知识库到智能体的操作步骤检索配置文本相关阈值、最大召回分段数、最大召回Token数的调优方法查询改写多轮对话中自动理解用户意图的机制无召回处理知识库未命中时如何优雅回应角色指令集成在指令中明确知识库使用策略测试与调试确保知识库问答效果的验证方法知识库的威力不仅在于创建更在于合理配置检索策略使其与智能体的角色定位、业务场景完美匹配。掌握这些配置技巧你的智能体将能够更精准、更可靠地回答用户问题。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源小艺开放平台 - 开发者控制台知识库开发指南 - 官方文档在智能体中添加知识库 - 官方文档智能体编排指南 - 官方文档华为开发者联盟 - 文档中心小艺开放平台 - 知识库配置说明《生成式人工智能服务管理暂行办法》华为开发者联盟 - 管理控制台
ESG量化与跨境合规AI:绿色金融的新基建 title: "金融AI的下一个战场:ESG研究、量化回测与跨境业务"description: "分享3个前沿金融AI场景的开发思路——ESG评分体系、量化策略回测引擎、跨境业务智能方案"tags: ["金融AI", "ESG", "量化投资", "跨… 2026/7/13 21:42:32
展厅设计公司哪家强?2026国内五大展厅设计公司大盘点 近年来,企业展厅、数字展馆、产业馆、科技馆等展示空间建设需求持续增长。展厅已经不再只是“装修空间”,而是企业品牌传播、客户体验、招商展示、文化输出的重要平台。进入2026年,展厅设计行业竞争逻辑正在发生变化。过去企业主要关注设计效… 2026/7/13 21:38:30
AMD显卡AI创作终极指南:ComfyUI-Zluda让你的AMD显卡性能翻倍 AMD显卡AI创作终极指南:ComfyUI-Zluda让你的AMD显卡性能翻倍 【免费下载链接】ComfyUI-Zluda The most powerful and modular stable diffusion GUI, api and backend with a graph/nodes interface. Now ZLUDA enhanced for better AMD GPU performance. 项目地址… 2026/7/13 21:36:29
ROS2 Humble环境搭建避坑指南:版本对齐与依赖隔离实战 1. 这不是“又一个ROS教程”,而是你真正能跑通的第一课 很多人点开“ROS入门教程”时,心里想的是:装个系统、敲几行命令、看个小乌龟动起来,就算入门了。但现实是,90%的人卡在第一步——连 roscore 都起不来… 2026/7/13 23:08:58
从零实现Qt自定义按钮组件:掌握事件处理与绘图机制 1. 项目概述与核心价值最近在带几个刚入行的C开发新人,发现他们虽然语法过关,但一碰到需要自己动手封装UI组件、处理复杂交互逻辑时就有点发怵。这让我想起自己刚接触Qt那会儿,也是对着官方文档里那些QPushButton、QWidget一头雾水࿰… 2026/7/13 23:04:58
Maven 常用命令详解:从入门到精通 1. Maven 简介Maven 是一个强大的项目管理和构建自动化工具,广泛应用于 Java 项目开发。它通过一个名为 pom.xml(Project Object Model)的配置文件来管理项目的构建、依赖和文档。掌握 Maven 命令是高效使用 Maven 的基础。2. 核心命令分类2.… 2026/7/13 23:04:58
编译程序四元式生成:3种表达式(算术、布尔、赋值)的语义动作详解 编译程序四元式生成:3种表达式(算术、布尔、赋值)的语义动作详解在编译器设计的语义分析与中间代码生成阶段,表达式翻译是最核心的技术难点之一。本文将深入解析算术表达式、布尔表达式和赋值语句这三种典型结构的语法制导翻译方案… 2026/7/13 23:04:57
系统分析与需求分析实战辨析:3个核心差异点与2类项目适用场景 系统分析与需求分析实战辨析:3个核心差异点与2类项目适用场景 引言:为什么我们需要区分这两个概念? 在软件开发生命周期中,系统分析和需求分析常常被混为一谈。许多1-3年经验的工程师在产品评审会上听到"做个系统分析"… 2026/7/13 23:02:57
Rancher 2.6.4 监控配置实战:3步创建 ServiceMonitor 监控 Java 应用 JMX 指标 Rancher 2.6.4 监控配置实战:3步实现Java应用JMX指标采集在Kubernetes生产环境中,Java应用的性能监控一直是运维团队的核心需求。本文将深入探讨如何利用Rancher 2.6.4内置的Prometheus Operator,通过ServiceMonitor CRD快速建立Java应用的JM… 2026/7/13 23:02:57
HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点 HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70个痛点 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经在Honey Select 2中遇到过… 2026/7/13 0:01:19
语音转文字工具AsrTools:让音频整理变得简单高效 语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text … 2026/7/13 0:03:19
基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_ 基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 独家界面!不会重复,此项目属于本人原创,若有雷同,均是盗卖,各位买… 2026/7/13 0:05:20
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/13 2:34:55