elec_rag_ui/README.md
ssurui 7a4f149177 docs: 新增 README.md 和 CLAUDE.md 项目文档
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-15 20:10:47 +08:00

4.2 KiB
Raw Blame History

elec_rag_ui — 智能电子手册前端

基于 Electron + Vue3 + TypeScript + LanceDB 构建的本地化 RAG(检索增强生成)桌面应用。

仅支持 Linux(银河麒麟 Kylin V10 / Ubuntu),适配 ER160(揽月 M50 NPU)和 ER25(芯动力 RPP)计算卡。服务进程管理委托给 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 已运行:

# 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 管理。克隆后拉取实体文件:

git lfs install
GIT_SSL_NO_VERIFY=true git lfs pull

bge-base / bge-large 的 onnx 文件需自行从 HuggingFace 下载:

开发模式

npm install
npm run dev:linux    # Linux(--no-sandbox,开发专用)

开发模式下需要设置 DISPLAY 环境变量(有图形界面时自动可用)。

打包

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