基于AI的使用自然语言进行文件搜索的桌面软件设计及实现
背景
本人硬盘存储的文档有几十G(还没算上图片),大部分时间都是在吃灰。
试用过一些知名的搜索软件如 everything,根据路径或内容进行关键词匹配,很多场景下是够用的,不过对于我来说不太够,因为只有近期使用过的文档才有可能记得住零星关键词,更多的情况是对这些文档完全没印象。
另外,图片、音视频等内容就只能根据路径来搜索了。
需要一种能进行更模糊但是意思相近即可命中的搜索方法,向量搜索可以做这个事情。
目前市面上貌似没有类似的软件,所以我写了一个
期望拥有的功能特性
- 不需要精确匹配,意思相近即算命中
- 本地优先,最好不用联网
- 响应时间快,最好控制在100ms内
- 监听文件异动并自动索引
- 支持对文档、图片、音频及视频的内容进行搜索——真•文件内容搜索
- 能长时间稳定运行
基于跨平台目标及语义搜索特性来考虑,不做everything那种默认全盘搜索的功能
技术选型
其实主要就是语言选型
Python 、 C# 、 C++ 、 Rust 四选一
一开始想用python,不过python做桌面端有点勉强,综合考虑之后下选了 Rust。
整体基于Tauri2,Rust主要负责实现功能,界面用的是vue3+typescript
架构
索引过程:
保留对接私有化部署模型的能力
搜索过程:
最终效果

源码
核心代码
scanner.rs
indexing_template.rs
watcher.rs
完整源码见github: mango-desk








