Find My Thingy:一个由 Gemma 3 4B 驱动的本地优先 AI 记忆助手
你是否曾记得把某个重要的东西保存在一份文档里,却想不起来它在哪个文件中?
也许是一段代码、一条项目笔记、一段解释,或者是你几周前写下的一个想法。
为了找到一个小小的细节而翻遍多个文件,实在令人沮丧。
这就是Find My Thingy背后的要解决的问题。
什么是 Find My Thingy?
Find My Thingy 是一个本地优先的个人记忆助手,帮助你用自然语言问题找到存储在文档中的信息。
无需手动打开文件并搜索关键词,你可以把文档添加到应用中,并就其内容提问。
应用会检索相关段落,并使用本地运行的 AI 模型生成带有来源引用的答案。
思路很简单:你的信息留在你自己的设备上,你随时可以就它提问。
它是如何工作的?
工作流程有四个主要步骤:
- 添加文档:导入 PDF、TXT 文件和 Markdown 笔记。
- 提取并索引:应用提取文本,将其切分成块,并创建嵌入。
- 检索相关信息:当你提问时,系统会搜索相关的文档段落。
- 生成答案:通过 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 的目标很简单:不再翻遍你保存的所有东西,而是直接询问你记得的内容。
