【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

引用链接

[1] RuoYi-SpringBoot3-Pro: https://github.com/undsky/RuoYi-SpringBoot3-Pro
[2] Dify Java Client: https://github.com/imfangs/dify-java-client