项目架构与准备
约 677 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › Spring AI › 实战项目:AI 智能客服系统
从零开始构建一个完整的 AI 智能客服系统,整合前面所学的 ChatClient、Tool Calling、RAG 等技术。
项目功能
| 功能模块 | 说明 |
|---|---|
| 智能问答 | 基于知识库的 RAG 问答,多轮对话 |
| 订单查询 | AI 通过 Tool 调用查询工单/订单状态 |
| 知识库管理 | 上传文档 → 向量化 → 语义检索 |
| 对话管理 | 多轮对话记忆,持久化到数据库 |
| 管理后台 | 知识库管理、对话记录查看、参数配置 |
技术栈
spring:
boot: 3.3.x
ai: 1.0.x
database:
- PostgreSQL 16 (pgvector) # 向量数据库
- MySQL 8 # 业务数据
ai:
provider: Ollama (开发) / OpenAI (生产)
model: llama3.2:3b / gpt-4o-mini
frontend: Thymeleaf + Tailwind CSS
deploy: Docker Compose项目结构
spring-ai-customer-service/
├── pom.xml
├── docker-compose.yml
├── src/main/java/com/example/cs/
│ ├── CsApplication.java
│ ├── config/
│ │ ├── AIConfig.java # ChatClient 与 Advisor 配置
│ │ └── VectorStoreConfig.java # PGVector 配置
│ ├── controller/
│ │ ├── ChatController.java # 对话 API
│ │ ├── KnowledgeController.java # 知识库管理 API
│ │ └── AdminController.java # 管理后台
│ ├── service/
│ │ ├── ChatService.java # 对话服务(RAG + Tool)
│ │ ├── KnowledgeService.java # 知识库服务
│ │ └── OrderToolService.java # 订单查询 Tool
│ ├── tool/
│ │ ├── OrderQueryTool.java # 订单查询 Tool
│ │ ├── ProductQueryTool.java # 产品查询 Tool
│ │ └── UserAuthTool.java # 用户认证 Tool
│ ├── model/
│ │ ├ entity/*.java # 数据库实体
│ │ └ dto/*.java # 数据传输对象
│ ├── repository/
│ │ ├── ChatMessageRepository.java # 对话记录 DAO
│ │ └── KnowledgeRepository.java # 知识库 DAO
│ └── controller/
│ └── admin/
│ ├── DashboardController.java
│ └── SettingsController.java
└── src/main/resources/
├── application.yml
├── prompts/
│ ├── rag-system.st # RAG 系统 Prompt
│ └── tool-system.st # Tool 系统 Prompt
├── static/
└── templates/pom.xml 依赖
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Spring AI -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pgvector-store-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-tika-document-reader</artifactId>
</dependency>
<!-- 数据库 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- 工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>docker-compose.yml
services:
postgres:
image: pgvector/pgvector:0.7.0-pg16
environment:
POSTGRES_DB: vectordb
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
mysql:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: customer_service
ports:
- "3306:3306"
volumes:
- mysqldata:/var/lib/mysql
app:
build: .
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/vectordb
SPRING_DATASOURCE_SECONDARY_URL: jdbc:mysql://mysql:3306/customer_service
depends_on:
- postgres
- mysql
volumes:
pgdata:
mysqldata:application.yml
server:
port: 8080
spring:
# PostgreSQL(向量数据库)
datasource:
url: jdbc:postgresql://localhost:5432/vectordb
username: postgres
password: postgres
# MySQL(业务数据)
datasource-secondary:
url: jdbc:mysql://localhost:3306/customer_service
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: false
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: llama3.2:3b
temperature: 0.3
embedding:
options:
model: nomic-embed-text
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimension: 768
initialize-schema: true小结
- 项目融合了 ChatClient、RAG、Tool Calling、多轮对话等全部 Spring AI 能力。
- 技术栈:Spring Boot + Spring AI + PostgreSQL(pgvector) + MySQL。
- Docker Compose 一键启动所有服务。
- 项目结构按功能分层:controller → service → tool → repository。
- 开发阶段用 Ollama 本地模型,生产切换到 OpenAI。
下一节:知识库模块
