111 lines
4.2 KiB
Markdown
111 lines
4.2 KiB
Markdown
# 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 | 8081 |
|
||
| **ER25**(芯动力 RPP) | 本地 CPU(固定) | llamacpp | 8080 |
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
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)
|
||
│ ├── bge-base-zh-v1.5/ # 嵌入模型(768 维,~98MB,onnx 需自行下载)
|
||
│ ├── bge-large-zh-v1.5/ # 嵌入模型(1024 维,~312MB,onnx 需自行下载)
|
||
│ ├── asr/ # Paraformer 流式语音识别模型(~376MB)
|
||
│ └── punct/ # 标点恢复模型(~72MB)
|
||
├── 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
|
||
```
|
||
|
||
**bge-base / bge-large** 的 onnx 文件需自行从 HuggingFace 下载:
|
||
- [bge-base-zh-v1.5](https://huggingface.co/BAAI/bge-base-zh-v1.5)(下载 `onnx/model_quantized.onnx`,约 98MB)
|
||
- [bge-large-zh-v1.5](https://huggingface.co/BAAI/bge-large-zh-v1.5)(下载 `onnx/model_quantized.onnx`,约 312MB)
|
||
|
||
## 开发模式
|
||
|
||
```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 # Linux ARM64(在 ARM64 机器上执行)
|
||
# 须先安装系统 fpm:sudo gem install fpm
|
||
```
|
||
|
||
## 数据存储
|
||
|
||
| 内容 | 路径 |
|
||
|------|------|
|
||
| 配置文件 | `~/.config/simple-rag-app/config.json` |
|
||
| 向量数据库 | `~/.config/simple-rag-app/lancedb/` |
|
||
|
||
## 许可证
|
||
|
||
MIT License
|