← 返回信息流
AI 资讯Hacker News·1 小时前

文档堆变可搜索知识库

原标题:Turning a pile of documents into a searchable useable knowledge base

速览

该技术利用AI将大量文档转化为可搜索的知识库,便于信息检索与利用。通过自然语言处理与索引,用户能快速获取所需知识,提升工作效率。这对企业知识管理具有重要意义。

AI 深度解读

背景

在工作和个人知识管理中,我们常常面对大量散落的文档——PDF、电子书、Word文件、笔记、源代码等。这些文件分散在硬盘的不同目录,缺乏统一的搜索和管理手段。传统的文件搜索工具(如系统自带的搜索)只能基于文件名或简单文本匹配,无法理解文档的语义含义,更无法在文件未打开前提供摘要预览。同时,云端AI方案存在隐私泄露风险,且依赖网络和API费用。DocuBrowse 正是为了解决这一痛点而诞生:一个完全本地运行、基于AI的文档搜索引擎,将杂乱的文件堆转化为可搜索、可交互的知识库。

核心内容

DocuBrowse 是一款开源的本地文档搜索引擎,支持 Linux(RPM、DEB、tarball)、Windows(zip)和 macOS(dmg)平台。它的核心功能是:将你指定的任意目录下的文档(PDF、DOCX、PPTX、XLSX、EPUB、MOBI、AZW3、AZW、HTML、TXT、Markdown 等)建立智能索引,同时支持关键词搜索和AI语义搜索,并提供即时AI摘要、个人信息保护(PII扫描)、标签云、分页结果、暗色/亮色主题切换等功能。所有处理完全在本地机器上完成,无需互联网连接,无需账户,无需API密钥,也不产生按次查询费用。

技术架构: 底层使用 SQLite FTS5 实现关键词全文搜索,同时通过 Ollama 加载本地 AI 模型(nomic-embed-text:latest 用于生成语义嵌入,dolphin3:latest 用于生成摘要)。搜索模式有三种:纯关键词搜索、纯语义搜索(AI相似度)、默认的混合模式(70% 语义 + 30% 关键词,合并后重排序)。搜索延迟通常小于150毫秒。

文档处理细节:

  • PDF:首选 pdfplumber,遇到复杂对象文件回退到 pypdf;对布局复杂的文件自动重试(layout=False);扫描型(纯图像)PDF 会被检测并记录到 ocr_list_pdfs.txt 中。
  • Word 文档:使用 python-docx 提取段落、表格和核心属性(标题、作者、主题)。
  • 演示文稿:使用 python-pptx 提取幻灯片文本、备注和核心属性。
  • 电子表格:使用 openpyxl 提取单元格值和工作表名称。
  • 电子书:EPUB 使用 ebooklib;MOBI/AZW3 使用 mobi 包 + Calibre 回退;DRM 加密的 AZW 只索引元数据(标题/作者可见,正文不可搜索)。
  • 元数据:从文档元数据字段提取标题、作者、主题;根据目录结构和内容关键词自动生成标签。

用户界面:

  • 搜索结果卡片显示相关性分数徽章(0–100%),点击任何文档标题可生成AI摘要(类似Kindle书籍封底简介),点击结果即可在不打开文件的情况下获得AI摘要。
  • 每个结果卡片有“打开”按钮(通过 xdg-open 在默认应用中打开文件)、📋 复制路径、🗑 删除文件并从索引中移除(需确认)。
  • 如果文档已被移动或删除,点击时根据文件系统是否挂载显示不同的提示(可关闭的模态框或 toast 通知)。
  • 支持分页(每页50个文档)、字母索引栏(A–Z, 0–9)、标签云过滤、暗色/亮色主题切换。
  • 设置页面(/settings)包含:文档目录(实时目录浏览器)、多个附加扫描目录、工作目录、端口、忽略目录管理(可添加忽略目录,并确认后清除已索引的文档)。

安装与使用: 提供多种安装包,安装后通过 CLI 命令 docubrowser start 启动服务器,docubrowser rescan 扫描并索引文档,docubrowser open 打开Web UI。首次启动时自动检查并安装 Ollama 及所需模型。支持多格式扫描,可通过 --limit 限制文件数,--workers 指定并行进程数。

安全与性能:

  • PII保护:扫描后自动检测社会安全号码、信用卡号、银行路由/账号、出生日期、病历号、驾照、护照模式,匹配的文档会被移除并永久黑名单。
  • 内存安全:使用内核强制的 RLIMIT_AS(每个工作进程6GB内存限制)+ 基于空闲内存阈值的暂停/恢复机制。
  • 并行PDF提取:使用 ProcessPoolExecutor,按物理核心数自动调整工作进程数。

关键要点

  • 完全本地运行:使用本地AI模型(Ollama + nomic-embed-text + dolphin3),无需网络、账户、API密钥,数据不出本地。
  • 双模式搜索:同时支持 SQLite FTS5 关键词全文搜索和 AI 语义相似度搜索,默认混合模式(70%语义 + 30%关键词)提供最佳结果。
  • 即时AI摘要:点击任何文档标题,由本地 AI 模型(dolphin3)生成 Kindle 风格的摘要,首次生成后缓存到数据库。
  • 广泛格式支持:覆盖 PDF、Office 文档、电子书(EPUB、MOBI、AZW3等)、纯文本、HTML、Markdown,甚至源代码文件。
  • PII保护:自动扫描并移除包含敏感个人信息(SSN、信用卡号等)的文档,并永久黑名单。
  • 高性能:典型搜索延迟 <150ms,并行 PDF 提取利用多核,内存限制保护系统稳定。
  • 跨平台包分发:提供 RPM、DEB、tarball、Windows zip、macOS dmg,安装简单。
  • 丰富的用户界面:包括分页、字母索引、标签云、暗色/亮色主题、结果卡片操作(打开、复制路径、删除)等。
  • 灵活的扫描选项:支持按文件类型扫描、限定文件数、并行工作进程数,可随时添加/删除扫描目录和忽略目录。
  • 开源且稳定:接口稳定,避免破坏性变更,提供完整的卸载脚本。

意义与影响

DocuBrowse 填补了本地文档管理和智能搜索之间的空白。它让个人用户和小型团队能够在不依赖云服务、不泄露隐私的前提下,获得类似云端知识库的体验。其意义在于:

  1. 隐私优先:所有索引和AI处理都在本地完成,数据主权完全掌握在用户手中,特别适合处理敏感文档(合同、医疗记录、财务文件等)的场景。
  2. 降低AI使用门槛:通过集成 Ollama 和本地模型,用户无需理解复杂的AI部署流程,即可获得语义搜索和摘要生成能力,推动 AI 在个人知识管理中的普及。
  3. 效率提升:将分散的文件转化为统一的可搜索知识库,允许用户通过自然语言查询(如“那份关于续租的合同”)找到文档,即使关键词不匹配也能找到,大幅减少手动查找时间。
  4. 开源生态贡献:作为开源项目,DocuBrowse 的代码和架构可供其他开发者参考和扩展,促进本地 AI 应用的发展。
  5. 对云端方案的替代:对于注重隐私或处于离线环境的用户,DocuBrowse 提供了一个比云端方案(如 Google Drive 搜索、Notion AI)更安全、更可控的替代品。

总体而言,DocuBrowse 代表了“本地优先+AI增强”工具的发展方向,在隐私、性能和易用性之间取得了良好平衡,有望成为个人知识管理领域的重要工具。

查看原文 →github.com