Skip to content

hicoldcat/LocalRAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LocalRAG

本地优先的桌面 RAG 知识库应用,把你的本地文档变成可检索、可追问、可引用来源的私有 AI 知识库。

English | 简体中文

Project Status Desktop Frontend Backend Storage License

LocalRAG 是一个面向个人和团队的本地知识库桌面应用。它使用 Tauri + Next.js 构建桌面界面,使用 FastAPI 提供本地后端服务,使用 SQLite 保存元数据和聊天记录,使用本地 Qdrant 文件存储向量,并支持 Ollama 与 OpenAI-compatible LLM Provider。

项目目前处于早期预览阶段,核心目标是提供一个开源、可审计、易于二次开发的本地 RAG 桌面应用基础。

项目截图

对话界面 知识库管理
Chat screenshot placeholder Knowledge base screenshot placeholder
设置与模型 系统诊断
Settings screenshot placeholder Diagnostics screenshot placeholder

功能特性

  • 本地桌面应用:Tauri 管理窗口、后端进程、文件上传和流式事件。
  • 多知识库:每个知识库拥有独立的向量集合。
  • 文档导入:支持 PDF、Markdown、纯文本文件上传和本地路径扫描。
  • 本地存储:SQLite 保存配置、知识库、文档、索引任务和聊天历史。
  • 本地向量库:Qdrant local mode 保存向量数据。
  • Embedding 模型管理:通过 ModelScope 下载内置模型,也支持注册自定义 Embedding 模型。
  • LLM Provider:支持 Ollama 和 OpenAI-compatible 服务。
  • 流式回答:桌面端通过 Tauri 事件接收 token-by-token 输出。
  • 首次引导:提示配置 LLM、下载 Embedding 模型、创建知识库。
  • 诊断面板:检查后端、SQLite、Qdrant、知识库、LLM、Embedding 模型状态。
  • 打包支持:提供 Windows 一键打包脚本,生成 MSI/NSIS 安装包。

项目来源与定位

LocalRAG 源于对“完全本地、可控、可打包的个人知识库 RAG 工具”的需求。项目优先关注:

  • 中文优先,同时兼顾中英双语内容。
  • 数据默认留在本机。
  • LLM Provider 由用户自行配置,不内置固定云服务。
  • 工程结构尽量清晰,方便二次开发、审计和开源协作。

技术架构

LocalRAG/
├─ apps/
│  ├─ api/                 # FastAPI 后端和 PyInstaller sidecar 构建
│  └─ desktop/             # Next.js UI + Tauri 桌面壳
├─ data/                   # 运行时数据占位目录,真实数据不提交到 git
├─ models/                 # 本地 Embedding 模型目录,不提交到 git
└─ scripts/                # 模型下载和 Windows 打包脚本

运行流程:

Tauri Desktop
  ├─ 启动和关闭 FastAPI 后端进程
  ├─ 代理普通 API 请求到 127.0.0.1:8765
  ├─ 代理文件上传,避免 WebView 本地请求限制
  └─ 将后端 SSE 聊天流转发为前端事件

FastAPI Backend
  ├─ SQLite:配置、知识库、文档、任务、聊天记录
  ├─ Qdrant:本地向量集合
  ├─ Embedding:加载 models/ 下的 sentence-transformers 模型
  └─ LLM:调用用户配置的 Ollama 或 OpenAI-compatible Provider

环境要求

  • Windows 10/11,目前打包流程以 Windows 为主。
  • Python 3.10 或更新版本。
  • Node.js 22 或更新版本。
  • Rust stable toolchain 和 Cargo。
  • 可选:Ollama,用于完全本地的 LLM 推理。

快速开始

安装后端依赖:

cd apps\api

python -m venv .venv

.\.venv\Scripts\activate

pip install -r requirements.txt

安装桌面端依赖:

cd apps\desktop

npm install

启动桌面开发模式:

cd apps\desktop

npm run tauri:dev

开发模式始终使用当前源码目录下的 apps/api 后端。启动前会先结束已经监听 127.0.0.1:8765 的旧后端服务,避免误连旧版本 backend。

Embedding 模型

默认内置 Embedding 模型:

  • sentence-transformers/all-MiniLM-L6-v2

推荐通过应用首次引导或设置页下载。也可以使用命令行:

cd apps\api

.\.venv\Scripts\activate

python ..\..\scripts\download_embedding_models.py

模型文件会保存到 models/,该目录默认不会提交到 git。

如果你的 ModelScope 镜像使用不同模型 ID,可以设置环境变量:

$env:LOCALRAG_MODELSCOPE_MINILM_L6_V2 = "your-namespace/your-minilm"

python ..\..\scripts\download_embedding_models.py

LLM Provider

LocalRAG 不硬编码聊天模型。使用对话功能前,需要在设置页至少配置一个 LLM Provider。

当前支持:

  • ollama:本地 Ollama 服务,默认地址通常为 http://127.0.0.1:11434
  • openai-compatible:兼容 OpenAI API 风格的服务。

如果使用 Ollama,请先安装 Ollama 并拉取模型,然后在 LocalRAG 设置页填写对应模型名。

运行时数据

LocalRAG 默认将运行时数据保存在本地:

  • data/sqlite/:SQLite 数据库。
  • data/qdrant/:Qdrant 本地向量存储。
  • data/uploads/:上传的文档。
  • data/logs/:后端和桌面端日志。
  • models/:Embedding 模型文件。

打包后的桌面应用会使用安装目录作为运行时根目录,并自动创建 data/models/

常用开发命令

仅启动后端:

cd apps\api

.\.venv\Scripts\activate

uvicorn localrag_api.main:app --reload --host 127.0.0.1 --port 8765

仅启动前端:

cd apps\desktop

npm run dev

启动 Tauri 桌面应用:

cd apps\desktop

npm run tauri:dev

验证构建:

cd apps\desktop

npm run build

cd src-tauri

cargo check

cargo check --release

cd ..\..\api

.\.venv\Scripts\activate

python -m compileall localrag_api

Windows 打包

在仓库根目录执行:

.\scripts\package-windows.ps1 -Clean

脚本会完成:

  • 检查本地构建工具。
  • 停止正在运行的 LocalRAG 进程。
  • 使用 PyInstaller 构建 FastAPI sidecar。
  • 将 sidecar 安装到 Tauri binaries 目录。
  • 生成 MSI 和 NSIS 安装包。

输出目录:

apps/desktop/src-tauri/target/release/bundle

NSIS 安装器在安装和卸载前会尝试停止 LocalRAG 相关进程,避免升级时后台 backend 锁定可执行文件。

隐私与安全

  • 文档、向量、聊天记录和配置默认保存在本地。
  • Prompt 和检索上下文只会发送给你配置的 LLM Provider。
  • 如果配置云端 OpenAI-compatible 服务,相关上下文会发送到该服务。
  • 不要提交 .env、数据库、上传文档、下载模型或构建产物。

路线图

  • 更完善的跨平台打包支持。
  • 更细粒度的知识库导入和索引策略。
  • 更强的模型管理、下载进度和错误恢复。
  • 更完善的测试覆盖和 CI 流程。

参与贡献

欢迎 issue、讨论和 pull request。建议贡献前先运行验证命令,并保持变更聚焦。

License

BSL 1.1

About

本地优先的桌面 RAG 知识库应用,基于 Tauri、Next.js、FastAPI 构建,支持本地 Embedding、SQLite、Qdrant 向量存储、Ollama/OpenAI 兼容 LLM,将本地文档转化为可检索、可追问、可引用来源的私有 AI 知识库。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors