作者 dong

修复bug,更正需求

1 package org.jeecg.modules.airag.app.controller; 1 package org.jeecg.modules.airag.app.controller;
2 2
  3 +import cn.hutool.core.lang.generator.SnowflakeGenerator;
3 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5 +import com.fasterxml.jackson.core.JsonProcessingException;
  6 +import com.fasterxml.jackson.databind.ObjectMapper;
4 import dev.langchain4j.internal.Json; 7 import dev.langchain4j.internal.Json;
5 import io.swagger.v3.oas.annotations.Operation; 8 import io.swagger.v3.oas.annotations.Operation;
6 import lombok.extern.slf4j.Slf4j; 9 import lombok.extern.slf4j.Slf4j;
@@ -20,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -20,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
20 23
21 import java.util.Arrays; 24 import java.util.Arrays;
22 import java.util.HashMap; 25 import java.util.HashMap;
  26 +import java.util.LinkedHashMap;
23 import java.util.Map; 27 import java.util.Map;
24 import java.util.stream.Collectors; 28 import java.util.stream.Collectors;
25 29
@@ -63,7 +67,7 @@ public class QuestionEmbeddingController { @@ -63,7 +67,7 @@ public class QuestionEmbeddingController {
63 } 67 }
64 68
65 @PostMapping("/add") 69 @PostMapping("/add")
66 - public Result<String> insert(@RequestBody QuestionEmbedding record) { 70 + public Result<String> insert(@RequestBody QuestionEmbedding record) throws JsonProcessingException {
67 Map<String, String> airagKnowledgeMap = airagKnowledgeService.list() 71 Map<String, String> airagKnowledgeMap = airagKnowledgeService.list()
68 .stream() 72 .stream()
69 .collect(Collectors.toMap(AiragKnowledge::getId, AiragKnowledge::getName)); 73 .collect(Collectors.toMap(AiragKnowledge::getId, AiragKnowledge::getName));
@@ -75,6 +79,18 @@ public class QuestionEmbeddingController { @@ -75,6 +79,18 @@ public class QuestionEmbeddingController {
75 record.setKnowledgeName(knowledgeName); 79 record.setKnowledgeName(knowledgeName);
76 } 80 }
77 81
  82 + //1.创建matadata数据
  83 + Map<String, Object> metadata = new LinkedHashMap<>();
  84 + SnowflakeGenerator snowflakeGenerator = new SnowflakeGenerator();
  85 + metadata.put("docName", "");
  86 + String docId = String.valueOf(snowflakeGenerator.next());
  87 + metadata.put("docId", docId); // 自动生成唯一文档ID
  88 + metadata.put("knowledgeId", record.getKnowledgeId());
  89 + // 使用 Jackson 序列化 Map 到 JSON
  90 + ObjectMapper mapper = new ObjectMapper();
  91 + String metadataJson = mapper.writeValueAsString(metadata);
  92 + // 2. 设置到embeddings对象
  93 + record.setMetadata(metadataJson);
78 94
79 int result = questionEmbeddingService.insert(record); 95 int result = questionEmbeddingService.insert(record);
80 return result > 0 ? Result.OK("添加成功!") : Result.error("添加失败"); 96 return result > 0 ? Result.OK("添加成功!") : Result.error("添加失败");
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 import com.baomidou.mybatisplus.extension.service.IService; 6 import com.baomidou.mybatisplus.extension.service.IService;
  7 +import com.fasterxml.jackson.core.JsonProcessingException;
7 import org.apache.poi.ss.formula.functions.T; 8 import org.apache.poi.ss.formula.functions.T;
8 import org.jeecg.modules.airag.app.entity.AiragLog; 9 import org.jeecg.modules.airag.app.entity.AiragLog;
9 10
@@ -17,7 +18,7 @@ import java.util.List; @@ -17,7 +18,7 @@ import java.util.List;
17 */ 18 */
18 public interface IAiragLogService extends IService<AiragLog> { 19 public interface IAiragLogService extends IService<AiragLog> {
19 // List<AiragLog> getLogListWithModelName(); 20 // List<AiragLog> getLogListWithModelName();
20 - void saveToQuestionLibrary(AiragLog log); 21 + void saveToQuestionLibrary(AiragLog log) throws JsonProcessingException;
21 22
22 IPage<AiragLog> list1(AiragLog airagLog,Page<AiragLog> page); 23 IPage<AiragLog> list1(AiragLog airagLog,Page<AiragLog> page);
23 24
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8 +import com.fasterxml.jackson.core.JsonProcessingException;
8 import com.fasterxml.jackson.databind.ObjectMapper; 9 import com.fasterxml.jackson.databind.ObjectMapper;
9 import com.fasterxml.jackson.databind.util.ObjectBuffer; 10 import com.fasterxml.jackson.databind.util.ObjectBuffer;
10 import io.minio.messages.Metadata; 11 import io.minio.messages.Metadata;
@@ -50,13 +51,24 @@ public class AiragLogServiceImpl extends ServiceImpl<AiragLogMapper, AiragLog> i @@ -50,13 +51,24 @@ public class AiragLogServiceImpl extends ServiceImpl<AiragLogMapper, AiragLog> i
50 // } 51 // }
51 52
52 @Override 53 @Override
53 - public void saveToQuestionLibrary(AiragLog log) { 54 + public void saveToQuestionLibrary(AiragLog log) throws JsonProcessingException {
54 // 这里实现将问题和回答存入问题库数据表的逻辑 55 // 这里实现将问题和回答存入问题库数据表的逻辑
55 // 假设问题库数据表的实体类为 QuestionLibrary,Mapper 接口为 QuestionLibraryMapper 56 // 假设问题库数据表的实体类为 QuestionLibrary,Mapper 接口为 QuestionLibraryMapper
56 QuestionEmbedding questionEmbedding = new QuestionEmbedding(); 57 QuestionEmbedding questionEmbedding = new QuestionEmbedding();
57 questionEmbedding.setQuestion(log.getQuestion()); 58 questionEmbedding.setQuestion(log.getQuestion());
58 questionEmbedding.setAnswer(log.getAnswer()); 59 questionEmbedding.setAnswer(log.getAnswer());
59 questionEmbedding.setKnowledgeId(log.getKnowledgeId()); 60 questionEmbedding.setKnowledgeId(log.getKnowledgeId());
  61 + Map<String, Object> metadata = new LinkedHashMap<>();
  62 + SnowflakeGenerator snowflakeGenerator = new SnowflakeGenerator();
  63 + metadata.put("docName", "");
  64 + String docId = String.valueOf(snowflakeGenerator.next());
  65 + metadata.put("docId", docId); // 自动生成唯一文档ID
  66 + metadata.put("knowledgeId", questionEmbedding.getKnowledgeId());
  67 + // 使用 Jackson 序列化 Map 到 JSON
  68 + ObjectMapper mapper = new ObjectMapper();
  69 + String metadataJson = mapper.writeValueAsString(metadata);
  70 + // 2. 设置到embeddings对象
  71 + questionEmbedding.setMetadata(metadataJson);
60 questionEmbeddingMapper.insert(questionEmbedding); 72 questionEmbeddingMapper.insert(questionEmbedding);
61 airagLogMapper.updataIsStorage(log.getIsStorage(),log.getId()); 73 airagLogMapper.updataIsStorage(log.getIsStorage(),log.getId());
62 74