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

前面讲了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-集成百炼智能体

Spring AI 提供了丰富的知识库资源以及相应的使用指南,帮助开发者快速构建和集成 AI 应用。以下是关于 Spring AI 知识库资源的获取与使用指南的详细说明: ### 知识库资源的获取 1. **GitHub 项目地址**:开发者可以在 GitHub 上找到 Spring AI 的开源项目,了解其源代码、示例以及更新动态。项目地址为:[https://github.com/spring-projects-experimental/spring-ai](https://github.com/spring-projects-experimental/spring-ai) [^1]。 2. **官方文档**:Spring AI 提供了完整的参考文档,详细介绍了框架的功能、接口以及使用方法。文档地址为:[https://docs.spring.io/spring-ai/reference/](https://docs.spring.io/spring-ai/reference/) [^1]。 3. **RAG 知识库实战指南**:如果需要构建基于 RAG(检索增强生成)技术的知识问答系统,可以参考 Spring AI 的实战指南。该指南分析了 AI 知识问答需求及 RAG 技术的核心流程,并提供了 Spring AI 与本地知识库结合的具体实现步骤 [^2]。 ### 知识库资源的使用 1. **RAG 技术集成**:Spring AI 支持与 RAG 技术结合,使开发者能够基于私有知识库构建问答系统。通过 RAG 技术,系统可以检索知识库中的相关信息,并结合 AI 模型生成精准的回答 。 2. **Spring AI Alibaba 的支持**:对于需要对接国内 AI 服务提供商(如阿里云)的开发者,Spring AI Alibaba 提供了统一的接口和最佳实践支持。它整合了阿里巴巴集团在 RAG 技术方面的应用经验,使得开发者能够轻松构建复杂对话能力的应用程序 [^3]。 3. **通义千问 Qwen 的集成**:Spring AI Alibaba 支持与通义千问 Qwen 的集成。通义千问是国内领先的大模型,开发者可以利用其强大的自然语言处理能力,结合 Spring AI 构建智能客服、知识问答等应用 [^3]。 ### 实战应用 1. **构建 AI 知识问答应用**:通过 Spring AI 和 RAG 技术,开发者可以实现基于私有知识库的精准问答。具体步骤包括: - 准备本地知识库并将其加载到应用中。 - 使用 RAG 技术从知识库中检索相关信息。 - 结合 AI 模型生成回答。 2. **智能客服应用**:Spring AI Alibaba 提供了标准化的接口和强大的后端支持,开发者可以轻松构建基于私有知识库的智能客服系统。这种系统能够基于用户输入的问题,从知识库中检索相关信息,并生成自然语言的回答 [^3]。 3. **多 AI 服务提供商支持**:Spring AI 提供了统一的接口,使得开发者可以对接不同的 AI 服务提供商(如 OpenAI、阿里云等),从而灵活选择适合自身需求的 AI 模型和服务 [^3]。 ### 示例代码 以下是一个简单的代码示例,展示如何使用 Spring AI 进行基本的问答: ```java import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Map; @Service public class KnowledgeQaService { @Autowired private ChatClient chatClient; public String answerQuestion(String question) { String template = "根据以下知识库内容回答问题:{knowledge}\n问题:{question}"; PromptTemplate promptTemplate = new PromptTemplate(template); Prompt prompt = promptTemplate.create(Map.of("knowledge", "Spring AI 是一个简化 AI 应用开发的框架。", "question", question)); return chatClient.call(prompt).getResponse().getContent(); } } ``` 该代码展示了如何利用 Spring AI 的 `ChatClient` 和 `PromptTemplate` 构建一个简单的知识问答服务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linmoo1986

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值