本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。

在构建智能应用时,我们常常希望大模型能回答与我们私有数据(如公司内部文档、产品手册、技术规范)相关的问题。检索增强生成(RAG)是实现这一目标的主流技术。然而,从零搭建一套 RAG 系统涉及文档解析、文本分块、向量化、向量数据库搭建与维护等一系列工作复杂
有没有一种方法,能让我们专注于业务逻辑开发,而将繁琐的数据处理和基础设施交给成熟的平台呢?答案是肯定的。
本文将介绍如何利用 阿里云百炼平台 的知识库能力,结合 Spring AI Alibaba 框架,快速构建一个功能强大、易于维护的企业级 RAG 应用。

了解阿里云百炼平台
你可以将百炼想象成一个"AI 应用领域的超级工厂"。它不仅仅提供大模型 API 调用,而是提供了一整套从数据到模型、再到应用部署的端到端解决方案。
用一句来概括就是:百炼将 RAG 系统中最"脏活累活"的部分全部打包成了服务,让 Java 开发者可以像调用一个普通 Spring Bean 一样,轻松使用强大的知识库检索能力。
**本文重点关注的是知识库:**百炼提供了一个可视化的知识库管理界面。你可以像上传网盘文件一样,上传 Word、PDF、Markdown、TXT 等格式的文档。平台会自动完成:
- 识别文档结构,提取纯文本内容。
- 将长文档智能切分成具有完整语义的段落。
- 使用高性能的嵌入模型将文本块转换为向量,并存储在高效、可扩展的云端向量数据库中。
百炼知识库优势
你可能会问:我也可以自己搭建一个向量数据库(如 Milvus, ChromaDB),为什么还要用百炼的知识库?这主要是基于以下几点考量:
- 低成本:你无需安装、配置、维护任何向量数据库或 ETL(抽取、转换、加载)管道。这一切都由百炼平台托管,让你从基础设施的烦恼中解放出来。通过简单的 Web 界面上传文档,平台自动完成所有复杂的预处理工作,极大缩短了开发周期。
- 性能与可靠性:百炼的知识库底层由阿里云强大的云基础设施支撑,具备高可用、高并发和弹性伸缩的能力。无论你的知识库是几 MB 还是几百 GB,都能获得稳定、快速的检索体验。自建向量数据库在数据量增大时,性能调优和运维成本会显著增加。
- 开发效率:既支持控制台可视化上传文档(3 步完成向量化),也可通过 Spring AI DashScopeCloudStore接口批量导入数据;零侵入集成 Spring AI:通过DocumentRetrievalAdvisor切面自动完成检索 - 生成流程串联,无需改造原有大模型调用逻辑。

实战案例:构建一个"知识库问答机器人"
本案例基于 Spring Boot 3.5 与 Spring AI Alibaba,实现「知识库问答」功能。
3.1 环境准备
- • 登录阿里云百炼平台,完成实名认证
- • 进入「API 密钥管理」页面,创建并保存api-key;
- • 准备数据。这里使用阿里云官方提供的一个测试文档:
阿里云百炼系列手机产品介绍.docx
yaml
百炼手机产品介绍
百炼X1 ------ 畅享极致视界:搭载6.7英寸1440 x 3200像素超清屏幕,搭配120Hz刷新率,流畅视觉体验跃然眼前。256GB海量存储空间与12GB RAM强强联合,无论是大型游戏还是多任务处理,都能轻松应对。5000mAh电池长续航,加上超感光四摄系统,记录生活每一刻精彩。参考售价:4599 - 4999
通义Vivid 7 ------ 智能摄影新体验:拥有6.5英寸1080 x 2400像素全面屏,AI智能摄影功能让每一张照片都能展现专业级色彩与细节。8GB RAM与128GB存储空间确保流畅操作,4500mAh电池满足日常所需。侧面指纹解锁,便捷又安全。参考售价:2999 - 3299
星尘S9 Pro ------ 创新视觉盛宴:突破性6.9英寸1440 x 3088像素屏下摄像头设计,带来无界视觉享受。512GB存储与16GB RAM的顶级配置,配合6000mAh电池与100W快充技术,让性能与续航并驾齐驱,引领科技潮流。参考售价:5999 - 6499。
百炼Ace Ultra ------ 游戏玩家之选:配备6.67英寸1080 x 2400像素屏幕,内置10GB RAM与256GB存储,确保游戏运行丝滑无阻。5500mAh电池搭配液冷散热系统,长时间游戏也能保持冷静。高动态双扬声器,沉浸式音效升级游戏体验。参考售价:3999 - 4299。
百炼Zephyr Z9 ------ 轻薄便携的艺术:轻巧的6.4英寸1080 x 2340像素设计,搭配128GB存储与6GB RAM,日常使用游刃有余。4000mAh电池确保一天无忧,30倍数字变焦镜头捕捉远处细节,轻薄而不失强大。参考售价:2499 - 2799。
百炼Flex Fold+ ------ 折叠屏新纪元:集创新与奢华于一身,主屏7.6英寸1800 x 2400像素与外屏4.7英寸1080 x 2400像素,多角度自由悬停设计,满足不同场景需求。512GB存储、12GB RAM,加之4700mAh电池与UTG超薄柔性玻璃,开启折叠屏时代新篇章。此外,这款手机还支持双卡双待、卫星通话,帮助您在世界各地都能畅联通话。参考零售价:9999 - 10999。
每一款手机都是匠心独运,只为成就您手中的科技艺术品。选择属于您的智能伙伴,开启未来科技生活的新篇章
文件保存在源代码项目: extra02/document/阿里云百炼系列手机产品介绍.docx
3.2 应用数据
应用数据将作为知识库的数据来源。所以先添加一些数据源。
新增一个数据表,将文件上传


