# PetAI **Repository Path**: spaceeyt5/pet-ai ## Basic Information - **Project Name**: PetAI - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-15 - **Last Updated**: 2026-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 宠物知识智能问答平台后端 基于 Spring Boot + Spring AI Alibaba + Milvus + Redis + MySQL + MyBatis-Plus + RabbitMQ + XXL-Job 实现的宠物知识 RAG 问答后端。 ## 功能清单 - 文档上传管理:支持 TXT / PDF 宠物科普资料导入,文本提取、内容清洗、过滤广告与无效内容。 - 异步文档处理:上传接口写入消息队列后立即返回,XXL-Job 扫描待处理文档,完成切片、向量化并写入 Milvus。 - 向量检索:Embedding 模型生成向量,Milvus COSINE 相似度检索,设置相似度阈值抑制幻觉。 - Redis 缓存:高频常见问题的检索结果按问题 MD5 缓存,删除文档时同步清理相关缓存。 - RAG 问答:问题向量化 -> 知识召回 -> 拼接提示词 -> 大模型生成答案,回答附带知识片段来源。 - 多轮对话:基于 MySQL 保存会话历史,支持连续追问。 - 知识库维护:分类、文档新增 / 删除,删除文档同步清理 Milvus 向量。 - API 文档:Knife4j(OpenAPI3)输出接口文档,可供 H5 / 小程序调用。 ## 技术栈 | 组件 | 用途 | | --- | --- | | Spring Boot 3.3 | Web 应用基础 | | Spring AI Alibaba | DashScope 大模型问答与 Embedding | | Milvus | 文本片段向量存储与相似度检索 | | MySQL + MyBatis-Plus | 分类、文档、会话历史持久化 | | Redis | 高频检索结果缓存 | | RabbitMQ | 文档导入任务解耦 | | XXL-Job | 文档切片 / 向量化异步任务 | | Knife4j | API 接口文档 | ## 快速启动 1. 导入 `sql/init.sql` 初始化 MySQL。 2. 启动 MySQL、Redis、RabbitMQ、Milvus,以及可选的 XXL-Job Admin。 3. 配置环境变量并启动: ```bash export DASHSCOPE_API_KEY=sk-xxx export MYSQL_HOST=localhost export MYSQL_PORT=3306 export REDIS_HOST=localhost export RABBITMQ_HOST=localhost export MILVUS_HOST=localhost mvn spring-boot:run ``` 默认端口为 `8081`(本机 8080 可能被其他服务占用),MySQL 默认密码为 `1234`,可通过 `MYSQL_PASSWORD` 覆盖。 4. 浏览器访问接口文档:`http://localhost:8081/doc.html` ## 前端启动 ```bash cd frontend npm install npm run dev ``` 前端开发服务器默认运行在 `http://localhost:5173`,Vite 会将 `/api` 代理到 `http://localhost:8081`。 ## Docker 部署 `deploy/` 目录提供整套 Docker Compose 部署,包含 MySQL、Redis、RabbitMQ、Milvus(etcd + MinIO)、XXL-Job Admin、后端和前端镜像。 ```bash cd deploy cp .env.example .env # 编辑 .env,填入 DASHSCOPE_API_KEY docker compose up -d --build ``` 部署细节、访问地址和 XXL-Job 任务配置见 `deploy/README.md`。 ## 示例知识文档 项目内已内置一份香港渔农自然护理署官方发布的《照料你的狗只》PDF(84 页,约 19 MB),存放在 `docs/sample-knowledge/pet-dog-care-qa.pdf`,用于演示宠物科普资料导入与 RAG 问答。文件来源和导入步骤见 `docs/sample-knowledge/README.md`。 ## XXL-Job 配置 在 XXL-Job Admin 中新增执行器,AppName 为 `pet-ai-job`,然后添加任务: - JobHandler:`documentProcessJobHandler` - Cron:建议 `0 0/1 * * * ?`(每分钟扫描一次待处理文档) - 路由策略:轮询 ## 目录结构 ```text src/main/java/com/petai ├── common 统一返回、异常处理 ├── config 各中间件配置 ├── controller HTTP 接口 ├── dto 请求 / 响应对象 ├── entity 数据库实体 ├── job XXL-Job 处理器 ├── mapper MyBatis-Plus Mapper ├── mq RabbitMQ 生产 / 消费 ├── service 核心业务服务 └── vector 向量数据模型 ``` ## 说明 - 本项目为小型养宠科普辅助工具,所有回答仅供参考,不能替代执业兽医诊断。 - 默认相似度阈值为 0.65,未检索到相关知识时直接返回“暂无相关科普资料”,不再调用大模型。