# PartnerMatching-BackEnd **Repository Path**: vic-gao/partner-matching-back-end ## Basic Information - **Project Name**: PartnerMatching-BackEnd - **Description**: 伙伴星球项目后端,基于 SpringBoot + MyBatis + Spring AI Alibaba + MySQL + Redis - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-01 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🤝 PartnerMatch 伙伴星球 一个基于标签智能匹配的伙伴推荐平台,支持用户注册、标签管理、个性化推荐以及智能助手聊天,旨在帮助用户快速找到兴趣相投的朋友。 本项目代码为后端代码,前端[看这里](https://gitee.com/n70huihui/partner-matching-front-end)。 --- ## 📌 项目简介 本项目是一个面向校园 / 社交场景的 “伙伴匹配系统”,用户可以通过自定义标签管理个人偏好,系统会基于标签相似度与智能推荐算法,自动推荐潜在伙伴。 平台支持: - 🏷️ 用户自定义标签 - 🔍 支持分页搜索 - 🧠 基于 AI 的增强搜索(Spring AI) - ✨ 推荐系统(粗排 + 精排) - 🧾 Sa-Token 登录认证 --- ## 🧱 项目架构 - 前端:微信小程序(WXML + WXSS + JS) - 后端:Spring Boot + Spring AI + MyBatis Plus + MySQL + Redis - 安全框架:Sa-Token - AI 功能:Spring AI Alibaba + 阿里云百炼平台知识库 --- ## 🌟 项目亮点 ### 🔍 智能搜索(增强搜索 RAG) - 接入 Spring AI Alibaba,集成阿里云百炼知识库。支持用户自然语言搜索(例:“找一个喜欢音乐和编程的人”) - 使用 Tool Calling 让智能助手可以获取当前用户的标签、用户名等信息 ### ⚙️ 推荐系统(粗排 + 精排) - 粗排:匹配标签分类(大标签/子标签),快速筛选候选人 - 精排:余弦相似度 + 优先队列重排序,返回最相关用户 - 模拟召回:从缓存用户中抽样,提升性能与相关性 ### 💬 支持 WebSocket 流式 AI 输出 - 前端实时显示 AI 聊天过程 - 后端采用 Spring WebSocket 流式推送,结合 AI 接口结果实时反馈(小程序不支持流式输出,故采用 WebSocket 代替) ### 🛡️ 安全机制 - 集成 Sa-Token,实现用户身份认证 - 在 AI Tool 中支持基于 Token 获取当前登录用户信息 --- ## 🧪 推荐接口实现原理 1. 模拟召回:从缓存中随机挑选出用户,这些是可能用的数据。 2. 粗排:使用大标签、子标签相似度来给用户打分,具体来说,一个用户和当前用户有多少个标签在大分类、子分类上相同,就打几分。 3. 精排:使用具体标签,结合**余弦相似度算法**,来计算最终的精排得分。 4. 重排序:使用优先队列,取出 TOP5。 --- ## 📅 后续优化方向 - 目前的 AI 助手后端和前端均没有对话记忆功能,后续可以补上这方面的功能。 - 关于用户推荐,当用户数量多了之后,随机从数据库中抽取用户进行召回性能便比较低。可以考虑在后端表中加入一个最近登录时间戳字段(long 类型),对这个字段构建索引,后续采用 “近期登录、活跃用户” 为筛选条件来进行召回会效率高些。 - 搜索页面使用 MySQL 的 `like` 关键字搜索,效率较低,无法使用索引。后续可以考虑在 MySQL 构建全文索引或者使用 ES 等数据库(倒排索引)加快搜索性能以及支持分词搜索。 --- ## 💡 运行注意事项 - sql 目录下的文件是用户表的表结构以及一些模拟数据(由 AI 生成)。 - application.yml 中的 app-id、secret-key、api-key 需要替换为你自己的密钥和 id 信息。 - 本项目还使用了阿里云百炼平台的知识库系统,需要您自己在百炼平台上申请 api-key 后构建知识库系统。具体文档可以[看这里](https://java2ai.com/docs/1.0.0-M6.1/practices/bailian/rag-knowledge/?spm=5176.29160081.0.0.5321aa5chWePfd)。知识库命名为 “伙伴星球知识库”。知识库的结构化数据在 sql 目录下的 user.xlsx 中。 --- ## 🧑‍💻 作者信息 - 👨‍💻 作者:许同学(n70huihui) - ✨ QQ:2744136107 - 📅 时间:2025 年 春