elec_rag_ui/README.md
ssurui d686e600be chore: 删除未使用的 bge-base/bge-large/punct 模型
- bge-base-zh-v1.5、bge-large-zh-v1.5:只有 tokenizer/config 元数据,
  onnx 权重从未提交(README 一直写"需自行下载”),代码里也完全没有
  任何地方引用这两个目录,纯占位死文件。
- punct(标点恢复模型,75M onnx):electron-builder.config.ts 的
  extraResources 从未把它纳入打包,装出来的应用里从来没有过这份模型,
  语音识别的标点恢复功能实际一直是禁用状态。用户确认现阶段不需要,
  直接删除源文件;代码逻辑保留(punctuationModelDir 为空时优雅跳过),
  以后要用可以自行准备模型再在设置里指定目录。

models/ 从 ~475M 降到 399M。README 目录说明与模型文件章节同步更新。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-23 00:36:17 +08:00

112 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# elec_rag_ui — 智能电子手册前端
基于 Electron + Vue3 + TypeScript + LanceDB 构建的本地化 RAG(检索增强生成)桌面应用。
**仅支持 Linux(银河麒麟 Kylin V10 / Ubuntu)**,适配 ER160(揽月 M50 NPU)和 ER25(芯动力 RPP)计算卡。服务进程管理委托给 [er_backend](https://git.drumtm.com/EdgeRhythm/er_backend)(HTTP 17700),前端专注 RAG 逻辑与用户交互。
## 技术栈
- **框架**:Electron + electron-vite + Vue3 + TypeScript
- **UI**:Naive UI(弹窗/通知)+ 自定义工业风 CSS
- **状态管理**:Pinia
- **向量数据库**:LanceDB(嵌入式,无需额外服务)
- **本地向量化**:`@huggingface/transformers` + `onnxruntime-node`
- **生成引擎**:llama.cpp server(通过 er_backend 管理)
- **Markdown 渲染**:marked
## 支持硬件
| 计算卡 | 嵌入方式 | 生成方式 |
|--------|---------|---------|
| **ER160**(揽月 M50 NPU) | llamacpp NPU(默认)或本地 CPU | llamacpp |
| **ER25**(芯动力 RPP) | 本地 CPU(固定) | llamacpp |
推理请求(生成 + 嵌入)统一经 er_backend 代理转发(`http://127.0.0.1:17700`),实际 llama-server 监听哪个端口由 er_backend 后端配置决定,前端不感知、也不需要按计算卡型号推导端口。
## 目录结构
```
elec_rag_ui/
├── src/
│ ├── main/ # Electron 主进程
│ │ ├── index.ts # 入口:全屏启动、菜单禁用、信号处理
│ │ ├── config.ts # 配置读写(userData/config.json)
│ │ ├── ipc/ # IPC 处理器
│ │ └── rag/ # RAG 核心逻辑
│ ├── preload/index.ts # contextBridge
│ ├── renderer/ # Vue3 前端
│ │ └── src/
│ │ ├── App.vue # 根布局(顶栏 + 主区)
│ │ ├── components/ # ChatPanel / IndexPanel / SettingsModal 等
│ │ ├── stores/ # Pinia store
│ │ └── types/ # TypeScript 类型定义
│ └── batch_questions.txt # 批量测试问题示例
├── models/ # 本地模型(onnx 由 Git LFS 管理)
│ ├── bge-small-zh-v1.5/ # 嵌入模型(512 维,~24MB),本地 CPU 向量化回退用
│ └── asr/ # Paraformer 流式语音识别模型(~376MB)
├── docs/ # 示例文档(用于测试索引与问答)
├── resources/ # 应用图标、TTS/ASR worker
├── stubs/sharp/ # sharp 原生模块 stub
├── package.json
├── electron-builder.config.ts
└── electron.vite.config.ts
```
## 依赖:er_backend
本应用依赖 **er_backend**(端口 17700)管理 llama-server 推理服务进程。启动前请确保 er_backend 已运行:
```bash
# PAD 上
cd /opt/er-backend
nohup ./node/node manager/index.js &
# 或通过 systemd(deb 安装后自动配置)
systemctl status er-backend
```
er_backend 管理界面:`http://<PAD-IP>:17700`(配置模型路径、启动/停止服务)
## 模型文件
`models/` 目录中的 `.onnx` 文件通过 **Git LFS** 管理。克隆后拉取实体文件:
```bash
git lfs install
GIT_SSL_NO_VERIFY=true git lfs pull
```
> 语音识别默认不带自动加标点(标点恢复模型未随包分发);如需要可自行准备
> [sherpa-onnx punct 模型](https://k2-fsa.github.io/sherpa/onnx/punctuation/models.html),
> 在设置里把"标点恢复模型目录"指过去即可,代码本身已支持该功能。
## 开发模式
```bash
npm install
npm run dev:linux # Linux(--no-sandbox,开发专用)
```
> 开发模式下需要设置 `DISPLAY` 环境变量(有图形界面时自动可用)。
## 打包
```bash
npm run package:kylin # Linux x64,产出 AppImage + .deb
npm run package:kylin:arm64:deb # Linux ARM64 deb(推荐,须在 ARM64 机器/真机上执行,已验证可行)
npm run package:kylin:arm64 # Linux ARM64(AppImage + deb),真机 Kylin 上 deb 目标
# 走 electron-builder 自带 fpm 必现 tar failed,
# 用 package:kylin:arm64:deb 代替
```
## 数据存储
| 内容 | 路径 |
|------|------|
| 配置文件 | `~/.config/elec_rag_ui/config.json` |
| 向量数据库 | `~/.config/elec_rag_ui/lancedb/` |
## 许可证
MIT License