V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lgc653
V2EX  ›  分享发现

使用 RAG 学习 HarmonyOS

  •  
  •   lgc653 · 6 天前 · 549 次点击

    背景介绍

    随着微信 HarmonyOS 版本的发布,HarmonyOS 已经构筑了自己的基本版图,未来在信创领域也将大有所为,而目前熟悉 HarmonyOS 的开发者还比较少,网上相关的资料也比较落后,导致搜索引擎和 AI 大模型的检索、对话质量都不高。

    那么遇到了疑难问题,我们除了查询 API 文档,是否还有更加便捷一些的办法呢,这里我使用了 RAG 技术,根据网络公开分享的 HarmonyOS 文档以及OpenHarmony代码仓库制作了 HarmonyOS 的资料库。

    为了应对向量检索命中率并不优秀的弱点,这里加入了全文索引和一些自定义的 RANK 规则组成混合索引,实际应用中效果还是非常不错。在日常开发和学习 HarmonyOS 时都有不错的效果。

    技术方案

    现在的 RAG 技术大多基于云平台,部署比较麻烦,运行也比较消耗资源,我这里采用的轻量级的方案:

    • 界面使用 electron 开发,所有技术栈基于 nodejs ,最终成品一键安装。
    • 基于本地文件目录做索引,方便快捷,文件管理轻松自如
    • 使用 langchain 做 document_loaders ,并自己根据不同文件类型开发了分块函数
    • 使用 lancedb 做本地向量库,无需任何第三方依赖
    • 使用 transformers.js 做 embedding ,当然也支持调用大模型的 embedding API
    • 使用 sqlite3 做全文索引
    • 使用 jieba 进行分词,根据词性和权重进行关键词过滤重排
    • 使用大模型 API 进行对话

    实际使用过程中,这套方案部署简单(一键本地安装),查询质量也并不比大型 RAG 系统差,当然主要是以下几个原因

    • 向量查询+全文索引能够起到很好的组合作用,通过配置参数可以让两者起到很好的互补,比如使用“全文索引+jieba 分词的词性或权重过滤+选用 AND 还是 OR 的逻辑”的简单配置,可以大幅提升知识库命中率
    • 自定义的 rerank 规则,虽然不及现在的 rerank 模型先进,但是简单有效
    • 根据不同文件类型的特点,自定义了分块函数,比如 markdown 优先按照标题分割,然后再进一步分块,这样比无脑按 token 大小分块更加能保持上下文的完整性

    产品实现

    新建知识库

    我这里自己做了一个示例,大家可以下载看看效果。

    下载地址: https://pan.baidu.com/s/1bZ4sCG21yZJEz2JqIES7YQ?pwd=aw8w ,下载HarmonyOS 应用开发者基础认证.zip后解压到硬盘任意目录,

    左侧主菜单选择知识库知识库设置,新建时目录选择刚才的HarmonyOS 应用开发者基础认证.zip解压目录

    image-20250115141337947

    验证索引

    索引已经建好,执行验证索引操作验证一下,在列表中找到刚才新建的知识库,点击索引按钮。

    image-20250115141856194

    验证完成后索引按钮前的图标变成✅即可

    知识库应用

    知识库问答

    image-20250115142237447

    如果对大模型的回答有疑虑,可以点击左侧图标打开文件进行详细学习和进一步的 AI 问答

    image-20250115142349636

    图片识别

    网络中获取的一些资料不是文本格式,不利于搜索问答,例如

    image-20250115142958387

    通过图片识别功能(需模型支持多模态功能)来识别题目后进行问答

    image-20250115143216119

    image-20250115143243040

    HTTP 服务器模式

    一台机器知识库开启 HTTP 服务器,同局域网中所有设备均可访问,轻松将本地资料库分享给大家

    image-20250115143544249

    使用 HTTP 服务器时,如您的模型需要借助特定软件上网才能访问,请使用特定软件的Tun 模式

    image-20250115144010196

    其它设置

    • 向量搜索阈值:评级值越小代表匹配的更好。大于这个阈值的数据将不会被命中,设为 0 则代表不使用阈值,推荐在 0.6 到 1.0 之间。
    • 全文索引关键字阈值: 全文索引关键字阈值,关键字权重小于此阈值的,不被作为全文索引关键字,推荐在 5 到 8 之间。
    • 全文索引关键字匹配个数:全文索引关键字匹配个数,个数越多越精确。小于这个个数的数据将不会被命中,推荐在 1 到 3 之间。

    以上参数设置为推荐即可,一般不需要改变

    比较重要的全文索引匹配规则

    • 精准:适合判断题、单选题
    • 宽松:适合多选题、简答题

    扩展知识库

    如果下载的知识库不能让你满意,可以自行扩展知识库,知识库支持 pdf 、docx 、doc 、pptx 、ppt 、epub 、md 、markdown 、srt 、txt 、html 等多种文件格式进行索引。

    拷贝对应文件到文件夹,点击索引按钮,选择全量索引增量索引即可

    image-20250115144855294

    索引生成完毕可以将您的文件夹拷贝分享给其它人

    相关下载

    Local Agents

    HarmonyOS 知识库

    该知识库为《 HarmonyOS 应用开发者基础认证》构建,内容来源于网络公开分享的 HarmonyOS 文档、题目以及OpenHarmony代码仓库。

    下载HarmonyOS 应用开发者基础认证.zip后解压到硬盘任意目录

    配置模型

    需要配合大模型使用,需要申请大模型 apiKey

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   997 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:02 · PVG 06:02 · LAX 14:02 · JFK 17:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.