From 9d4cb2f0199166d728fff4bfe1f758ec88144102 Mon Sep 17 00:00:00 2001 From: ire <931903008@qq.com> Date: Sun, 29 Dec 2024 18:56:53 +0800 Subject: [PATCH] rag http service --- .../framework/common/util/http/HttpUtils.java | 17 ++++ .../llm/service/http/RagHttpService.java | 86 +++++++++++++++++++ .../llm/service/http/vo/RagEmbedReqVo.java | 18 ++++ .../llm/service/http/vo/RagQueryReqVo.java | 16 ++++ .../src/main/resources/application-local.yaml | 7 ++ 5 files changed, 144 insertions(+) create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagEmbedReqVo.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagQueryReqVo.java diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java index 7ecc8cd37..cdc454a6c 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java @@ -143,6 +143,15 @@ public class HttpUtils { } } + public static String postForm(String url, Map headers, Map form) { + try (HttpResponse response = HttpRequest.post(url) + .addHeaders(headers) + .form(form) + .execute()) { + return response.body(); + } + } + /** * HTTP get 请求,基于 {@link cn.hutool.http.HttpUtil} 实现 * @@ -160,4 +169,12 @@ public class HttpUtils { } } + public static String del(String url, Map headers) { + try (HttpResponse response = HttpRequest.delete(url) + .addHeaders(headers) + .execute()) { + return response.body(); + } + } + } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java new file mode 100644 index 000000000..9414a3a5d --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.llm.service.http; + + +import cn.iocoder.yudao.framework.common.util.http.HttpUtils; +import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties; +import cn.iocoder.yudao.module.llm.service.http.vo.RagEmbedReqVo; +import cn.iocoder.yudao.module.llm.service.http.vo.RagQueryReqVo; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Map; + +@Service +public class RagHttpService { + + @Resource + private LLMBackendProperties llmBackendProperties; + + /** + * RAG健康检查API + */ + public String ragHealth(Map headers){ + String ragHealth = llmBackendProperties.getRagHealth(); + String res = HttpUtils.get(ragHealth, headers); + return res; + } + + /** + * 上传并向量化 + */ + public String ragEmbed(Map headers, RagEmbedReqVo ragEmbedReqVo){ + String ragEmbed = llmBackendProperties.getRagEmbed(); + Map map = BeanUtils.beanToMap(ragEmbedReqVo); + String res = HttpUtils.postForm(ragEmbed, headers,map); + return res; + } + + /** + * 获取所有向量id + */ + public String ragIds(Map headers){ + String ragIds = llmBackendProperties.getRagIds(); + String res = HttpUtils.get(ragIds, headers); + return res; + } + + /** + * 根据id获取文档 + */ + public String ragDocuments(Map headers){ + String ragDocuments = llmBackendProperties.getRagDocuments(); + String res = HttpUtils.get(ragDocuments, headers); + return res; + } + + /** + * 根据id删除文档 + */ + public String ragDocumentsDel(Map headers){ + String ragDocumentsDel = llmBackendProperties.getRagDocumentsDel(); + String res = HttpUtils.del(ragDocumentsDel, headers); + return res; + } + + /** + * 根据file_id检索向量 + */ + public String ragQuery(Map headers, RagQueryReqVo ragQueryReqVo){ + String ragQuery = llmBackendProperties.getRagQuery(); + String res = HttpUtils.post(ragQuery, headers, JSON.toJSONString(ragQueryReqVo)); + return res; + } + + /** + * 支持多个文件id查询向量 + */ + public String ragQueryMultiple(Map headers){ + String ragQueryMultiple = llmBackendProperties.getRagQueryMultiple(); + String res = HttpUtils.get(ragQueryMultiple, headers); + return res; + } + + +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagEmbedReqVo.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagEmbedReqVo.java new file mode 100644 index 000000000..255881dc7 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagEmbedReqVo.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.Data; +import lombok.ToString; + +import java.io.File; + +/** + * 上传并向量化 请求参数 + */ +@Data +@ToString(callSuper = true) +public class RagEmbedReqVo { + + private String file_id; + + private File file; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagQueryReqVo.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagQueryReqVo.java new file mode 100644 index 000000000..22a9dd26f --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/RagQueryReqVo.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString(callSuper = true) +public class RagQueryReqVo { + + private String query; + + private String file_id; + + private Integer k; + +} diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index fedd6efff..20c3ffaa9 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -247,12 +247,19 @@ justauth: llm: backend: # RAG服务健康检查 + #RAG健康检查 GET rag_health: http://localhost:8123/health + #上传并向量化 POST rag_embed: http://localhost:8123/embed + #获取所有向量id GET rag_ids: http://localhost:8123/ids + #根据id获取文档 GET rag_documents: http://localhost:8123/documents + #根据id删除文档 DEL rag_documents_del: http://localhost:8123/documents + #根据file_id检索向量 POST rag_query: http://localhost:8123/query + #支持多个文件id查询向量 GET rag_query_multiple: http://localhost:8123/query_multiple # LLM train and service api