这是一个基于 Rust (Actix Web) 和 React (TypeScript + Vite) 开发的全栈实时聊天应用。它集成了 Google Gemini 系列模型,利用 RAG (检索增强生成) 技术,让 AI 拥有长期的对话记忆能力。
- 🧠 长期记忆 (RAG): 系统会自动将对话内容向量化并存入 SQLite 数据库。当您提问时,它会检索相关的历史对话作为上下文,让 AI "记得" 您说过的话。
- 🤖 多模型支持:
- Gemini 2.5 Flash Lite: 轻量级模型,经济实惠,适合简单问答。
- Gemini 2.5 Flash: 增强版,支持更长的上下文处理。
- Gemini 3.0 Flash: 最新一代模型,速度更快、性能更强,适合各类对话场景。
- 💬 实时通讯: 基于 WebSocket 的低延迟双向通信。
- 📂 文件上下文: 支持上传文本文件,AI 可以基于文件内容进行回答。
- 🐳 Docker 部署: 开箱即用,数据持久化存储。
- Framework: Actix Web - 高性能、异步的 Rust Web 框架。
- Database: Rusqlite (SQLite) - 轻量级嵌入式数据库,用于存储消息记录和向量数据。
- AI Integration: Reqwest - 用于调用 Google Gemini API。
- Vector Search: 内置简单的余弦相似度计算,实现本地向量检索。
- Framework: React 19 + TypeScript.
- Build Tool: Vite - 极速的开发与构建体验。
- Styling: UnoCSS - 原子化 CSS 引擎。
- State Management: 自定义 Hook (
useWebSocket) 管理实时状态。
复制示例配置文件并填入您的 API Key:
cp .env.example .env在 .env 文件中设置:
GEMINI_API_KEY=your_api_key_heredocker-compose up --build -d启动后访问: http://localhost:23333
注意: 聊天记录会自动保存在项目根目录下的
data/web_chat.db文件中,即使重启容器也不会丢失。
后端:
# 确保已安装 Rust 工具链
cargo run前端:
cd frontend
bun install # 或 npm install
bun run dev # 或 npm run dev如果你不想使用 Docker,也可以手动构建并运行生产环境版本。
- Rust: 1.88 或更高版本
- Node.js: 18+ 或 Bun: 1.0+
cd frontend
# 安装依赖
bun install # 或 npm install
# 构建生产版本
bun run build # 或 npm run build构建完成后,会生成 frontend/dist 目录。
回到项目根目录,将前端构建产物复制到 static 目录(后端默认从这里读取):
# 在项目根目录执行
# Linux/Mac
cp -r frontend/dist static
# Windows (PowerShell)
Copy-Item -Recurse frontend/dist static# Linux(Ubuntu/Debian)安装依赖
apt-get update && apt-get install -y pkg-config libssl-dev
# 编译发布版本 (Release Mode)
cargo build --release
# 运行后端
# Linux/Mac
./target/release/web_chat
# Windows
.\target\release\web_chat.exe程序启动后,访问 http://localhost:23333 即可使用。
提示: 生产环境运行时,同样需要确保
.env文件存在或已设置GEMINI_API_KEY环境变量。数据库文件默认生成在data/web_chat.db。
.
├── data/ # [自动生成] 数据库持久化目录
├── src/ # Rust 后端
│ ├── handlers/ # 请求处理 (WebSocket, Upload)
│ ├── models/ # 数据结构定义
│ └── services/ # 核心业务 (Gemini API, RAG, Memory)
├── frontend/ # React 前端
│ ├── src/components # UI 组件
│ └── src/hooks # 状态逻辑
├── Dockerfile # 多阶段构建文件
└── docker-compose.yml # 容器编排配置
MIT License