【RuoYi-SpringBoot3-Pro】:AI 能力再再扩展,打通 RAGFlow 知识库和 Dify 应用平台
一、打通 RAGFlow 知识库
RAGFlow 是一款专业的 RAG
引擎,提供数据集管理、文档处理、块管理和检索增强对话功能。
想了解更多的小伙伴可以看看【AI工具箱】RAGFlow:打造私有的专业知识库。
RuoYi-SpringBoot3-Pro[1]
通过实现 RESTful API 接口,打通 RAGFlow
访问,支持同步、异步和流式三种调用模式。适合需要精细化文档管理的企业级知识库场景。
1.1 客户端初始化
// 创建客户端
RAGFlow ragflow = new RAGFlow("http://localhost:9222", "your-api-key");
// 创建异步客户端
RAGFlowAsync asyncClient = new RAGFlowAsync(ragflow);
1.2 核心功能
数据集管理支持创建、查询、更新和删除操作。创建数据集时可指定嵌入模型、分块方法和权限设置。知识图谱构建和 RAPTOR 聚类功能可对文档进行智能处理。
// 创建数据集
ragflow.createDataset("test_dataset");
// 列出数据集
ragflow.listDatasets(1, 30, "create_time", true, null, null);
// 构建知识图谱
ragflow.constructKnowledgeGraph("dataset_id");
文档管理支持上传、解析、下载和删除文档。上传后需要调用解析接口将文档转换为可检索的文本块。文档解析是异步过程,可通过接口查询解析状态。
// 上传文档
ragflow.uploadDocuments(datasetId, List.of(file));
// 解析文档
ragflow.parseDocuments(datasetId, List.of("document_id"));
块管理允许对文档片段进行精细化控制。可手动添加块并设置关键词和相关问题,增强检索效果。支持按关键词搜索和元数据过滤。
// 添加块
ragflow.addChunk(datasetId, documentId, "这是块内容");
// 检索
ragflow.retrieveChunks("问题", List.of("dataset_id"));
对话功能通过创建聊天助手与用户交互。支持会话管理,可维护多轮对话上下文。响应可选择阻塞或流式输出。
// 创建聊天助手
ragflow.createChatAssistant("my_chat", List.of("dataset_id"), null, llm, null);
// 对话
ragflow.converseWithChatAssistant(chatId, "你好", false, sessionId);
1.3 流式响应
流式响应适合实时展示生成内容。有实时回调和结果收集两种使用方式。
// 简单监听器
StreamListener listener = RAGFlow.createSimpleListener(
content -> System.out.print(content),
() -> System.out.println("\n完成"),
error -> System.err.println("错误: " + error)
);
ragflow.converseWithChatAssistantStream("chat_id", "问题", null, listener);
// 收集完整结果
StreamResult result = ragflow.converseWithChatAssistantStreamCollect("chat_id", "问题", null);
1.4 异步调用
异步客户端返回
CompletableFuture,便于并行执行多个请求和链式调用。
// 异步创建数据集
asyncClient.createDataset("async_dataset").thenCompose(response -> {
return CompletableFuture.completedFuture(
response.getJSONObject("data").getStr("id"));
}).get();
// 并行执行
CompletableFuture.allOf(listFuture, healthFuture).join();
二、Dify 集成
Dify 是一款流行的 AI
应用开发平台,提供对话型应用、文本生成和工作流编排功能。
想了解更多的小伙伴可以查看往期的文章:
Github 上已经有成熟的集成方案,所以这里我们就不自己实现,直接使用 Dify Java Client[2]
2.1 客户端初始化
DifyConfig config = DifyConfig.builder()
.baseUrl("https://api.dify.ai/v1")
.apiKey("your-api-key")
.connectTimeout(5000)
.readTimeout(60000)
.build();
DifyClient client = DifyClientFactory.createClient(config);
2.2 核心功能
对话应用支持会话创建、消息发送和历史查询。消息反馈机制可收集用户评价用于优化。可获取建议问题引导用户深入对话。
// 发送消息
DifyChatClient chatClient = client.createChatClient();
ChatMessageResponse response = chatClient.chat(appId, "你好");
知识库管理支持创建知识库、文档上传和语义检索。文档分段规则可灵活配置,实现智能分块处理。
// 创建知识库
client.createDatasets("my_knowledge_base");
// 检索
RetrieveResult result = client.retrieve("问题", datasetId, 5, 0.7);
流式响应
chatClient.chatStream(appId, "问题", new ChunkListener() {
@Override
public void onChunk(String content) {
System.out.print(content);
}
});
RuoYi-SpringBoot3-Pro[1] 采用外挂的方式,将各种 AI 能力集于一身,感兴趣的小伙伴可以查看往期的 AI 集成功能:
- • 【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力
- • 【RuoYi-SpringBoot3-Pro】:AI 能力再扩展,一个方法打通 n8n 工作流
- • 【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
往期教程合集
引用链接
[1]
RuoYi-SpringBoot3-Pro:
https://github.com/undsky/RuoYi-SpringBoot3-Pro
[2] Dify Java
Client:
https://github.com/imfangs/dify-java-client