您的位置:首页 > 汽车 > 新车 > 网站建设与制作流程_购物网站排名榜_seo建设招商_qq引流推广软件哪个好

网站建设与制作流程_购物网站排名榜_seo建设招商_qq引流推广软件哪个好

2025/4/19 5:05:19 来源:https://blog.csdn.net/m0_61891910/article/details/146172342  浏览:    关键词:网站建设与制作流程_购物网站排名榜_seo建设招商_qq引流推广软件哪个好
网站建设与制作流程_购物网站排名榜_seo建设招商_qq引流推广软件哪个好

dify的知识库一般般,但是ragflow的知识库很强大,今天教大家如何使用dify连接ragflow的知识库

 一.ragflow的准备工作

1.在ragflow建立一个知识库,拿到知识库的id,红框圈出来的地方就是这个知识库的id,后面要用到

2.拿到ragflow的api的key 

二.写代码,将ragflow的接口返回的内容按照dify的标准格式进行组装

 这里我使用的是Java代码,本地直接新建一个空的springboot项目,然后将以下代码复制粘贴,修改下参数即可

实体类(无需修改)

public class RetrievalSetting {@NotNullprivate int top_k;@NotNullprivate float score_threshold;// Getters and Setterspublic int getTop_k() {return top_k;}public void setTop_k(int top_k) {this.top_k = top_k;}public float getScore_threshold() {return score_threshold;}public void setScore_threshold(float score_threshold) {this.score_threshold = score_threshold;}
}
public class RetrievalRequest {@NotBlankprivate String knowledge_id;@NotBlankprivate String query;@NotNullprivate RetrievalSetting retrieval_setting;// Getters and Setterspublic String getKnowledge_id() {return knowledge_id;}public void setKnowledge_id(String knowledge_id) {this.knowledge_id = knowledge_id;}public String getQuery() {return query;}public void setQuery(String query) {this.query = query;}public RetrievalSetting getRetrieval_setting() {return retrieval_setting;}public void setRetrieval_setting(RetrievalSetting retrieval_setting) {this.retrieval_setting = retrieval_setting;}
}
@RestController
@RequestMapping("/")
public class RetrievalController {private static final String ORIGINAL_API_URL = "http://你的ragflowapi的主机和端口/api/v1/retrieval";@PostMapping("/retrieval")public ResponseEntity<Map<String, List<Map<String, Object>>>> retrieveChunks(@RequestBody RetrievalRequest requestData,@RequestHeader("Authorization") String authorization) {// 验证 Authorization 头if (!authorization.startsWith("Bearer ")) {return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);}String apiKey = authorization.split(" ")[1];// 构建请求体Map<String, Object> payload = new HashMap<>();payload.put("question", requestData.getQuery());payload.put("dataset_ids", Collections.singletonList(requestData.getKnowledge_id()));payload.put("top_k", requestData.getRetrieval_setting().getTop_k());payload.put("similarity_threshold", requestData.getRetrieval_setting().getScore_threshold());// 构建请求头HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.set("Authorization", "Bearer " + apiKey);HttpEntity<Map<String, Object>> entity = new HttpEntity<>(payload, headers);// 发送请求RestTemplate restTemplate = new RestTemplate();try {ResponseEntity<Map> response = restTemplate.exchange(ORIGINAL_API_URL,HttpMethod.POST,entity,Map.class);if (response.getStatusCode() != HttpStatus.OK) {return ResponseEntity.status(response.getStatusCode()).body(null);}// 处理响应数据Map<String, Object> originalData = response.getBody();Map<String, Object> data = (Map<String, Object>) originalData.get("data");List<Map<String, Object>> chunks = (List<Map<String, Object>>) data.get("chunks");List<Map<String, Object>> records = new ArrayList<>();if (chunks != null) {for (Map<String, Object> chunk : chunks) {Map<String, Object> record = new HashMap<>();record.put("content", chunk.get("content"));record.put("score", chunk.get("similarity"));record.put("title", chunk.getOrDefault("document_keyword", "Unknown Document"));Map<String, Object> metadata = new HashMap<>();metadata.put("document_id", chunk.get("document_id"));record.put("metadata", metadata);records.add(record);}}Map<String, List<Map<String, Object>>> result = new HashMap<>();result.put("records", records);return ResponseEntity.ok(result);} catch (HttpClientErrorException e) {return ResponseEntity.status(e.getStatusCode()).body(null);}}
}

在controller中修改主机和端口,能在这里找到:

完事可以用api工具测试一下这个接口通不通

 

 注意这里请求头要加一个Bearer 然后接上apikey,中间有个空格

三.dify连接ragflow的知识库

1.rag先连接

 

2.新建知识库 

 3.进行召回测试

这里是我运行的结果,完美

 至此结束,撒花

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com