Find My Thingy:一个由 Gemma 3 4B 驱动的本地优先 AI 记忆助手

你是否曾记得把某个重要的东西保存在一份文档里,却想不起来它在哪个文件中?

也许是一段代码、一条项目笔记、一段解释,或者是你几周前写下的一个想法。

为了找到一个小小的细节而翻遍多个文件,实在令人沮丧。

这就是Find My Thingy背后的要解决的问题。

什么是 Find My Thingy?

Find My Thingy 是一个本地优先的个人记忆助手,帮助你用自然语言问题找到存储在文档中的信息。

无需手动打开文件并搜索关键词,你可以把文档添加到应用中,并就其内容提问。

应用会检索相关段落,并使用本地运行的 AI 模型生成带有来源引用的答案。

思路很简单:你的信息留在你自己的设备上,你随时可以就它提问。

它是如何工作的?

工作流程有四个主要步骤:

  1. 添加文档:导入 PDF、TXT 文件和 Markdown 笔记。
  2. 提取并索引:应用提取文本,将其切分成块,并创建嵌入。
  3. 检索相关信息:当你提问时,系统会搜索相关的文档段落。
  4. 生成答案:通过 Ollama 运行的 Gemma 3 4B 会基于检索到的信息生成答案。

来源引用帮助你追溯答案出自哪份文档。

技术栈

以下是构建该项目所用的技术:

  • 前端:React、Vite、TypeScript、Tailwind CSS
  • 后端:Python、FastAPI
  • 数据库:SQLite
  • 向量数据库:ChromaDB
  • 嵌入:Sentence Transformers(all-MiniLM-L6-v2)
  • 本地 AI:通过 Ollama 运行的 Gemma 3 4B
  • PDF 处理:PyMuPDF

为什么采用本地优先?

我希望这个应用在日常的文档检索和问答中,无需依赖托管的 AI API 就能工作。

通过 Ollama 在本地运行 Gemma,意味着一旦安装了所需的模型和依赖,应用就能在用户自己的机器上处理问题。

有一个初始设置要求:应用需要先下载好依赖和模型,才能完全离线运行。

主要功能

  • 导入 PDF、TXT 文件和 Markdown 文档。
  • 使用自然语言问题搜索文档内容。
  • 基于检索到的段落生成答案。
  • 显示来源引用。
  • 将个人记忆与文档内容分开存储。
  • 使用本地运行的语言模型。
  • 通过仪表板管理文档和已保存的记忆。

开发过程中的挑战

构建一个本地 AI 应用不仅仅是把模型连接到聊天界面。

一些重要的挑战包括:

  • 从不同文档格式中提取有用的文本。
  • 为检索创建有意义的文本块。
  • 当可用上下文不支持答案时避免作答。
  • 连接前端、后端、向量数据库和本地模型。
  • 管理模型可用性和本地依赖项。
  • 让安装过程对 Windows 用户来说易于理解。

一个重要的教训是,一个有说服力的 AI 回复还不够。应用还需要展示信息来自哪里,并避免做出没有依据的断言。

当前局限

这仍然是一个进行中的项目。一些局限包括:

  • 扫描版 PDF 目前未使用 OCR 处理。
  • 索引是同步的。
  • 聊天历史仅在会话期间保留。
  • 记忆提取是尽力而为的。
  • 该应用是为可信的本地设备设计的,而非多用户部署。

下一步是什么?

我希望改进的一些方面:

  • 为个人记忆提供更好的语义检索。
  • 更稳健的文档处理。
  • 更顺畅的一键式 Windows 安装和启动体验。
  • 改进检索评估和测试。
  • 更好地支持更大的文档库。

试用一下

GitHub 仓库: https://github.com/Drishya-code/Find-My-Thingy

该仓库包含源代码和安装说明。

如果你探索这个项目,我尤其希望得到关于检索质量、本地安装体验以及如何让助手更有用的反馈。

Find My Thingy 的目标很简单:不再翻遍你保存的所有东西,而是直接询问你记得的内容。

感谢阅读!