{"slug": "show-hn-a-local-rag-desktop-app-piflow", "title": "Show HN: A local RAG desktop app: piFlow", "summary": "PiFlow, a fully local retrieval-augmented generation (RAG) desktop application, has been released as an open-source project on GitHub, enabling users to import local documents, build knowledge bases, and ask natural-language questions with all parsing, embedding, retrieval, and inference running locally or on a user-specified server. The app, built with Tauri 2 and a Node.js sidecar, supports multi-format parsing including PDF, Markdown, TXT, and HTML, uses BGE-M3 for embeddings, and offers pluggable generation backends such as local GGUF inference via node-llama-cpp, remote Ollama, DeepSeek, or Pleias-RAG-1B, with answers including source citations for traceability.", "body_md": "**全本地 RAG 桌面应用** · 答案可追溯 · 隐私优先 · 轻量\n\n[English](/ifoxhz/piflow/blob/main/README.en.md) | 简体中文\n\npiFlow 是一款检索增强生成（RAG）桌面应用：导入本地文档构建知识库，然后用自然语言提问。解析、嵌入、检索、推理全部在你的机器上（或你指定的服务器上）运行——文档与对话始终不离开你的掌控。生成的答案附带来源引用，可追溯到具体的文档与段落。\n\n主对话由 **piFlow Agent**（Pi harness）驱动：知识库以 Skill / Tools（`kb_*`\n\n）挂载，并可选用 Postgres 只读与本地文件 Skill。\n\nUI 设计预览：[docs/index.png](/ifoxhz/piflow/blob/main/docs/index.png)\n\n**答案可追溯**：每条答案都附带引用与原文摘录，可点击定位到源文档和具体片段——让幻觉无所遁形**隐私优先**：文档、向量索引、聊天记录都存储在本地 SQLite 数据库中，无任何云端依赖**目录级导入**：选择目录即可递归导入，后台任务静默执行，活动日志实时显示进度**智能检索流水线（reRAG）**：意图模板路由 → LLM 生成结构化检索计划 → 多路密集检索按意图动态 top-K 合并，并支持多轮共指消解**多格式解析**：PDF（pdf-oxide / mupdf）、Markdown、TXT、HTML；扫描版 PDF 自动路由到 PaddleOCR**可插拔生成后端**：本地 GGUF 推理（node-llama-cpp）、远程 Ollama（如局域网 GPU 服务器）、或 DeepSeek / Pleias-RAG-1B**自动模型管理**：基于清单的模型注册表；缺失模型自动从 hf-mirror.com 镜像下载，并支持强制重新下载** piFlow Agent**：主对话入口；可开关的 Knowledge RAG / Postgres 只读 / 本地文件 Skill（Pi harness + SSE）\n\n采用 Tauri 2 + Node Sidecar 双进程设计：Tauri 仅作为薄 UI 外壳，所有 RAG 推理与原生模块运行在独立的 Node 进程中。前后端通过 localhost HTTP / SSE 通信。\n\n```\n┌────────────────────────────────────────────────────┐\n│         Tauri WebView (React + TypeScript)          │\n│   知识库 · piFlow（主对话）· 引用 · 设置             │\n└──────────────────────┬─────────────────────────────┘\n                       │ HTTP / SSE (localhost)\n┌──────────────────────▼─────────────────────────────┐\n│            Node Sidecar (apps/rag-server)           │\n│                                                     │\n│  RAG：导入 → 解析 → 分块 → BGE-M3 → 检索 → 生成     │\n│  piFlow：Pi Agent + Skills（KB / Postgres / FS）    │\n│                                                     │\n│  SQLite · pg-actions · 模型缓存 · 文件               │\n└─────────────────────────────────────────────────────┘\n```\n\n便携版用户数据目录：`%APPDATA%\\piFlow\\`\n\n（开发态默认为仓库内 `.data\\`\n\n）。\n\n完整设计文档见 [docs/architecture.md](/ifoxhz/piflow/blob/main/docs/architecture.md)（[English](/ifoxhz/piflow/blob/main/docs/architecture.en.md)）、[docs/piflow.md](/ifoxhz/piflow/blob/main/docs/piflow.md) 与 [docs/reRAG.md](/ifoxhz/piflow/blob/main/docs/reRAG.md)。\n\n| 层级 | 技术 |\n|---|---|\n| 桌面外壳 | Tauri 2（Rust 仅负责窗口与 sidecar 生命周期） |\n| 前端 | React 19 + TypeScript + Vite |\n| RAG 后端 | Node.js + Hono（HTTP / SSE） |\n| 嵌入 | BGE-M3（Xenova ONNX，`@huggingface/transformers` ，worker 线程） |\n| 生成 | Qwen2.5-3B-Instruct GGUF（node-llama-cpp）/ Ollama / DeepSeek / Pleias-RAG-1B |\n| 存储 | better-sqlite3（元数据 + 向量，余弦相似度检索） |\n| 解析 | pdf-oxide · mupdf · PaddleOCR（扫描文档） |\n| 包管理 | pnpm workspaces（monorepo） |\n\n前置条件：Node.js ≥ 20、pnpm 10。请将仓库放在 Linux 文件系统（`~/`\n\n）下，而非 `/mnt/c/`\n\n。\n\n```\npnpm install\ncp .env.example .env   # 按需调整\n\n# 下载模型（国内镜像）\nexport HF_ENDPOINT=https://hf-mirror.com\npnpm models:ensure\n\n# 终端 1：RAG 后端（http://127.0.0.1:3847）\npnpm dev:server\n\n# 终端 2：前端（在浏览器打开 http://localhost:1420）\npnpm dev:ui\n\n# 或并行启动两者\npnpm dev\n```\n\n模型注册表：[models/manifest.json](/ifoxhz/piflow/blob/main/models/manifest.json)；详情：[models/README.md](/ifoxhz/piflow/blob/main/models/README.md)。\n\n| 用途 | 模型 | 大小 |\n|---|---|---|\n| 嵌入 | Xenova/bge-m3（ONNX fp16） | ~1.1 GB |\n| 本地生成 | Qwen2.5-3B-Instruct GGUF（q4_k_m） | ~2 GB |\n| 生成（可选） | Pleias-RAG-1B GGUF | ~2.4 GB |\n| OCR | PaddleOCR | 随包附带 |\n\n**推荐配置**：16 GB 内存、10 GB 可用磁盘空间。\n\n关键环境变量（完整列表见 [.env.example](/ifoxhz/piflow/blob/main/.env.example)）：\n\n| 变量 | 说明 |\n|---|---|\n`HF_ENDPOINT` |\nHugging Face 镜像，默认 `https://hf-mirror.com` |\n`BLUELAMP_RAG_PORT` |\nRAG 服务端口，默认 `3847` |\n`BLUELAMP_MODELS_DIR` |\n模型目录，默认仓库内 `models/` |\n`BLUELAMP_DATA_DIR` |\n数据目录；未设置时开发态用仓库 `.data/` ，打包版由壳注入 `%APPDATA%\\piFlow\\` |\n`BLUELAMP_USE_LOCAL_LLM` |\n设为 `true` 启用本地 GGUF 生成（无需 Ollama） |\n`BLUELAMP_OLLAMA_URL` / `BLUELAMP_OLLAMA_MODEL` |\n远程 Ollama 端点与模型 |\n\n请在 **Windows 本机**打包（不要只在 WSL 里打 Windows 包）。因内嵌 BGE-M3 体积很大，产物是**便携目录 + zip**，不是 NSIS/MSI。\n\n- Node.js ≥ 20、pnpm 10、Git\n- Rust（\n`x86_64-pc-windows-msvc`\n\n）+ Visual Studio Build Tools（C++ 桌面开发） - WebView2 Runtime（Win10/11 通常已有）\n- 已下载嵌入模型：\n`pnpm models:ensure`\n\n（需本机 BGE-M3）\n\n完整清单见 [docs/development-windows.md](/ifoxhz/piflow/blob/main/docs/development-windows.md)。\n\n在仓库根目录（PowerShell）：\n\n```\npnpm install\n$env:HF_ENDPOINT=\"https://hf-mirror.com\"\npnpm models:ensure\npnpm build:windows\n```\n\n`pnpm build:windows`\n\n依次会：\n\n`bundle:windows-sidecar`\n\n— 打包 Node runtime、`rag-server`\n\n、模型等到 Tauri resources`tauri build --no-bundle`\n\n— 编译`piFlow.exe`\n\n`package:windows-portable`\n\n— 组装便携目录并打 zip\n\n| 路径 | 说明 |\n|---|---|\n`dist-windows/piFlow/` |\n可直接运行的文件夹 |\n`dist-windows/piFlow-<version>-portable.zip` |\n同上内容的压缩包 |\n\n解压后运行 ** piFlow.exe**。首次启动会把后端解压到\n\n`%APPDATA%\\piFlow\\sidecar\\`\n\n；用户数据 / 数据库 / 日志也在 `%APPDATA%\\piFlow\\`\n\n。LLM 在 Settings 中配置 Ollama 或 DeepSeek；未配置时仍可导入与检索。\n\n```\napps/desktop/     Tauri + React 桌面 UI\napps/rag-server/  Node HTTP 服务（RAG + piFlow，Hono）\npackages/core/    共享类型、分块器与 RAG 核心逻辑\npackages/pg-actions/  piFlow Postgres 只读 tools\nmodels/           模型清单与本地缓存\nscripts/          模型下载与服务管理脚本\ndocs/             架构文档、用户手册与 ADR\n```\n\n[架构设计](/ifoxhz/piflow/blob/main/docs/architecture.md)（[English](/ifoxhz/piflow/blob/main/docs/architecture.en.md)）— 系统设计、模块划分、平台策略[piFlow 设计](/ifoxhz/piflow/blob/main/docs/piflow.md)— Agent / Skill / SSE / 信息源策略[用户手册（中文）](/ifoxhz/piflow/blob/main/docs/user-manual.zh.md)— 安装、RAG、piFlow、设置与 FAQ[reRAG：结构化预检索规划](/ifoxhz/piflow/blob/main/docs/reRAG.md)— 模板路由 + 检索规划流水线[检索质量升级](/ifoxhz/piflow/blob/main/docs/retrieval-quality-upgrade.md)— 混合检索与 RRF 融合（提案）[知识库目录导入](/ifoxhz/piflow/blob/main/docs/knowledge-base-import.md)[WSL 开发指南](/ifoxhz/piflow/blob/main/docs/development-wsl.md)[Windows 编译与运行清单](/ifoxhz/piflow/blob/main/docs/development-windows.md)- ADR：\n[001 Tauri + Sidecar](/ifoxhz/piflow/blob/main/docs/adr/001-tauri-sidecar.md)·[002 文档解析](/ifoxhz/piflow/blob/main/docs/adr/002-document-parsing.md)·[003 模型管理](/ifoxhz/piflow/blob/main/docs/adr/003-model-management.md)·[004 WSL 开发 / Windows 发布](/ifoxhz/piflow/blob/main/docs/adr/004-wsl-dev-windows-release.md)\n\n**阶段 1 — MVP（进行中）**：monorepo 脚手架、RAG sidecar、文档导入、带引用的聊天、模型管理；Windows 便携包（`pnpm build:windows`\n\n）**阶段 2 — 体验**：Docling 处理复杂文档、混合检索（BM25 + dense RRF）、模型下载 UI、推理轨迹可视化**阶段 3 — Windows 增强**：安装包体积优化、可选 OCR、CUDA 检测**阶段 4 — 进阶**：多个隔离的知识库、多轮上下文管理、可插拔文档源", "url": "https://wpnews.pro/news/show-hn-a-local-rag-desktop-app-piflow", "canonical_source": "https://github.com/ifoxhz/piflow", "published_at": "2026-08-13 01:16:44+00:00", "updated_at": "2026-08-13 01:41:03.402720+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "generative-ai", "ai-products", "ai-tools"], "entities": ["piFlow", "Tauri 2", "Node.js", "BGE-M3", "Qwen2.5-3B-Instruct", "Ollama", "DeepSeek", "Pleias-RAG-1B"], "alternates": {"html": "https://wpnews.pro/news/show-hn-a-local-rag-desktop-app-piflow", "markdown": "https://wpnews.pro/news/show-hn-a-local-rag-desktop-app-piflow.md", "text": "https://wpnews.pro/news/show-hn-a-local-rag-desktop-app-piflow.txt", "jsonld": "https://wpnews.pro/news/show-hn-a-local-rag-desktop-app-piflow.jsonld"}}