基于Kotlin + Compose Desktop开发的RAG知识问答系统,专为兰州旅游知识问答设计。
复制示例配置文件:
cp src/main/resources/config.json.example src/main/resources/config.json然后编辑 src/main/resources/config.json 文件,填入你的API密钥:
{
"api": {
"api_key": "YOUR_API_KEY_HERE" // 替换为你的API密钥
}
}开发模式(推荐):
./gradlew run构建并运行:
./gradlew build
./gradlew run- ✅ RAG架构(检索增强生成,结合向量检索和大模型生成)
- ✅ 本地知识库(2000条兰州旅游知识,10个分类)
- ✅ TF-IDF向量化(本地计算,无需外部API)
- ✅ TTS语音朗读(讯飞星火语音合成,支持多种音色)
- ✅ AI图片生成(根据回答内容自动配图)
- ✅ 数据库双模式(本地JSON + MariaDB,自动回退)
- ✅ 聊天历史(自动保存到数据库)
- ✅ Material Design 3界面
- ✅ 多平台支持:Windows、Linux、macOS
LanzhouTourismQA/
├── src/main/kotlin/ # Kotlin源代码
├── src/main/resources/ # 配置和知识库
│ ├── config.json.example # 配置文件模板
│ └── knowledge_base.json # 本地知识库
├── build.gradle.kts # Gradle构建配置
├── .gitignore # Git忽略文件
├── SETUP.md # 配置说明文档
├── README.md # 本文件
└── 使用文档.md # 完整使用指南
| 命令 | 说明 |
|---|---|
./gradlew run |
运行程序 |
./gradlew build |
构建项目 |
./gradlew clean |
清理构建缓存 |
- 配置说明:
SETUP.md - 详细使用指南:
使用文档.md - 数据库配置:
数据库初始化说明.md - 技术架构:查看
使用文档.md的"技术架构"章节 - 故障排除:查看
使用文档.md的"故障排除"章节
默认:JSON模式(无需配置,开箱即用)
可选:数据库模式(需MariaDB服务器)
- 修改
config.json启用数据库 - 支持数据持久化
- 自动保存聊天历史
- 与C++版本数据库完全兼容
项目支持多种配置场景,根据你的需求选择合适的方式:
| 场景 | 配置来源 | 数据库状态 | 运行结果 |
|---|---|---|---|
| 本地开发 | config.json(真实凭证) |
启用(需配置) | ✅ 完整功能 |
| 其他用户部署 | 自己的 config.json |
启用(填入自己的凭证) | ✅ 完整功能 |
| 配置缺失 | Models.kt 默认值 | 禁用(空值) | ✅ 降级运行(仅JSON模式) |
# 1. 复制配置模板
cp src/main/resources/config.json.example src/main/resources/config.json
# 2. 编辑配置文件,填入你的API密钥
# 编辑 src/main/resources/config.json
# 3. 运行项目
./gradlew run# 直接运行,使用本地JSON知识库(无需数据库)
./gradlew run注意:此方式仅使用本地知识库,不支持数据库功能
- config.json 文件不会被提交到Git(已配置在
.gitignore中) - 每个用户需要创建自己的
config.json文件 - 如果不配置数据库,系统会自动降级到本地JSON模式
- API密钥必须有效,否则无法调用MIMO API
- API密钥保护:
.gitignore已配置,确保config.json不会被提交到版本控制 - 数据库密码:建议使用环境变量存储敏感信息
- 配置模板:使用
config.json.example作为配置模板
版本:1.0.0 状态:✅ 完成并可直接使用 最后更新:2026-05-11