智能消费管理系统:基于多模态大模型的个人财务助手

一、项目背景:消费数据碎片化的困境

移动支付的普及让“无现金生活”成为常态,但也带来了新的问题:个人的消费数据分散在微信、支付宝、银行App等多个平台,每个平台的数据格式各不相同,缺乏统一的管理视角。

传统记账工具的痛点:

  • 手动输入效率低:每笔消费都需要手动记录,体验割裂
  • 数据孤岛严重:各平台数据无法打通,难以形成全局视图
  • 缺乏智能分析:只能记录流水,无法提供消费洞察和理财建议

这促使我们思考:能否打造一款工具,让用户像聊天一样管理财务,让分散的账单数据自动汇聚、智能分析?

二、项目目的:从“记录工具”到“智能财务助手”

我们设想的系统不是又一个记账软件,而是一个具备认知能力的财务助手

传统记账 本系统
手动输入每一笔 截图/语音/文件自动识别
固定分类标签 AI自动语义分类
静态流水展示 多维度分析+趋势预测
无交互能力 自然语言对话式查询
无理财建议 个性化优化建议生成

核心目标: 实现从“用户适应工具”到“工具理解用户”的转变。

三、技术选型详解

3.1 整体架构

采用前后端分离 + 模块化设计,支持容器化部署和横向扩展:

┌─────────────────────────────────────────────────┐
│                移动端 (Flutter)                   │
├─────────────────────────────────────────────────┤
│              API Gateway (FastAPI)               │
├──────────────┬──────────────┬───────────────────┤
│   MySQL      │   FAISS      │     Redis         │
│  (结构化数据)  │  (向量检索)   │    (缓存)          │
├──────────────┴──────────────┴───────────────────┤
│              大模型服务层                         │
│  (通义千问/智谱 + Embedding API + Whisper)       │
└─────────────────────────────────────────────────┘

3.2 后端技术栈

组件 选型 理由
Web框架 FastAPI 异步高性能、自动生成OpenAPI文档、类型提示友好
认证 JWT + bcrypt 无状态、安全性高、适合移动端
ORM SQLAlchemy 功能强大、支持复杂查询、与FastAPI生态融合
数据库 MySQL 成熟稳定、事务支持、索引优化空间大
向量数据库 FAISS 轻量级、内存高效、适合Embedding检索
缓存 Redis 高并发场景下的Token缓存、会话管理
大模型 通义千问/智谱 中文理解优秀、API稳定、支持Function Calling
语音识别 Whisper API 多语言支持、准确率高

3.3 移动端技术栈

组件 选型 理由
跨平台框架 Flutter 单代码库覆盖iOS/Android、高性能、UI表现力强
网络请求 Dio 拦截器支持、请求取消、文件上传功能完善
本地数据库 Drift 类型安全的SQLite、响应式查询、与Flutter结合好
状态管理 GetX 轻量级、路由管理、依赖注入一体化
安全存储 secure_storage 加密存储Token、支持生物识别
原生通信 Pigeon 类型安全的MethodChannel代码生成
无障碍服务 Android原生 监听支付事件、自动识别账单

3.4 为什么选择这些技术?

1. FastAPI + JWT:

  • 移动端需要无状态认证,JWT天然适配
  • 异步处理能力适合大模型调用的IO密集型场景

2. FAISS而非专用向量数据库:

  • 项目初期数据量可控,FAISS足够
  • 避免引入额外运维负担(如Milvus需要独立部署)

3. Flutter跨平台:

  • 目标用户覆盖iOS和Android
  • 热重载提升开发效率
  • 性能接近原生,动画流畅

4. 双数据库策略:

  • MySQL:存储结构化账单数据,支持复杂筛选
  • FAISS:存储账单Embedding,支持语义检索

四、核心技术亮点

4.1 多模态统一解析

系统支持三种输入方式,通过不同技术链路统一转化为结构化账单:

输入类型         处理链路                              输出
─────────────────────────────────────────────────────────────
📷 图片账单  →  多模态大模型 / OCR  →  提取金额、商户、时间
🎤 语音输入  →  Whisper API        →  文本 → LLM解析  
📄 文件导入  →  正则解析 + LLM补充  →  标准化数据

技术细节: 对于微信/支付宝导出的Excel文件,我们先通过规则引擎解析标准格式,对异常字段调用LLM进行智能修正。

4.2 消费语义建模

不是简单的关键词匹配,而是基于大模型推理的智能分类:

# 示例:LLM分类Prompt
你是一个消费分类专家,请将以下商户归类到指定类别:
- 餐饮:餐厅、咖啡店、外卖
- 交通:地铁、打车、加油
- 娱乐:电影、游戏、演出
- 购物:超市、电商、服装
- 居住:房租、水电、物业

商户名称:"星巴克(国贸店)" → 输出:餐饮

4.3 RAG增强的对话式分析

用户提问 → 向量化 → FAISS检索相关账单 → 构建上下文Prompt → LLM生成回答

用户问:“我这个月是不是在吃上面花太多了?”
         ↓
系统检索:本月餐饮类TOP10消费记录 + 上月对比数据
         ↓
LLM回答:“您本月餐饮支出3200元,较上月增长15%,其中外卖占比60%。建议适当增加做饭频率...”

4.4 无障碍自动识别(Android独有)

利用Android无障碍服务监听支付成功页面的文本变化,自动提取金额和商户:

用户支付完成 → 无障碍服务捕获页面文本 → 正则提取金额/商户 → 弹出确认对话框 → 一键添加

隐私保护: 只读取支付成功页面的文本,不上传任何敏感信息,所有识别均在本地完成。

五、数据流设计

┌──────────┐    ┌──────────┐    ┌──────────┐
│ 用户输入  │ -> │ 多模态解析 │ -> │ 结构化存储 │
└──────────┘    └──────────┘    └──────────┘
                                      ↓
┌──────────┐    ┌──────────┐    ┌──────────┐
│ LLM回答  │ <- │  RAG检索  │ <- │ 向量化    │
└──────────┘    └──────────┘    └──────────┘

增量同步机制:

  • 每个账单记录updated_at时间戳
  • 客户端启动时拉取最新变更
  • 本地新增/修改后主动推送到服务端
  • 冲突时以最新时间戳为准
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