添加后之后,解析文件需要等待一段时间,然后状态出现"导入完成"

3.3 创建知识库
创建知识库以及知识库中的内容都可以通过 Spring AI Alibaba 的API接口完成,这里为了方便,就直接在百炼控制台通过UI进行操作。


选择数据:

索引设置:

完成上面步骤后,数据将会导入到向量数据库中。这样知识库就创建好了
除了可以导入数据,还可以导入文档和图片

请记住这里填写的
知识库名称
,它会作为唯一索引被用于后续的 RAG 知识检索。
3.4 引入依赖
因为百炼提供了 DashScopeDocumentRetriever
类,该类可以通过DashScopeApi
到百炼平台的知识库中获取文档信息,不需要从本地向量数据库中获取。所以只需要引入spring-ai-alibaba-starter-dashscope
即可。
xml
<!-- extra02/pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 模型依赖:根据选型替换(如openai/deepseek/qwq) -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- 在测试用例中进行测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
3.5 application.yml
yaml
# extra02/src/main/resources/application.yml
spring:
ai:
dashscope:
api-key: ${AI_BAI_LIAN_API_KEY} # 必填,在操作系统环境变量中设置这个变量后,重启IDEA才能生效。因为IDEA启动的时候会缓存这个变量
chat:
options:
model: qwen-plus
temperature: 0.7
3.6 DashScopeApi
DashScopeApi
封装了百炼平台提供的API,如果需要在应用内上传文档,就需要通过它将文档上传到百炼平台上所以,需要配置这个Bean
less
//extra02/src/main/java/com/kaifamiao/extra02/configuration/BailianAutoconfiguration.java
@Configuration
public class BailianAutoconfiguration {
/**
* 百炼调用时需要配置 DashScope API,对 dashScopeApi 强依赖。
*
* @return
*/
@Bean
public DashScopeApi dashScopeApi(@Value("${spring.ai.dashscope.api-key}") String apiKey) {
return DashScopeApi.builder().apiKey(apiKey).build();
}
}
3.7 Service
编写Service,封装大模型聊天接口
arduino
// extra02/src/main/java/com/kaifamiao/extra02/service/RagService.java
public interface RagService {
Flux<ChatResponse> retrieve(String message);
}
java
// extra02/src/main/java/com/kaifamiao/extra02/service/CloudRagService.java
@Service()
public class CloudRagService implements RagService {
private static final String retrievalSystemTemplate = """
Context information is below.
---------------------
{question_answer_context}
---------------------
Given the context and provided history information and not prior knowledge,
reply to the user comment. If the answer is not in the context, inform
the user that you can't answer the question.
""";
private final ChatClient chatClient;
private final DashScopeApi dashscopeApi;
public CloudRagService(ChatClient.Builder builder, DashScopeApi dashscopeApi) {
// 文档获取
DocumentRetriever retriever = new DashScopeDocumentRetriever(dashscopeApi,
DashScopeDocumentRetrieverOptions.builder()
// 百炼知识库的名字
.withIndexName("百炼手机")
.build());
this.dashscopeApi = dashscopeApi;
this.chatClient = builder
.defaultAdvisors(new DocumentRetrievalAdvisor(retriever, new SystemPromptTemplate(retrievalSystemTemplate)))
.build();
}
public Flux<ChatResponse> retrieve(String message) {
return chatClient.prompt().user(message).stream().chatResponse();
}
}
3.8 测试类
less
//extra02/src/test/java/com/kaifamiao/extra02/RagServiceTest.java
@SpringBootTest
@Slf4j
public class RagServiceTest {
@Test
public void testRetrieve(@Autowired RagService ragService) {
Flux<ChatResponse> responseFlux = ragService.retrieve("你好,请为我介绍百炼 X1?");
StringBuilder sb = new StringBuilder();
responseFlux.toIterable().forEach(response -> {
String text = response.getResult().getOutput().getText();
sb.append(text);
log.info("response: {}", text);
});
log.info("response: {}", sb);
}
}
返回信息:
yaml
根据上下文,我可以整理出以下清晰信息:
1. **百炼 X1**
- 屏幕:6.7英寸,分辨率 1440 x 3200,120Hz刷新率
- 内存与存储:12GB RAM + 256GB ROM
- 电池:5000mAh
- 摄像头:超感光四摄系统
- 特性:支持双卡双待、卫星通话
- 参考售价:4599 - 4999元
源代码地址:github.com/kaiwill/kai...
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。