核心内容摘要
18线上看
通过之前的学习我们已掌握 Spring AI 核心模块对话、Embedding、RAG与优化技巧。
本文将聚焦电商行业高频痛点通过实战案例 —— 电商客服智能知识库 RAG 系统带大家完成从需求分析、环境搭建到系统测试的全流程开发。
该系统支持本地 PDF 格式的电商规则文档导入、Milvus 向量存储、双 Advisor 检索增强可精准解答用户关于退换货政策、物流查询、促销活动等咨询帮助企业提升客服响应效率、降低沟通成本同时避免大模型 “幻觉” 问题。
项目需求与技术选型
核心需求支持导入本地 PDF 格式电商规则文档如《电商知识库标准条款》等。
实现电商场景高频问题智能问答如 “双 11 买的口红拆封能退吗”“未发货订单怎么改地址”“偏远地区包邮吗”。
支持两种检索模式精准条款匹配QuestionAnswerAdvisor与复杂场景增强RetrievalAugmentationAdvisor适配不同咨询场景。
回答需基于知识库内容标注信息来源避免编造规则同时过滤与电商业务无关的查询。
支持提取用户问题中的核心实体商品类型、购买时间、需求类型提升检索精准度。
技术选型
项目初始化与环境配置
创建 Spring Boot 项目项目名称Weiz-SpringAI-RAG-EcommerceCustomerJDK 版本17Spring Boot 版本
3.
3核心依赖Spring Web、Spring AI 相关依赖智普 AI、Milvus、RAG 组件、Tika 文档解析PDF 文档解析
配置 pom.xml 依赖?xml version
0encodingUTF-8?project xmlnshttp://maven.apache.org/POM/
4.
0xmlns:xsihttp://www.w
org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/
4.
0 https://maven.apache.org/xsd/maven-
4.
0.
xsdmodelVersion
4.
0/modelVersionparentgroupIdcom.example/groupIdartifactIdWeiz-SpringAI/artifactIdversion
0.
1-SNAPSHOT/version/parentartifactIdWeiz-SpringAI-RAG-EcommerceCustomer/artifactIdnameWeiz-SpringAI-RAG-EcommerceCustomer/namedescriptionWeiz-SpringAI-RAG-EcommerceCustomer/descriptiondependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-zhipuai/artifactId/dependency!--spring-ai-client-chat 中包括TokenTextSplitter、TextReader、Document等工具--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-client-chat/artifactId/dependency!--PDF 文档解析依赖--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-pdf-document-reader/artifactId/dependency!--DOC 文档解析依赖Tika--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-tika-document-reader/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--Milvus向量数据库Starter--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-vector-store-milvus/artifactId/dependency!--QuestionAnswerAdvisor依赖--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-advisors-vector-store/artifactId/dependency!--RetrievalAugmentationAdvisor依赖--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-rag/artifactId/dependency/dependencies/project
配置 application.properties# 应用基础配置 spring.application.nameWeiz-SpringAI-RAG-EcommerceCustomerserver.port8080# 智普 AI 配置 spring.ai.zhipuai.api-key你的智普 AI APIKeyspring.ai.zhipuai.base-urlhttps://open.bigmodel.cn/api/paas spring.ai.zhipuai.embedding.options.modelembedding-2spring.ai.zhipuai.chat.options.modelGLM-4-Flash#Milvus向量数据库配置 spring.ai.vectorstore.milvus.client.hostlocalhost spring.ai.vectorstore.milvus.client.port19530spring.ai.vectorstore.milvus.client.tokenroot:Milvusspring.ai.vectorstore.milvus.database-namedefaultspring.ai.vectorstore.milvus.collection-nameguide_exam_store spring.ai.vectorstore.milvus.initialize-schematruespring.ai.vectorstore.milvus.embedding-dimension1024# 日志配置便于调试 logging.level.org.springframework.aiINFO logging.level.com.exampleDEBUG
知识库构建电商规则文档导入与向量入库
准备电商客服知识库文档将 电商知识库标准条款.doc 文档放入 src/main/resources 目录文档内容示例
退换货政策核心条款 一通用退换货规则
7天无理由退换用户签收商品后7天内商品完好吊牌未拆、包装完整、 无使用痕迹支持无理由退换美妆、个护类商品拆封后仍支持7天无理由退 换但需保留赠品及原包装配件。
质量问题退换商品存在破损、功能故障、材质不符等质量问题支持签收后30天内免费退换往返运费由商家承担需提供问题商品清晰照片、快递面单作为 凭证48小时内响应处理。
退换货流程用户发起申请 → 商家审核24小时内→ 用户寄回商品7天 内→ 商家验收 → 退款/换货验收后48小时内。
二特殊商品退换规则
定制类商品刻字首饰、定制尺寸服装、个性化印刷品等无质量问题不支持退 换质量问题需在签收后48小时内反馈提供定制凭证及问题证明。
食品/美妆类食品、饮料、保健品等开封后不支持退换美妆类商品口红、 粉底液等使用后出现过敏需提供医院诊断证明支持全额退款。
数码家电类未拆封数码家电支持7天无理由退换拆封后仅支持质量问题退 换需提供品牌售后检测报告保修服务按品牌官方政策执行。
.......后面省略
编写知识库初始化配置创建com.example.weizspringai.config.KnowledgeBaseConfig 类实现 DOC 文档解析、文本切分与向量入库importorg.springframework.ai.document.Document;importorg.springframework.ai.reader.tika.TikaDocumentReader;importorg.springframework.ai.transformer.splitter.TokenTextSplitter;importorg.springframework.ai.vectorstore.VectorStore;importorg.springframework.core.io.ClassPathResource;importorg.springframework.core.io.Resource;importorg.springframework.stereotype.Component;importjakarta.annotation.PostConstruct;importjava.util.ArrayList;importjava.util.List;ComponentpublicclassKnowledgeBaseConfig{privatefinalVectorStorevectorStore;publicKnowledgeBaseConfig(VectorStorevectorStore){this.vectorStorevectorStore;}/** * 项目启动时初始化知识库解析 PDF 文档 → 切分文本 → 向量入库 */PostConstructpublicvoidinitKnowledgeBase(){try{System.out.println(开始初始化电商客服知识库...);//
定义需要导入的 PDF 文档列表ListStringpdfFilesList.of(电商知识库标准条款.docx);ListDocumentallSplitDocsnewArrayList();for(StringfileName:pdfFiles){//
读取单个 PDF 文档ResourceresourcenewClassPathResource(fileName);TikaDocumentReaderreadernewTikaDocumentReader(resource);ListDocumentrawDocsreader.read();//
优化文本切分策略适配电商规则条款化特点TokenTextSplittersplitterTokenTextSplitter.builder().withChunkSize(
// 每段最大 600 Token匹配规则条款长度.withMinChunkSizeChars(
// 每段最小 200 字符.withKeepSeparator(true)// 保留条款分隔符.build();//
切分当前文档并添加到总列表ListDocumentsplitDocssplitter.apply(rawDocs);allSplitDocs.addAll(splitDocs);System.out.println(已解析文档fileName生成 splitDocs.size() 个文本片段);}//
批量向量入库Spring AI 自动调用 EmbeddingModel 完成向量化vectorStore.add(allSplitDocs);System.out.println(知识库初始化完成共导入 allSplitDocs.size() 个文本片段);}catch(Exceptione){System.err.println(知识库初始化失败e.getMessage());e.printStackTrace();}}}
RAG 核心配置 Advisor 初始化创建com.example.ecommerceservicerag.config.RAGConfig类配置QuestionAnswerAdvisor与 RetrievalAugmentationAdvisor 等 RAG 组件优化提示词以提取电商业务实体、提升检索精准度importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;importorg.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor;importorg.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter;importorg.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever;importorg.springframework.ai.vectorstore.SearchRequest;importorg.springframework.ai.vectorstore.VectorStore;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassRAGConfig{privatefinalVectorStorevectorStore;publicRAGConfig(VectorStorevectorStore){this.vectorStorevectorStore;}/** * 配置 QuestionAnswerAdvisor适合精准条款查询如具体政策匹配 */BeanpublicQuestionAnswerAdvisorquestionAnswerAdvisor(){returnQuestionAnswerAdvisor.builder(vectorStore).searchRequest(SearchRequest.builder().similarityThreshold(
0.
// 优化阈值适配电商规则检索.topK(
// 取 Top4 相似片段提升精准度.build()).build();}/** * 配置 RetrievalAugmentationAdvisor适合复杂场景查询如促销退换货组合问题 */BeanpublicRetrievalAugmentationAdvisorretrievalAugmentationAdvisor(){//
向量检索器配置检索参数VectorStoreDocumentRetrieverretrieverVectorStoreDocumentRetriever.builder().vectorStore(vectorStore).similarityThreshold(
0.
.topK(
.build();// 查询增强器ContextualQueryAugmenterqueryAugmenterContextualQueryAugmenter.builder().allowEmptyContext(true).build();//
构建检索增强 AdvisorreturnRetrievalAugmentationAdvisor.builder().documentRetriever(retriever).queryAugmenter(queryAugmenter).build();}/** * 配置 ChatClient集成智普 AI GLM-4-Flash适配电商客服语气 */BeanpublicChatClientchatClient(org.springframework.ai.chat.model.ChatModelchatModel){returnChatClient.builder(chatModel).defaultSystem( 你是友好的电商客服顾问仅基于提供的知识库内容回答用户问题规则如下
回答需亲切、简洁、准确符合电商客服沟通语气避免生硬表述
涉及政策规则时分点说明关键信息让用户一目了然
回答末尾必须标注信息来源格式信息来源[文档名称 - 相关条款类别]
若未查询到相关信息回复非常抱歉暂未查询到该问题的相关规则建议联系人工客服咨询~
仅回应与电商购物退换货、促销、物流等相关的问题无关问题直接回复上述统一话术。
).build();}}
编写控制器提供问答接口创建com.example.ecommerag.controller.CustomerServiceController 类提供精准条款查询与复杂场景增强查询两种接口适配电商客服日常咨询场景importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;importorg.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;importjava.util.Map;RestControllerRequestMapping(/ecommerce/service)publicclassCustomerServiceController{AutowiredprivateChatClientchatClient;AutowiredprivateQuestionAnswerAdvisorquestionAnswerAdvisor;AutowiredprivateRetrievalAugmentationAdvisorretrievalAugmentationAdvisor;/** * 精准条款查询接口基于 QuestionAnswerAdvisor * 适用场景查询具体规则条款如包邮条件、退换货时限、价保规则 */GetMapping(/chat/precise)publicMapString,StringpreciseChat(RequestParam(question)Stringquestion){StringanswerchatClient.prompt().user(question).advisors(List.of(questionAnswerAdvisor)).call().content();returnMap.of(question,question,answer,answer,mode,precise精准条款查询);}/** * 复杂场景增强查询接口基于 RetrievalAugmentationAdvisor * 适用场景组合类、流程类问题如促销期退换货、已下单改地址、VIP用户物流查询 */GetMapping(/chat/enhanced)publicMapString,StringenhancedChat(RequestParam(question)Stringquestion){StringanswerchatClient.prompt().user(question).advisors(List.of(retrievalAugmentationAdvisor)).call().content();returnMap.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 也在不断迭代升级未来将支持更多场景、更多模型、更多功能。