基于AI的使用自然语言进行文件搜索的桌面软件设计及实现

26 阅读2分钟

背景

本人硬盘存储的文档有几十G(还没算上图片),大部分时间都是在吃灰。

试用过一些知名的搜索软件如 everything,根据路径或内容进行关键词匹配,很多场景下是够用的,不过对于我来说不太够,因为只有近期使用过的文档才有可能记得住零星关键词,更多的情况是对这些文档完全没印象。

另外,图片、音视频等内容就只能根据路径来搜索了。

需要一种能进行更模糊但是意思相近即可命中的搜索方法,向量搜索可以做这个事情。

目前市面上貌似没有类似的软件,所以我写了一个

基础功能

  1. 不需要精确匹配,意思相近即算命中
  2. 本地优先,最好不用联网
  3. 响应时间快,最好控制在100ms内
  4. 监听文件异动并自动索引
  5. 支持对文档、图片、音频及视频的内容进行搜索——真•文件内容搜索
  6. 能长时间稳定运行

基于跨平台目标及语义搜索特性来考虑,不做everything那种默认全盘搜索的功能

技术选型

其实主要就是语言选型

Python 、 C# 、 C++ 、 Rust 四选一

一开始想用python,不过python做桌面端有点勉强,综合考虑之后下选了 Rust。

整体基于Tauri2,Rust主要负责实现功能,界面用的是vue3+typescript

架构

索引过程:

保留对接私有化部署模型的能力

mango-desk-indexing.png

查询过程:

mango-desk-search.png

最终效果

search.gif

剩余问题

图片、音频的解析依赖云端模型,需要改造成本地

关键词精确查找文件内容

源码

核心代码:

scanner.rs

indexing_template.rs

watcher.rs

完整源码已放在github:mango-desk