第十七章 百炼 RAG 知识库应用
版本标注
- Spring AI:
1.1.2- Spring AI Alibaba:
1.1.2.0章节定位
- 本章介绍的是阿里云提供的托管式知识库检索能力,也就是把文档管理、索引构建和知识库维护交给云平台。
- 相比自建
VectorStoreRAG,这条路线更适合快速接入和企业场景。
s01 > s02 > s03 > s04 > s05 > s06 > s07 > s08 > s09 > s10 > s11 > s12 > s13 > s14 > s15 > s16 > [ s17 ] > s18
"知识库不是把资料存进去就结束, 而是要让检索真正参与回答"
-- 百炼 RAG 的价值在于把专有知识接进模型。
一、什么是百炼 RAG?
1.1 自建 RAG vs 百炼 RAG
我们在第12章学习的 RAG:需要自己
- 准备文档数据
- 切分文本
- 向量化存储到向量数据库
- 配置检索和生成
阿里云百炼 RAG:提供一站式服务
- 阿里云帮你管理文档
- 自动向量化
- 自动索引优化
- 只需调用 API 即可检索
1.2 百炼 RAG 的优势
对比项
自建 RAG
百炼 RAG
部署维护
需要自己维护
阿里云全托管
文档管理
需要自己处理
可视化管理
索引优化
需要调优
自动优化
安全性
取决于自身
企业级安全
成本
服务器+运维
按调用量付费
二、核心概念与 API
2.1 DashScopeDocumentRetriever
Spring AI Alibaba 提供了 DashScopeDocumentRetriever,用于连接阿里云百炼知识库:
// 创建百炼文档检索器
DocumentRetriever retriever = new DashScopeDocumentRetriever(
dashScopeApi, // 阿里云API客户端
options // 配置选项(知识库名称等)
);
2.2 核心配置参数
// 关键配置:知识库名称
DashScopeDocumentRetrieverOptions options =
DashScopeDocumentRetrieverOptions.builder()
.withIndexName("ops") // 知识库名称
// .withTopK(3) // 返回3个最相似的结果
// .withScoreThreshold(0.7f) // 相似度阈值
.build();
三、项目代码详解
3.1 配置类(DashScopeConfig)
这一章能跑起来,关键在于先把 DashScopeApi、ChatModel、ChatClient 配好。BailianRagController 只是使用这些 Bean。
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DashScopeConfig {
@Value("${spring.ai.dashscope.api-key}")
private String apiKey;
private final String DEEPSEEK_MODEL = "deepseek-v3";
@Bean
public DashScopeApi dashScopeApi() {
return DashScopeApi.builder()
.apiKey(apiKey)
.build();
}
@Bean
public ChatModel deepSeek(DashScopeApi dashScopeApi) {
return DashScopeChatModel.builder()
.dashScopeApi(dashScopeApi)
.defaultOptions(
DashScopeChatOptions.builder().withModel(DEEPSEEK_MODEL).build()
)
.build();
}
@Bean
public ChatClient chatClient(ChatModel dashscopeChatModel) {
return ChatClient.builder(dashscopeChatModel).build();
}
}
这段配置的作用是:
dashScopeApi():创建百炼 API 客户端。deepSeek(...):指定本章使用的聊天模型(deepseek-v3)。chatClient(...):给控制器提供统一的调用入口。
3.2 application.yml(与配置类对应)
DashScopeConfig 依赖 spring.ai.dashscope.api-key,所以配置文件里至少要有:
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
你当前项目里的 Saa17 还能看到 redis 配置,但本章这条百炼托管知识库链路里并不依赖本地 VectorStore,因此核心仍然是上面的 dashscope.api-key 与知识库名称。
3.3 百炼 RAG 控制器
import com.alibaba.cloud.ai.advisor.DocumentRetrievalAdvisor;
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetrievalAdvisor;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetriever;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetrieverOptions;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.document.DocumentReader;
import org.springframework.ai.rag.retrieval.search.DocumentRetriever;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
/**
* 百炼RAG知识库控制器
* 展示如何调用阿里云百炼知识库服务
*/
@RestController
public class BailianRagController
{
@Resource
private ChatClient chatClient;
@Resource
private DashScopeApi dashScopeApi;
@GetMapping("/bailian/rag/chat")
public Flux<String> chat(@RequestParam(name = "msg", defaultValue = "00000错误信息") String msg)
{
DocumentRetriever retriever = new DashScopeDocumentRetriever(dashScopeApi,
DashScopeDocumentRetrieverOptions.builder()
.withIndexName("ops")
.build()
);
return chatClient.prompt()
.user(msg)
.advisors(new DocumentRetrievalAdvisor(retriever))
.stream()
.content();
}
}
控制器里的执行顺序可以概括为:
- 用
DashScopeDocumentRetriever指定知识库(ops)。 - 用
DocumentRetrievalAdvisor把检索能力接入对话链路。 ChatClient在生成回答前先检索,再把检索结果注入模型上下文。
四、知识库创建(阿里云平台)
4.1 创建流程
要在阿里云百炼平台使用RAG,需要:
- 登录阿里云百炼控制台
- 创建知识库
- 选择文档类型(PDF、Word、TXT等)
- 上传文档
- 等待向量化完成
- 获取 API Key 和知识库名称
- 在代码中配置使用
4.2 支持的文档格式
格式
说明
文档型
Word (.docx)
文档型
TXT
文本型
HTML
网页型
Markdown
文本型
五、本章小结
5.1 核心概念
概念
说明
DashScopeDocumentRetriever
阿里云知识库文档检索器
DashScopeDocumentRetrieverOptions
检索器配置选项
DocumentRetrievalAdvisor
文档检索增强组件
知识库名称
百炼平台创建的知识库标识
5.2 使用流程
1. 在阿里云百炼平台创建知识库、上传文档
2. 在application.yml配置API Key
3. 创建DashScopeDocumentRetriever并指定知识库名称
4. 注册DocumentRetrievalAdvisor
5. ChatClient自动完成检索+生成
5.3 自建RAG vs 百炼RAG对比
特性
自建RAG
百炼RAG
部署
Docker/K8S
阿里云托管
文档管理
需代码实现
平台可视化
索引优化
手动调参
自动优化
数据安全
自行保证
企业级保障
适用场景
定制化强
快速上手
💡 TIP:什么时候选百炼知识库路线?
如果你的目标是快速搭建知识库问答,而不想自己维护向量库、切分流程和索引细节,那么百炼知识库路线会更省事。
1. 运维成本
- 自建RAG需要:向量数据库维护+分词/向量化服务+索引优化+7x24监控
- 百炼RAG:开箱即用,零运维
2. 检索链路更省心
- 自建RAG效果依赖算法调优,需要专业知识
- 百炼知识库:平台已经把文档管理、索引和检索流程集成好了
3. 安全合规
- 企业敏感数据如何存储?自建需要额外安全措施
- 百炼RAG:阿里云提供完善的数据安全合规认证
4. 扩展性
- 自建RAG:要根据业务增长扩容向量数据库
- 百炼RAG:按量付费,弹性伸缩
但如果你的业务有特殊需求(如完全私有化部署、特定分词规则),自建RAG仍然是更好的选择。
本章重点:
- 理解百炼RAG服务的优势
- 掌握DashScopeDocumentRetriever的用法
- 能够在代码中集成阿里云知识库
下章剧透(s18):
学会了阿里云百炼RAG后,最后一章我们将学习 Agent(智能体)——结合所有技术构建真正的AI应用!
📝 编辑者:Flittly
📅 更新时间:2026年4月
🔗 相关资源:阿里云百炼RAG文档