AI超级智能开发系列从入门到上天第十篇:SpringAI+云知识库服务

一:为什么选用云知识库

在上一篇文章中,我们文档读取、文档加载、向量数据库是在本地通过编程的方式实现的。其实还有另外一种模式,直接使用别人提供的云知识库服务来简化 RAG 的开发。但缺点是额外的费用、以及数据隐私问题。

很多 AI 大模型应用开发平台都提供了云知识库服务,这里我们还是选择阿里云百炼,因为 Spring AI Alibaba 可以和它轻松集成,简化 RAG 开发。

二:准备云数据库

首先我们可以利用云知识库完成文档读取、文档处理、文档加载、保存到向量数据库、知识库管理等操作。

1:准备数据

打了标签的元信息之后,可以基于标签检索知识。

2:测试自己的知识切分的怎么样?

面向AI知识库写文档,一开始写的时候,就需要考虑,怎么着能让他切得更好。

进行命中测试

阿里云百联这个平台还是要多试一试,你尝试的越多,你对这个平台就越熟悉。

拿着客户输入的问题,比方说100个问题,拿到知识库这里边进行尝试。所以,我们的知识库开发就是要不断的优化的。

如果对他大模型切片的内容不满意,可以自己手动进行编辑。

三:RAG开发

有了知识库后,就可以用程序对接。开发过程简单,可参考 Spring AI Alibaba 的官方文档学习。

Spring AI Alibaba 利用 Spring AI 提供的文档检索特性(DocumentRetriever),自定义了一套文档检索方法,使程序调用阿里灵积大模型 API 从云知识库中检索文档,而非从内存检索。

使用下列代码就可以创建一个文档检索器并发起查询:

复制代码
// 调用大模型的 API
var dashScopeApi = new DashScopeApi("DASHSCOPE_API_KEY");
// 创建文档检索器
DocumentRetriever retriever = new DashScopeDocumentRetriever(dashScopeApi,
        DashScopeDocumentRetrieverOptions.builder()
                .withIndexName("你的知识库名称")
                .build());
// 测试从云知识库中查询
List<Document> documentList = retriever.retrieve(new Query("谁是鱼皮"));

如何使用这个文档检索器,让 AI 从云知识库查询文档呢?

这就需要使用 Spring AI 提供的另一个 RAG Advisor ------ RetrievalAugmentationAdvisor 检索增强顾问,可以绑定文档检索器、查询转换器和查询增强器,更灵活地构造查询。

复制代码
Advisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
        .queryTransformers(RewriteQueryTransformer.builder()
                .chatClientBuilder(chatClientBuilder.build().mutate())
                .build())
        .documentRetriever(VectorStoreDocumentRetriever.builder()
                .similarityThreshold(0.50)
                .vectorStore(vectorStore)
                .build())
        .build();

String answer = chatClient.prompt()
        .advisors(retrievalAugmentationAdvisor)
        .user(question)
        .call()
        .content();

1:定义增强的RAG的Advisor

复制代码
@Configuration
@Slf4j
public class LoveAppRagCloudAdvisorConfig {

    @Value("${spring.ai.dashscope.api-key}")
    private String dashScopeApiKey;

    @Bean
    public Advisor loveAppRagCloudAdvisor() {
        DashScopeApi dashScopeApi = DashScopeApi.builder()
                .apiKey(dashScopeApiKey)
                .build();
        final String KNOWLEDGE_INDEX = "恋爱大师";
        DocumentRetriever dashScopeDocumentRetriever = new DashScopeDocumentRetriever(dashScopeApi,
                DashScopeDocumentRetrieverOptions.builder()
                        .withIndexName(KNOWLEDGE_INDEX)
                        .build());
        return RetrievalAugmentationAdvisor.builder()
                .documentRetriever(dashScopeDocumentRetriever)
                .build();
    }
}

2:查看测试效果

整体看来,基于云平台的这种检索效果会更好。

3:基本用法总结

复制代码
        ChatResponse 
           RetrievalAugmentationAdvisor
				DashScopeDocumentRetriever
					DashScopeApi
						/api/v1/services/rerank/text-rerank/text-rerank
		.call()
		.chatResponse();
相关推荐
dok121 分钟前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (11)kmalloc 动态内存分配和struct file中的私有数据
linux·驱动开发·算法
小黑技术栈3 分钟前
DevEco Code Plan+Build模式:审方案再执行的技术实践
人工智能
Thom5807 分钟前
【聚宽 JoinQuant】聚宽如何获取持仓和订单?get_orders()与get_open_orders()教程
人工智能·经验分享·量化交易·聚宽·量化编程
EasyDSS8 分钟前
景区客流遇冷?用EasyDSS企业融媒体平台直播/点播解锁「云上文旅」新玩法
人工智能·媒体·直播·点播·easydss
刘一说12 分钟前
AI科技热点日报 | 2026年08月04日
人工智能·科技
2601_9557596216 分钟前
企业 Claude API 用量峰值管理实战
数据库
INNOVIX稳石机器人19 分钟前
从“存得下”到“管得活”:稳石四向穿梭车如何重塑密集仓储新逻辑?
大数据·运维
如此这般英俊21 分钟前
手搓Claude Code-第十章 system_prompt
数据结构·人工智能·python·语言模型·自然语言处理·prompt
云端漫步198721 分钟前
HarmonyOS NEXT AI 智能生活助手:AI 日程规划
人工智能·华为·生活·harmonyos
孙启超27 分钟前
【AI应用开发】怎么降低 Agent 幻觉?有几种可行方案?
大数据·人工智能·llm·agent·rag·幻觉·ai应用开发