需求分析

选题:基于Spring生态的智能文档分析与管理系统设计与实现

研究内容(或设计内容)
本课题聚焦 “非结构化文档的智能处理与高效管理” 核心需求,基于 Spring 生态(Spring Boot、Spring AI)整合大语言模型(LLM)、检索增强生成(RAG)、多模态解析等技术,设计并实现一套兼具实用性与扩展性的智能文档分析与管理系统,具体研究内容如下:

  1. 系统需求分析与架构设计
    需求建模:梳理个人 / 企业办公场景下的文档处理核心需求,包括多格式文档解析(PDF、Word、图片)、关键信息提取、语义检索、智能问答、文档管理(上传、分类、归档)等功能需求,以及系统响应速度、数据安全性、兼容性等非功能需求。
    架构设计:基于 Spring Boot 构建分层架构(表现层、业务层、数据层),整合 Spring AI 实现 AI 能力的快速集成,设计 “文档处理流水线” 与 “RAG 检索引擎” 两大核心子架构,明确模块间数据流转逻辑与接口规范。
    技术选型论证:针对文档解析、语义理解、向量存储等关键环节,对比分析 Spring AI 工具集(OCR、PDF 处理)、LLM 模型(GPT-3.5/4、开源 LLaMA)、向量数据库(Chroma、Milvus)的适配性,确定最优技术组合。

2.核心功能模块的设计与实现
基于 RAG 技术架构,设计 “文档向量化存储 - 语义检索 - LLM 生成” 的闭环流程:通过 Spring AI 的 Embedding 工具将文档内容转换为向量,存储至向量数据库,实现高效语义匹配。
开发关键信息提取功能:支持通用字段(标题、关键词、摘要)自动提取,以及自定义模板(合同、简历、论文)的指定字段提取(如合同金额、简历工作经历)。
实现智能问答功能:用户通过自然语言提问,系统结合检索到的文档片段与 LLM 生成精准回答,支持上下文关联问答(如 “这份合同的甲方是谁?对应的付款期限是什么?”)。
设计文档基础管理功能:包括上传、预览、下载、删除、分类(按类型、时间、标签)、版本控制等。
开发文档权限控制机制:实现用户角色(管理员、普通用户)的权限隔离,保障文档数据安全。
集成文档操作日志功能:记录文档上传、修改、检索、分享等行为,支持日志查询与审计。
前端交互与可视化模块:基于 Vue 等构建响应式前端界面,设计文档上传拖拽组件、在线预览组件、问答交互组件。
优化前端与后端的交互效率:采用 Axios 实现异步请求,结合 WebSocket 支持智能问答的实时响应。
3. 系统测试与优化
功能测试:设计测试用例,覆盖文档解析、信息提取、语义检索、智能问答等核心功能,验证功能完整性与准确性。
性能测试:针对多文档并发上传、大数据量文档检索等场景,测试系统响应时间、吞吐量,优化数据库查询与向量检索效率。
兼容性测试:验证系统对不同格式(PDF1.7/2.0、Word2016/2019、JPG/PNG)、不同大小(100KB-50MB)文档的处理兼容性。

研究目标(或设计目标)
本课题的核心目标是设计并实现一套 “技术先进、功能实用、架构清晰” 的智能文档分析与管理系统,旨在解决当前个人及小型企业办公场景中,文档格式繁杂、信息提取低效、管理流程分散、智能交互不足等痛点,通过整合 Spring 生态与 AI 技术,打造兼具稳定性与智能化的办公辅助工具。具体目标如下:

  1. 功能目标
    实现多格式文档的高效解析:支持 PDF、Word、图片等主流格式文档的结构化提取。
    完成智能分析核心功能:支持通用 / 自定义字段的关键信息提取,覆盖文档全生命周期管理:实现上传、分类、检索、权限控制、日志审计等完整功能,满足个人与小型企业的办公需求。
    提供友好的前端交互:采用轻量化、直观化的界面设计,支持文档拖拽上传、在线预览、可视化分析结果展示,操作流程简洁直观。

  2. 技术目标
    构建基于 Spring 生态的高可用架构:实现模块解耦,支持 LLM 模型、向量数据库的灵活替换。
    验证 Spring AI 在智能文档处理中的应用价值:通过 Spring AI 快速集成 OCR、Embedding、LLM 调用等能力,简化 AI 功能开发流程,降低技术集成复杂度,提升整体开发效率。
    优化 RAG 检索增强效果:构建 “文档解析→文本分段→Embedding 编码→向量存储→检索匹配→上下文拼接→LLM 生成” 的完整 RAG 链路,解决 LLM “幻觉” 问题,确保智能问答结果基于上传文档内容,提升回答可信度。
    保障系统稳定性与性能:实现异常处理机制(如文档解析失败重试、格式不支持提示、网络中断恢复),提升系统容错能力。

  3. 应用目标
    形成一套可复用的 Spring 生态 + AI + 智能文档处理技术方案,全面覆盖需求分析、系统设计(架构设计、数据库设计、接口设计)、开发实现、功能测试、性能优化、文档撰写等毕业设计关键环节,开发出具备实际应用价值的系统原型,完成毕业设计的全流程实践,验证自身在 Spring Boot 全栈开发、AI 技术集成、系统设计等方面的综合能力。

