DocuBrowse v0.9.1: 本地 AI 驱动的文档搜索引擎

DocuBrowse v0.9.1: 本地 AI 驱动的文档搜索引擎

DocuBrowse v0.9.1 是一款本地、开源的文档搜索引擎,旨在将无结构的文档堆转化为可搜索的知识库。通过将传统的关键词搜索与 AI 驱动的语义相似度相结合,它允许用户基于含义而非仅仅是精确的词语匹配来查找文档,同时确保所有数据都完全保留在本地机器上。

核心搜索能力

DocuBrowse 采用混合搜索算法以最大化检索准确度。默认情况下,它会合并来自两种不同模式的结果:

  • 关键词搜索: 利用 SQLite FTS5 在标题、作者、主题、标签和内容片段中进行快速全文搜索。它使用归一化到 0–1 范围的 BM25 评分。
  • 语义搜索: 使用 Ollama embeddings (nomic-embed-text:latest) 来计算查询语句与文档嵌入之间的余弦相似度。应用 0.30 的最小阈值以过滤掉无关结果。
  • 混合模式: 最终的相关性评分计算方式为 0.3 × keyword_score + 0.7 × semantic_score

AI 驱动的文档洞察

除了搜索,DocuBrowse 还提供自动化的内容摘要。用户可以点击任何文档标题来通过运行在 Ollama 上的 dolphin3:latest 模型生成“Kindle 风格”的书籍简介。这些简介是按需生成的,并缓存到 SQLite 数据库中以避免重复计算。

支持的格式与索引

DocuBrowse 支持广泛的文档类型,包括 PDF、Word 文档 (.docx)、PowerPoint 演示文稿 (.pptx)、Excel 表格 (.xlsx)、OpenDocument 格式 (.odt, .ods, .odp)、电子书 (EPUB, MOBI, AZW3, AZW)、HTML 和 Markdown。

PDF 处理

索引过程非常稳健,使用 pdfplumber 作为主要提取器,并使用 pypdf 作为处理臃肿文件的备选方案。系统会自动检测扫描版(仅图像)PDF,并将其路由到特定列表 (ocr_list_pdfs.txt) 中,以便用户识别需要进行 OCR 的文件。

电子书与 OpenDocument 支持

截至 0.9.1 版本,该工具现在通过 Python 的标准库原生支持 OpenDocument 格式 (.odt, .ods, .odp)。电子书索引依赖 ebooklib 和 Calibre 进行元数据提取以及 MOBI/AZW3 格式的转换。

隐私与安全

DocuBrowse 秉持“你的数据,你的 AI”理念,确保不需要互联网连接、API 密钥或云端账户。

PII 保护

系统包含一个摄取后的扫描器,用于检测社会保障号码 (SSN)、信用卡号、银行路由/账号、出生日期和护照号码的模式。包含 PII 的文档会被从索引中移除并永久列入黑名单,以防止意外泄露。

本地加固

为了防止来自恶意网页的未经授权访问,服务器绑定到 localhost 并实施了多项安全措施:

  • Host-header 允许列表: 拒绝所有除非 Host 为 localhost127.0.0.1[::1] 的请求,以挫败 DNS-rebinding 攻击。
  • CSRF Tokens: 所有改变状态的操作(例如 /api/delete/api/open)都需要每个进程特有的 X-CSRF-Token 和回环地址来源。
  • Stored-XSS 防止: 文档字段经过 HTML 转义,且卡片操作使用委托监听器而非内联 onclick 处理程序。

系统要求与安装

硬件要求

  • 最低配置: 8 GB RAM,x86_64 或 ARM64 CPU。无需 GPU 即可运行,但简介生成速度会较慢。
  • 推荐配置: 16 GB RAM,4 GB+ vRAM (NVIDIA 或 Apple Silicon) 用于 GPU 加速。

安装

DocuBrowse 可通过 RPM、DEB、tarball 形式在 Linux 上使用,通过 zip 形式在 Windows 上使用,以及通过 dmg 形式在 macOS 上使用。它需要 Python 3.9+,并在首次运行时自动处理 Ollama 和所需模型 (nomic-embed-textdolphin3) 的安装。

社区洞察与观点

社区的用户和开发者都强调了本地优先 AI 工具的价值。

"并非所有个人文档都想推送到他人的云端。很高兴看到一个能把一切都保存在磁盘上的工具。"

一些用户建议未来可以集成 Google Drive 或 Dropbox 等云存储提供商,以及提供 Docker 部署选项以简化不同环境下的设置。

Sources