网站进入百度沙盒,微商建立网站,男人互做网站,网站备案 图片大小本文将聚焦电商行业高频痛点#xff0c;通过实战案例 —— 电商客服智能知识库 RAG 系统#xff0c;带大家完成从需求分析、环境搭建到系统测试的全流程开发。该系统支持本地 PDF 格式的电商规则文档导入、Milvus 向量存储、双 Advisor 检索增强#xff0c;可精准解答用户关…本文将聚焦电商行业高频痛点通过实战案例 —— 电商客服智能知识库 RAG 系统带大家完成从需求分析、环境搭建到系统测试的全流程开发。该系统支持本地 PDF 格式的电商规则文档导入、Milvus 向量存储、双 Advisor 检索增强可精准解答用户关于退换货政策、物流查询、促销活动等咨询帮助企业提升客服响应效率、降低沟通成本同时避免大模型 “幻觉” 问题。一、项目需求与技术选型1. 核心需求支持导入本地 PDF 格式电商规则文档如《电商知识库标准条款》等。实现电商场景高频问题智能问答如 “双 11 买的口红拆封能退吗”“未发货订单怎么改地址”“偏远地区包邮吗”。支持两种检索模式精准条款匹配QuestionAnswerAdvisor与复杂场景增强RetrievalAugmentationAdvisor适配不同咨询场景。回答需基于知识库内容标注信息来源避免编造规则同时过滤与电商业务无关的查询。支持提取用户问题中的核心实体商品类型、购买时间、需求类型提升检索精准度。2. 技术选型技术模块选型方案开发框架Spring Boot 3.5.3 Spring AI 1.0.0-SNAPSHOT大模型智普 AIEmbeddingembedding-2ChatGLM-4-Flash向量数据库Milvus 2.4.0文档解析PdfDocumentReader支持 PDF 文档解析文本切分TokenTextSplitter按 Token 数量智能切分RAG 组件QuestionAnswerAdvisor RetrievalAugmentationAdvisor二、项目初始化与环境配置1. 创建 Spring Boot 项目项目名称Weiz-SpringAI-RAG-EcommerceCustomerJDK 版本17Spring Boot 版本3.5.3核心依赖Spring Web、Spring AI 相关依赖智普 AI、Milvus、RAG 组件、Tika 文档解析PDF 文档解析2. 配置 pom.xml 依赖?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdcom.example/groupId artifactIdWeiz-SpringAI/artifactId version0.0.1-SNAPSHOT/version /parent artifactIdWeiz-SpringAI-RAG-EcommerceCustomer/artifactId nameWeiz-SpringAI-RAG-EcommerceCustomer/name descriptionWeiz-SpringAI-RAG-EcommerceCustomer/description dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-zhipuai/artifactId /dependency !-- spring-ai-client-chat 中包括 TokenTextSplitter、TextReader、Document 等工具 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-client-chat/artifactId /dependency !-- PDF 文档解析依赖 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-pdf-document-reader/artifactId /dependency !-- DOC 文档解析依赖Tika -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-tika-document-reader/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency !-- Milvus 向量数据库 Starter -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-vector-store-milvus/artifactId /dependency !-- QuestionAnswerAdvisor 依赖 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-advisors-vector-store/artifactId /dependency !-- RetrievalAugmentationAdvisor 依赖 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-rag/artifactId /dependency /dependencies /project3. 配置 application.properties# 应用基础配置 spring.application.nameWeiz-SpringAI-RAG-EcommerceCustomer server.port8080 # 智普 AI 配置 spring.ai.zhipuai.api-key你的智普 AI API Key spring.ai.zhipuai.base-urlhttps://open.bigmodel.cn/api/paas spring.ai.zhipuai.embedding.options.modelembedding-2 spring.ai.zhipuai.chat.options.modelGLM-4-Flash # Milvus 向量数据库配置 spring.ai.vectorstore.milvus.client.hostlocalhost spring.ai.vectorstore.milvus.client.port19530 spring.ai.vectorstore.milvus.client.tokenroot:Milvus spring.ai.vectorstore.milvus.database-namedefault spring.ai.vectorstore.milvus.collection-nameguide_exam_store spring.ai.vectorstore.milvus.initialize-schematrue spring.ai.vectorstore.milvus.embedding-dimension1024 # 日志配置便于调试 logging.level.org.springframework.aiINFO logging.level.com.exampleDEBUG三、知识库构建电商规则文档导入与向量入库1. 准备电商客服知识库文档将 电商知识库标准条款.doc 文档放入src/main/resources目录文档内容示例一、退换货政策核心条款 一通用退换货规则 1. 7 天无理由退换用户签收商品后 7 天内商品完好吊牌未拆、包装完整、 无使用痕迹支持无理由退换美妆、个护类商品拆封后仍支持 7 天无理由退 换但需保留赠品及原包装配件。 2. 质量问题退换商品存在破损、功能故障、材质不符等质量问题支持签收后 30 天内免费退换往返运费由商家承担需提供问题商品清晰照片、快递面单作为 凭证48 小时内响应处理。 3. 退换货流程用户发起申请 → 商家审核24 小时内→ 用户寄回商品7 天 内→ 商家验收 → 退款 / 换货验收后 48 小时内。 二特殊商品退换规则 1. 定制类商品刻字首饰、定制尺寸服装、个性化印刷品等无质量问题不支持退 换质量问题需在签收后 48 小时内反馈提供定制凭证及问题证明。 2. 食品 / 美妆类食品、饮料、保健品等开封后不支持退换美妆类商品口红、 粉底液等使用后出现过敏需提供医院诊断证明支持全额退款。 3. 数码家电类未拆封数码家电支持 7 天无理由退换拆封后仅支持质量问题退 换需提供品牌售后检测报告保修服务按品牌官方政策执行。 ....... 后面省略2. 编写知识库初始化配置创建com.example.weizspringai.config.KnowledgeBaseConfig 类实现 DOC 文档解析、文本切分与向量入库import org.springframework.ai.document.Document; import org.springframework.ai.reader.tika.TikaDocumentReader; import org.springframework.ai.transformer.splitter.TokenTextSplitter; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Component; import jakarta.annotation.PostConstruct; import java.util.ArrayList; import java.util.List; Component public class KnowledgeBaseConfig { private final VectorStore vectorStore; public KnowledgeBaseConfig(VectorStore vectorStore) { this.vectorStore vectorStore; } /** * 项目启动时初始化知识库解析 PDF 文档 → 切分文本 → 向量入库 */ PostConstruct public void initKnowledgeBase() { try { System.out.println(开始初始化电商客服知识库...); // 1. 定义需要导入的 PDF 文档列表 ListString pdfFiles List.of( 电商知识库标准条款.docx ); ListDocument allSplitDocs new ArrayList(); for (String fileName : pdfFiles) { // 2. 读取单个 PDF 文档 Resource resource new ClassPathResource(fileName); TikaDocumentReader reader new TikaDocumentReader(resource); ListDocument rawDocs reader.read(); // 3. 优化文本切分策略适配电商规则条款化特点 TokenTextSplitter splitter TokenTextSplitter.builder() .withChunkSize(600) // 每段最大 600 Token匹配规则条款长度 .withMinChunkSizeChars(200) // 每段最小 200 字符 .withKeepSeparator(true) // 保留条款分隔符 .build(); // 4. 切分当前文档并添加到总列表 ListDocument splitDocs splitter.apply(rawDocs); allSplitDocs.addAll(splitDocs); System.out.println(已解析文档 fileName 生成 splitDocs.size() 个文本片段); } // 5. 批量向量入库Spring AI 自动调用 EmbeddingModel 完成向量化 vectorStore.add(allSplitDocs); System.out.println(知识库初始化完成共导入 allSplitDocs.size() 个文本片段); } catch (Exception e) { System.err.println(知识库初始化失败 e.getMessage()); e.printStackTrace(); } } }四、RAG 核心配置 Advisor 初始化创建com.example.ecommerceservicerag.config.RAGConfig类配置QuestionAnswerAdvisor与 RetrievalAugmentationAdvisor 等 RAG 组件优化提示词以提取电商业务实体、提升检索精准度import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor; import org.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor; import org.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter; import org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever; import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class RAGConfig { private final VectorStore vectorStore; public RAGConfig(VectorStore vectorStore) { this.vectorStore vectorStore; } /** * 配置 QuestionAnswerAdvisor适合精准条款查询如具体政策匹配 */ Bean public QuestionAnswerAdvisor questionAnswerAdvisor() { return QuestionAnswerAdvisor.builder(vectorStore) .searchRequest(SearchRequest.builder() .similarityThreshold(0.07) // 优化阈值适配电商规则检索 .topK(4) // 取 Top4 相似片段提升精准度 .build()) .build(); } /** * 配置 RetrievalAugmentationAdvisor适合复杂场景查询如促销退换货组合问题 */ Bean public RetrievalAugmentationAdvisor retrievalAugmentationAdvisor() { // 1. 向量检索器配置检索参数 VectorStoreDocumentRetriever retriever VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .similarityThreshold(0.07) .topK(4) .build(); // 查询增强器 ContextualQueryAugmenter queryAugmenter ContextualQueryAugmenter.builder() .allowEmptyContext(true) .build(); // 3. 构建检索增强 Advisor return RetrievalAugmentationAdvisor.builder() .documentRetriever(retriever) .queryAugmenter(queryAugmenter) .build(); } /** * 配置 ChatClient集成智普 AI GLM-4-Flash适配电商客服语气 */ Bean public ChatClient chatClient(org.springframework.ai.chat.model.ChatModel chatModel) { return ChatClient.builder(chatModel) .defaultSystem( 你是友好的电商客服顾问仅基于提供的知识库内容回答用户问题规则如下 1. 回答需亲切、简洁、准确符合电商客服沟通语气避免生硬表述 2. 涉及政策规则时分点说明关键信息让用户一目了然 3. 回答末尾必须标注信息来源格式信息来源[文档名称 - 相关条款类别] 4. 若未查询到相关信息回复非常抱歉暂未查询到该问题的相关规则建议联系人工客服咨询~ 5. 仅回应与电商购物退换货、促销、物流等相关的问题无关问题直接回复上述统一话术。 ) .build(); } }五、编写控制器提供问答接口创建com.example.ecommerag.controller.CustomerServiceController类提供精准条款查询与复杂场景增强查询两种接口适配电商客服日常咨询场景import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor; import org.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; RestController RequestMapping(/ecommerce/service) public class CustomerServiceController { Autowired private ChatClient chatClient; Autowired private QuestionAnswerAdvisor questionAnswerAdvisor; Autowired private RetrievalAugmentationAdvisor retrievalAugmentationAdvisor; /** * 精准条款查询接口基于 QuestionAnswerAdvisor * 适用场景查询具体规则条款如包邮条件、退换货时限、价保规则 */ GetMapping(/chat/precise) public MapString, String preciseChat(RequestParam(question) String question) { String answer chatClient.prompt() .user(question) .advisors(List.of(questionAnswerAdvisor)) .call() .content(); return Map.of( question, question, answer, answer, mode, precise精准条款查询 ); } /** * 复杂场景增强查询接口基于 RetrievalAugmentationAdvisor * 适用场景组合类、流程类问题如促销期退换货、已下单改地址、VIP用户物流查询 */ GetMapping(/chat/enhanced) public MapString, String enhancedChat(RequestParam(question) String question) { String answer chatClient.prompt() .user(question) .advisors(List.of(retrievalAugmentationAdvisor)) .call() .content(); return Map.of( question, question, answer, answer, mode, enhanced复杂场景增强 ); } }六、测试与验证测试 1查询具体概念精准问答访问http://localhost:8083/ecommerce/service/chat/precise?question新疆地区订单多少金额包邮响应结果{ question: 新疆地区订单多少金额包邮, answer: 新疆属于偏远地区订单金额满199元可享受包邮服务不满199元需收取20元运费哦~ 信息来源[物流服务标准 - 包邮政策], mode: precise精准条款查询 }测试 2查询多步骤问题检索增强访问http://localhost:8080/ecommerce/service/chat/enhanced?question双11买的口红拆封了能退吗我是VIP用户响应结果{ question: 双11买的口红拆封了能退吗我是VIP用户, answer: 非常抱歉根据我们的退换货政策口红属于美妆类商品拆封后不支持7天无理由退换。不过作为VIP用户您在促销期间退换货可以享受免审核和优先处理的特权。如果您确实需要退换建议联系客服了解具体情况。信息来源[电商知识库标准条款文档模板 - 退换货政策], mode: enhanced复杂场景增强 }测试 3流程类查询未发货订单改地址访问http://localhost:8080/ecommerce/service/chat/enhanced?question我刚下单还没发货想修改收货地址可以吗响应结果{ question: 我刚下单还没发货想修改收货地址可以吗, answer: 当然可以您下单后24小时内可以通过APP修改收货地址和联系电话。如果超过24小时需要联系客服协调但仅支持同城市地址修改哦。信息来源[电商知识库标准条款文档模板 - 订单修改与追踪]。, mode: enhanced复杂场景增强 }测试 4查询无关问题验证过滤访问http://localhost:8083/ecommerce/service/chat/precise?question怎么办理信用卡响应结果{ question: 怎么办理信用卡, answer: 非常抱歉暂未查询到关于如何办理信用卡的相关规则建议联系人工客服咨询~信息来源[电商知识库标准条款文档模板 - 退换货政策], mode: precise精准条款查询 }测试结果表明系统完全满足需求能精准回答导游考试相关问题支持不同类型的查询场景且能过滤无关问题符合生产级应用的要求。七、项目扩展方向多格式文档支持扩展支持 PDF、Excel、PPT 等格式的知识库导入使用 Spring AI 提供的对应文档阅读器。知识库增量更新实现知识库的新增、修改、删除功能避免每次更新都需重启服务。前端可视化界面开发 Web 前端支持文档上传、问题输入、回答展示、历史记录查询等功能。权限控制添加用户认证与授权功能限制知识库的访问权限如仅导游考试学员可使用。系统监控集成 Prometheus Grafana监控 Milvus 检索性能、大模型调用耗时、接口响应速度等指标。总结本文我们通过一个完整的导游考试知识库 RAG 系统演示了 Spring AI 在实际业务场景中的落地流程。从需求分析、技术选型到环境配置、知识库构建再到核心组件开发与系统测试每一步都围绕 “实用、稳定、高效” 的原则展开。通过该项目我们不仅巩固了 Spring AI 的核心技术Embedding、RAG、向量数据库集成还掌握了从 0 到 1 构建 AI 应用的思维方式。Spring AI 作为 Java 生态的原生生成式 AI 框架其最大价值在于降低了 AI 技术的落地门槛让 Java 开发者无需跨生态即可快速构建智能应用。随着大模型技术的持续演进Spring AI 也在不断迭代升级未来将支持更多场景、更多模型、更多功能。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】