开题报告

一、研究背景和意义
(一)研究背景
随着数字化办公的普及,个人用户和中小企业在日常工作中面临大量非结构化文档(如PDF合同、Word简历、扫描图片等)的处理需求。这些文档格式多样、信息分散,传统人工处理方式效率低下,难以满足快速检索、智能问答与高效管理的需求。与此同时,大语言模型(LLM)、检索增强生成(RAG)及多模态解析等AI技术快速发展,为智能文档处理提供了新的技术路径。Spring生态(特别是Spring Boot与新兴的Spring AI)凭借其模块化、高集成性和开发便捷性,成为构建企业级智能应用的理想技术栈。在此背景下,设计并实现一套基于Spring生态的智能文档分析与管理系统,具有重要的现实价值和技术前瞻性。
(二)研究意义
本课题聚焦“非结构化文档的智能处理与高效管理”,旨在解决当前办公场景中文档格式杂乱、信息提取困难、管理流程割裂、缺乏语义交互能力等痛点。通过整合Spring Boot、Spring AI、向量数据库与大语言模型,构建一个集文档解析、关键信息提取、语义检索、智能问答与权限管理于一体的系统,不仅可提升个人与小型企业的办公效率,也为Spring生态在AI工程化落地方面提供实践范例。此外,该系统具备良好的可扩展性与模块解耦设计,未来可迁移至更多垂直领域(如法律、人力资源、科研管理),具有较强的应用推广潜力。


二、国内外研究现状
(一)国内研究状况
近年来,国内在智能文档处理领域取得显著进展。阿里、百度、腾讯等科技企业已推出OCR+LLM的文档理解平台(如通义听悟、文心一言文档助手),支持合同解析、发票识别等功能。学术界方面,清华大学、中科院等机构在RAG优化、中文Embedding模型等方面开展了深入研究。然而,现有系统多为封闭式SaaS服务,缺乏开源、轻量、可定制的本地部署方案,尤其面向中小团队的低成本智能文档管理工具仍显不足。
(二)国外研究状况
国外在智能文档处理技术上起步较早。Google Cloud Document AI、Amazon Textract等云服务已成熟支持多格式文档结构化。开源社区方面,LangChain、LlamaIndex等框架推动了RAG架构的标准化;Chroma、Milvus等向量数据库广泛应用于语义检索场景。Spring官方于2024年推出的Spring AI项目,进一步简化了LLM与企业Java应用的集成。但目前尚缺乏以Spring Boot为核心、深度融合文档全生命周期管理与AI能力的一体化开源解决方案。


三、研究目标与内容
(一)研究目标
1. 功能目标:实现多格式(PDF/Word/图片)文档的自动解析、通用/自定义字段信息提取、基于RAG的语义检索与智能问答、完整的文档管理(上传、分类、权限、日志)功能。
2. 技术目标:构建基于Spring Boot + Spring AI的高可用分层架构,验证Spring AI在OCR、Embedding、LLM调用中的集成效率,优化RAG链路以减少LLM“幻觉”,确保回答基于真实文档内容。
3. 应用目标:形成一套可复用、可扩展的“Spring生态 + AI + 智能文档处理”技术方案,完成具备实际应用价值的系统原型。
(二)研究内容
1. 系统需求分析与架构设计(含功能/非功能需求建模、分层架构、RAG子系统设计);
2. 技术选型论证(对比Tesseract/PDFBox、GPT/LLaMA、Chroma/Milvus等);
3. 核心模块开发:
o 多模态文档解析流水线
o 基于模板的关键信息提取
o RAG驱动的语义检索与智能问答
o 用户角色权限控制与操作日志审计
4. 前端交互设计(Vue + Axios + WebSocket);
5. 系统测试与性能优化(功能、兼容性、并发性能)。


