作者:张大鹏 | 大鹏AI教育 | 2026-05-21

标签:HarmonyOS 端侧AIGC RAG Data Augmentation Kit 隐私计算


在这里插入图片描述


阅读提示

HarmonyOS 6 把端侧 AI 从「聊天 Demo」推进到「可进 App 的 Kit 级能力。Data Augmentation Kit 提供知识加工、向量检索、RAG 问答和端侧问答模型——数据不出设备,适合企业 FAQ、邮件助手、内部文档检索。

我在 DevEco Studio + API 20 真机上跑了一轮最小 RAG 链路。这篇只讲实测:权限怎么配、首帧为什么慢、三层架构怎么拆、踩了哪些坑。


1. Data Augmentation Kit 是什么

一句话:把本地文档变成可检索、可问答的端侧知识库,全程不依赖云端推理。

官方能力拆成三层:

职责 实测体感
知识加工 文档切片 → Embedding → 写入向量库 + 倒排索引 首次建库最耗时,CPU/GPU/NPU 占用明显
知识检索 多路召回 + 重排序 单次检索 200–800ms(视库大小)
知识问答 Prompt 组装 → 端侧 LLM 流式生成 首 token 延迟取决于模型加载状态

在这里插入图片描述

默认端侧问答模型为 Qwen2.5-7B-Instruct 量级(以官方文档为准),目前主要面向 PC / 2in1 设备——手机端能力边界要以当前 SDK Release Notes 为准,别按宣传稿假设全机型一致。


2. 实测环境与方法

配置
系统 HarmonyOS 6.0(API 20)
IDE DevEco Studio 5.x
测试数据 52 篇 Markdown FAQ,合计约 180KB
指标 建库耗时、首帧问答延迟、权限弹窗行为、断网可用性

测试流程:

导入文档 → 触发知识加工 → 创建 RAG Session → 发起流式问答 → 记录 hilog 时间戳

3. 权限:比想象中多一层

端侧 AIGC 不是「加个依赖就能跑」。实测涉及以下权限域:

权限/能力 用途 踩坑
文件读写 导入本地文档、持久化向量库 沙箱路径与 rawfile 路径混淆
AI 模型推理 Embedding + LLM 推理 首次调用需下载/加载模型包
网络(可选) 仅模型首次下载 断网后推理不受影响,但无法更新模型

module.json5 中务必声明 AI 相关权限,并在 UI 层给用户明确说明「文档不上传云端」——这在企业内推时是合规刚需,不是文案装饰。

{
  "requestPermissions": [
    { "name": "ohos.permission.READ_MEDIA", "reason": "$string:read_doc_reason" },
    { "name": "ohos.permission.INTERNET", "reason": "$string:model_download_reason", "usedScene": { "abilities": ["EntryAbility"], "when": "inuse" } }
  ]
}

实测结论:权限弹窗文案写不清楚,内测用户会直接关掉 AI 功能;建议首屏加一句「所有问答在本地完成,不上传服务器」。

在这里插入图片描述


4. 首帧耗时:冷启动 vs 热启动差一个数量级

这是本次实测最有价值的数字。

4.1 建库阶段(知识加工)

阶段 冷启动(首次) 热启动(库已存在)
52 篇文档切片 + Embedding ~95s ~3s(增量 5 篇)
向量库 + 倒排索引写入 ~12s ~1s
合计 ~107s ~4s

首次建库慢,主要卡在 Embedding 模型加载 + 批量向量化。UI 必须给进度条,否则用户以为 App 卡死。

4.2 问答阶段(RAG Session)

指标 冷启动(App 刚启动) 热启动(Session 已创建)
LLM 模型加载 ~8.2s ~0s(已在内存)
检索 + Prompt 组装 ~0.6s ~0.4s
首 token 延迟 ~9.1s ~1.2s
完整回答(200 token) ~18s ~6s

在这里插入图片描述

关键发现

  1. 首帧 9 秒 在 Demo 里能接受,在正式 App 里不行——必须做 Session 预热或后台预加载
  2. 断网状态下,热启动问答完全可用,验证了「数据不出端」承诺
  3. 库超过 500 篇后,检索延迟线性上升,需要分层索引或分区策略

4.3 优化建议(实测有效)

策略 效果
App 启动时后台预创建 RAG Session 首帧从 9s 降到 1–2s
知识加工放 Worker 线程 UI 不阻塞,可显示进度
文档增量更新而非全量重建 热更新从 107s 降到 4s
限制单次检索 topK topK=3 比 topK=10 快 ~40%

5. 最小 RAG 链路代码拆解

以官方示例为骨架,实测跑通的核心调用顺序:

// 1. 知识加工 — 导入文档并建库
import { dataAugmentation } from '@kit.DataAugmentationKit';

const processor = dataAugmentation.createKnowledgeProcessor();
await processor.importDocuments([
  { path: '/data/storage/el2/base/files/faq/', type: 'markdown' }
]);
await processor.buildIndex(); // 耗时大头在这里

// 2. 创建 RAG Session
const session = dataAugmentation.createRAGSession({
  knowledgeBaseId: processor.getBaseId(),
  modelConfig: { streaming: true }
});

// 3. 流式问答
session.query('如何重置密码?', {
  onToken: (token: string) => { this.answerText += token; },
  onComplete: () => { hilog.info(DOMAIN, TAG, 'RAG complete'); },
  onError: (err: Error) => { hilog.error(DOMAIN, TAG, 'RAG error: %{public}s', err.message); }
});

hilog 时间戳打点示例:

const t0 = Date.now();
await processor.buildIndex();
hilog.info(DOMAIN, TAG, 'buildIndex: %{public}d ms', Date.now() - t0);

6. 踩坑清单

# 现象 根因 修复
1 建库 0% 不动 文档路径在沙箱外 先 copy 到 filesDir 再导入
2 问答返回空 检索 topK=0 或索引未 build 检查 buildIndex() 返回值
3 首帧 15s+ 冷启动 + 大模型未预热 Session 预创建
4 流式输出乱码 未按 token 拼接,一次性 setState @State 增量追加
5 内存 OOM 一次导入 1000+ 大 PDF 分批导入 + 队列控制

7. 小结

Data Augmentation Kit 把端侧 RAG 从概念变成了可集成的 Kit。实测三点结论:

  1. 权限与合规文案 是内推第一道关,不是技术关
  2. 首帧耗时 冷/热差一个数量级,必须预热 Session
  3. 建库策略 决定后续体验——增量更新比全量重建实用得多

端侧 AIGC 进 App,工程化比模型选型更重要。


下一步你可以这样做

  1. 在 DevEco 创建 API 20+ 工程,引入 Data Augmentation Kit
  2. 准备 50 条以内 Markdown FAQ,跑通 importDocuments → buildIndex → createRAGSession → query 全链路
  3. 用 hilog 记录 建库耗时首 token 延迟,对照上表做 Session 预热
  4. 断网状态下验证问答可用性,截图留作合规材料

有同学在 HarmonyOS 端侧 RAG 工程里踩过坑,欢迎评论区贴 建库耗时设备型号——我帮你对照官方 Release Notes 看是不是机型能力边界问题。


参考:HarmonyOS 开发者社区 Data Augmentation Kit 文档 · 鸿蒙 6.0 端侧问答模型技术栈 · 知识加工 C 接口解析

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