Spring AI 系列之三十九 - Spring AI Alibaba-集成百炼知识库
之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说真是一个福音,其功能已经能满足基于大模型开发企业级应用。借着这次机会,给大家分享一下Spring AI框架。
注意:由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 Spring AI-1.0.0,JDK版本使用的是19,Spring-AI-Alibaba-1.0.0.3-SNAPSHOT。
代码参考: https://github.com/forever1986/springai-study
目录
- 1 百炼平台的知识库
- 1.1 构建知识库
- 1.2 代码演示
前面讲了Spring AI Alibaba如何基于Spring AI框架进行扩展,但是Spring AI Alibaba还有一个最大的优势,就是可以与阿里云上的百炼平台集成,这个是Spring AI Alibaba独特的优势。用户可以在百炼平台构建知识库、智能体、工作流应用以及智能体编排,然后在Spring AI Alibaba中调用创建好的内容。本章先演示一个知识库调用。
1 百炼平台的知识库
大模型缺乏私有知识,且通用知识更新滞后。业界通常采用检索增强生成(RAG)技术,根据用户输入从外部信息源检索相关信息,然后将检索到的内容整合到用户输入中,从而帮助大模型生成更准确的回答。知识库功能作为阿里云百炼的RAG能力,能有效补充私有知识并提供最新信息。
1.1 构建知识库
1)打开百炼平台的应用数据界面:https://bailian.console.aliyun.com/?utm_content=se_1021227512&tab=app#/data-center
2)上传你的数据,这里使用《庆余年.txt》小说上传
3)利用上传的数据构建知识库,打开知识库:https://bailian.console.aliyun.com/?utm_content=se_1021227512&tab=app#/knowledge-base
4)创建知识库,设置名称、embeded模型,以及应用数据(注意:这里的名称就是你代码中要使用的)
5)等待解析完成
1.2 代码演示
代码参考lesson30子模块下的baili-knowledge子模块
示例说明:通过代码调用百炼平台的知识库解答问题
1)新建lesson30子模块
2)在lesson30子模块下,新建baili-knowledge子模块,其pom引入如下:
<dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
3)新建配置文件
# 百炼模型的API KEY
spring.ai.dashscope.api-key=你的阿里百炼API KEY
4)新建BailianKnowledgeController 演示类
import com.alibaba.cloud.ai.advisor.DocumentRetrievalAdvisor;
import com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeConnectionProperties;
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetriever;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetrieverOptions;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.rag.retrieval.search.DocumentRetriever;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@EnableConfigurationProperties({DashScopeConnectionProperties.class})
public class BailianKnowledgeController {private static final String indexName = "庆余年小说";private final ChatClient chatClient;public BailianKnowledgeController(ChatClient.Builder builder, DashScopeConnectionProperties properties) {DocumentRetriever retriever = new DashScopeDocumentRetriever(DashScopeApi.builder().apiKey(properties.getApiKey()).build(),DashScopeDocumentRetrieverOptions.builder().withIndexName(indexName).build());chatClient = builder.defaultAdvisors(new DocumentRetrievalAdvisor(retriever)).build();}@GetMapping("/bailian/knowledge/call")public String call(@RequestParam(value = "message",defaultValue = "你是谁?") String message) {return chatClient.prompt().user(message).call().content();}}
5)新建启动类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Lesson30KnowledgeApplication {public static void main(String[] args) {SpringApplication.run(Lesson30KnowledgeApplication.class, args);}}
6)演示效果
http://localhost:8080/bailian/knowledge/call?message=监察院是做什么的
结语:本章演示了如何使用Spring AI Alibaba集成百炼平台的知识库,这样对于实际应用开发来说是非常迅速的,这就是Spring AI Alibaba框架的优势之一。下一章将讲如何集成百炼平台的线上智能体。
Spring AI系列上一章:《Spring AI 系列之三十八 - Spring AI Alibaba-Tool Calling》
Spring AI系列下一章:《Spring AI 系列之四十 - Spring AI Alibaba-集成百炼智能体》