四、研究方法
• 文献调研法:梳理国内外智能文档处理、RAG、Spring AI相关技术文献;
• 软件工程方法:采用敏捷开发模式,分模块迭代实现;
• 实验对比法:对不同OCR工具、LLM模型、向量数据库进行效果与性能对比;
• 系统测试法:设计覆盖核心功能的测试用例,开展功能、压力、兼容性测试。


五、研究方案的可行性分析和研究已具备的条件
(一)可行性分析
• 技术可行性:Spring Boot生态成熟,Spring AI已支持主流LLM与Embedding模型;Tesseract、Apache POI、PDFBox等开源工具可满足文档解析需求;Chroma等轻量向量库易于集成。
• 经济可行性:系统可基于开源技术栈构建,无需高昂授权费用,适合中小企业部署。
• 操作可行性:前端采用Vue实现直观交互,后端提供RESTful API,易于维护与扩展。
(二)已具备的条件
• 已掌握Java、Spring Boot、MySQL、Vue等核心技术;
• 熟悉大语言模型基本原理及RAG架构;
• 具备Linux开发环境与Docker容器化部署经验;
• 指导教师提供方向指导与资源支持;
• 学校实验室提供开发与测试所需软硬件环境。

七、参考文献
1. Spring AI 官方文档. https://spring.io/projects/spring-ai
2. Lewis P, et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS, 2020.
3. 张伟等. 基于RAG的智能问答系统设计与实现. 计算机工程与应用, 2024.
4. Apache PDFBox 官方文档. https://pdfbox.apache.org/
5. Chroma Vector Database Documentation. https://docs.trychroma.com/
6. 李航. 《自然语言处理导论》. 清华大学出版社, 2023.
7. Vaswani A, et al. Attention Is All You Need. NeurIPS, 2017.

技术选型

模块 推荐技术 对应报告需求点
后端核心 Spring Boot 3.5.11 + Java 21 基于 Spring 生态构建分层架构
AI 框架 Spring AI 1.1.2 整合 LLM、RAG、多模态解析,简化集成
大模型 国产大模型 智能问答、关键信息提取
向量库 PGVector 文档向量化存储、语义检索
关系库 MySQL 文档管理、权限控制、日志审计
前端框架 Vue 3 + TypeScript 响应式界面、文档拖拽、可视化展示
通信协议 WebSocket + Axios 智能问答实时响应、异步交互
文件存储 RustFS 多格式文档存储与管理

核心功能:
能支持文档(PDF、Word、图片)上传、解析、智能检索、内容提取的系统。用户可通过自然语言提问,系统自动从文档中提取答案(比如 “提取这份合同的甲方名称”“总结这篇论文的研究方法”),同时支持文档分类、关键词高亮、版本管理。

数据库

MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- 1. 用户表 (已确认)
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`userName` varchar(256) NULL COMMENT '用户昵称',
`userAccount` varchar(256) NULL COMMENT '账号',
`avatarUrl` varchar(1024) NULL COMMENT '用户头像',
`gender` tinyint NULL COMMENT '性别',
`userPassword` varchar(512) NOT NULL COMMENT '密码',
`userStatus` int DEFAULT '0' NULL COMMENT '状态 0-正常',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
`userRole` tinyint DEFAULT '0' NULL COMMENT '用户角色 0-管理员 1-普通用户 2-VIP 3-被封禁',
UNIQUE KEY `uk_user_account` (`userAccount`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- ----------------------------
-- 2. 文档元数据表 (核心业务)
-- 存储上传文件的原始信息、解析状态和AI摘要
-- ----------------------------
DROP TABLE IF EXISTS `document`;
CREATE TABLE `document` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`userId` bigint NOT NULL COMMENT '上传用户ID',
`fileName` varchar(256) NOT NULL COMMENT '原始文件名',
`title` varchar(256) NOT NULL COMMENT '文档标题',
`filePath` varchar(1024) NOT NULL COMMENT '文件存储路径 (OSS/本地)',
`fileSize` bigint NOT NULL COMMENT '文件大小 (字节)',
`fileType` varchar(64) NOT NULL COMMENT '文件类型 (pdf, docx, txt, md)',
`parseStatus` tinyint DEFAULT '0' NOT NULL COMMENT '解析状态 0-上传中 1-解析中 2-完成 3-失败',
`wordCount` int DEFAULT '0' NULL COMMENT '文档总字数',
`content` longtext NULL COMMENT '文档内容',
`summary` text NULL COMMENT 'AI生成的文档摘要',
`tags` varchar(512) NULL COMMENT '自动提取的标签 (逗号分隔)',
`errorMessage` varchar(1024) NULL COMMENT '解析失败时的错误信息',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`userId`),
KEY `idx_parse_status` (`parseStatus`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文档元数据表';

-- ----------------------------
-- 3. AI 对话记录表 (核心业务)
-- 存储用户与AI关于文档的问答历史
-- ----------------------------
DROP TABLE IF EXISTS `chat_record`;
CREATE TABLE `chat_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`userId` bigint NOT NULL COMMENT '用户ID',
`documentId` bigint NULL COMMENT '关联文档ID (若为通用聊天则为NULL)',
`sessionId` varchar(64) NULL COMMENT '会话ID (用于多轮对话上下文)',
`question` text NOT NULL COMMENT '用户提问',
`answer` text NULL COMMENT 'AI回答',
`sourceChunks` text NULL COMMENT '参考的文档片段ID列表 (JSON格式)',
`modelType` varchar(64) DEFAULT 'default' NULL COMMENT '使用的模型类型',
`tokenUsage` int DEFAULT '0' NULL COMMENT '消耗Token数',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`userId`),
KEY `idx_document_id` (`documentId`),
KEY `idx_session_id` (`sessionId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI对话记录表';

-- ----------------------------
-- 4. 关键信息提取结果表 (特色功能)
-- 存储从文档中结构化提取的特定字段 (如合同金额、日期等)
-- ----------------------------
DROP TABLE IF EXISTS `extracted_info`;
CREATE TABLE `extracted_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`documentId` bigint NOT NULL COMMENT '关联文档ID',
`userId` bigint NOT NULL COMMENT '用户ID',
`fieldName` varchar(128) NOT NULL COMMENT '提取字段名 (如: contractAmount)',
`fieldValue` text NOT NULL COMMENT '提取的值',
`confidence` decimal(5,2) DEFAULT '0.00' NULL COMMENT 'AI置信度 (0-100)',
`originalText` text NULL COMMENT '原文片段',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_document_id` (`documentId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='关键信息提取结果表';

-- ----------------------------
-- 5. 用户接口配额表 (运营/计费)
-- 控制不同角色用户的AI调用次数限制
-- ----------------------------
DROP TABLE IF EXISTS `user_quota`;
CREATE TABLE `user_quota` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`userId` bigint NOT NULL COMMENT '用户ID',
`totalQuota` int DEFAULT '0' NOT NULL COMMENT '总配额次数',
`usedQuota` int DEFAULT '0' NOT NULL COMMENT '已使用次数',
`remainingQuota` int DEFAULT '0' NOT NULL COMMENT '剩余可用次数',
`resetTime` datetime NULL COMMENT '配额重置时间',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
UNIQUE KEY `uk_user_id` (`userId`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户接口配额表';

-- ----------------------------
-- 6. 系统公告表 (通用模块)
-- 发布系统通知或更新日志
-- ----------------------------
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`title` varchar(256) NOT NULL COMMENT '公告标题',
`content` text NOT NULL COMMENT '公告内容',
`publisherId` bigint NOT NULL COMMENT '发布者ID (管理员)',
`status` tinyint DEFAULT '1' NOT NULL COMMENT '状态 0-下架 1-上架',
`priority` int DEFAULT '0' NULL COMMENT '优先级 (数字越大越靠前)',
`createTime` datetime DEFAULT CURRENT_TIMESTAMP NULL COMMENT '创建时间',
`updateTime` datetime DEFAULT CURRENT_TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`isDelete` tinyint DEFAULT '0' NOT NULL COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统公告表';

SET FOREIGN_KEY_CHECKS = 1;

PGVector

https://github.com/pgvector/pgvector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 确保已安装 pgvector 插件
CREATE EXTENSION IF NOT EXISTS vector;

-- 文档分块与向量表 (存储在 PostgreSQL)
DROP TABLE IF EXISTS document_chunk;
CREATE TABLE document_chunk (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
document_id BIGINT NOT NULL, -- 关联 MySQL 中的 document.id
chunk_content TEXT NOT NULL, -- 文本分块内容
embedding vector(1536), -- 向量数据 (维度需与你的模型一致,如 1536, 768 等)
chunk_index INT NOT NULL, -- 分块顺序
metadata JSONB, -- 额外元数据 (页码、标题等)
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 创建向量索引 (加速相似度搜索)
CREATE INDEX ON document_chunk USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
CREATE INDEX idx_chunk_doc_id ON document_chunk(document_id);

后端-WGDocument

初始化

创建项目

选择功能:
Lombok + Spring Web + Spring Boot DevTools + Spring Configuration Processor + MySQL Driver
显示引入AOP

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

引入 MyBatis-Plus

1
2
3
4
5
6
<!-- https://baomidou.com/getting-started/install/ -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.15</version>
</dependency>

引入 commons-lang3 依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.20.0</version>
</dependency>

引入hutool

1
2
3
4
5
6
7
<!-- Source: https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.43</version>
<scope>compile</scope>
</dependency>

文档解析

PDF 解析

1
2
3
4
5
6
7
<!-- Source: https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.6</version>
<scope>compile</scope>
</dependency>

Word 解析

1
2
3
4
5
6
7
8
9
10
11
12
<!-- POI 核心依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.5</version>
<!-- Source: https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.5.1</version>
<scope>compile</scope>
</dependency>

HTML 解析

1
2
3
4
5
6
7
8
<!-- jsoup HTML 解析库 -->
<!-- Source: https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.22.1</version>
<scope>compile</scope>
</dependency>

接口文档

1
2
3
4
5
6
<!-- 显式引入最新 springdoc -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.16</version> <!-- 最新稳定版 -->
</dependency>

配置 application.yaml

1
2
3
4
5
6
7
8
9
# 接口文档配置
# 生产环境建议关闭 Springdoc 相关端点
springdoc:
api-docs:
enabled: true
path: /v3/api-docs
swagger-ui:
path: /swagger-ui.html
persistAuthorization: true

访问:
http://localhost:8080/swagger-ui.html

大模型

Spring AI 核心

1
2
3
4
5
6
7
<!-- Source: https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-client-chat -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-client-chat</artifactId>
<version>1.1.2</version>
<scope>compile</scope>
</dependency>

Spring AI Alibaba

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Source: https://mvnrepository.com/artifact/com.alibaba.cloud.ai/spring-ai-alibaba-agent-framework -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-agent-framework</artifactId>
<version>1.1.2.0</version>
</dependency>

<!-- DashScope ChatModel 支持(如果使用其他模型,请跳转 Spring AI 文档选择对应的 starter) -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>1.1.2.0</version>
</dependency>
1
2
3
4
5
6
<!-- Markdown 文档解析器 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-markdown-document-reader</artifactId>
<version>1.1.2.0</version>
</dependency>

向量数据库

1
2
3
4
5
6
<!-- Source: https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.10</version>
</dependency>
1
2
3
4
5
6
7
<!-- Source: https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-starter-vector-store-pgvector -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-pgvector</artifactId>
<version>1.1.2</version>
<scope>compile</scope>
</dependency>

cos-RustFS

1
2
3
4
5
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.25.27</version>
</dependency>

配置application.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
spring:
application:
name: WGDocument
# 数据库连接池
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydocument
username: root
password: 123456
# 文件上传
servlet:
multipart:
enabled: true
max-file-size: 100MB # 单个文件最大 100MB
max-request-size: 100MB # 整个请求最大 100MB

# Spring AI 配置
ai:
dashscope:
api-key: #${AI_DASHSCOPE_API_KEY}

# PGVector 配置 (通常会自动读取 spring.datasource,但需指定 vector store 类型)
vectorstore:
pgvector:
index-type: hnsw

server:
port: 8080
servlet:
session:
timeout: 1800s

# MyBatisX 自动命名类似映射的冲突解决
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: fun.wgfun.wgdocument.model.entity

# 接口文档配置
# SpringBoot 3.x 版本配置
springdoc:
api-docs:
enabled: true
path: /v3/api-docs
swagger-ui:
path: /swagger-ui.html
persistAuthorization: true

前端-WGDFrontend

初始化

Vue
npm create vue@latest @3.22.0
选择功能:
Typescript + Router + Pinia + Prettier
引入组件库 Element Plus 2.13.3
npm install element-plus --save

前端管理-WGDManagement

React + 组件库 Ant Design + Umi + Ant Design Pro
Ant Design Pro 官网