From 673e2d968cb5cd3edf34331ae7ff517b719ae612 Mon Sep 17 00:00:00 2001 From: khyaejin Date: Wed, 28 May 2025 17:57:56 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20[Mock=20data]=20=ED=94=84?= =?UTF-8?q?=EB=A1=A0=ED=8A=B8=20=ED=86=B5=EC=8B=A0=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20GraphRAG=20retrievedTriples=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chatbot/dto/CreateChatbotResponseDto.java | 10 ++++++---- .../chatbot/service/ChatbotServiceImpl.java | 3 +++ .../domain/rag/service/GraphRAGService.java | 17 ++++++++++++++++- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/going/server/domain/chatbot/dto/CreateChatbotResponseDto.java b/src/main/java/com/going/server/domain/chatbot/dto/CreateChatbotResponseDto.java index 9e43ebe..0ec162f 100644 --- a/src/main/java/com/going/server/domain/chatbot/dto/CreateChatbotResponseDto.java +++ b/src/main/java/com/going/server/domain/chatbot/dto/CreateChatbotResponseDto.java @@ -15,9 +15,11 @@ public class CreateChatbotResponseDto { private String graphId; @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm") private LocalDateTime createdAt; - private List retrievedChunks; - private List sourceNodes; - private Map ragMeta; + private List retrievedTriples; //관계 중심의 3요소 표현 ("물 -상태변화→ 응고") + private List sourceNodes; //질의에 사용된 핵심 노드들 ("물", "응고" 등) + private List 증강할때쓴자료; //LLM에 넘긴 context 문장들 (이름은 `augmentedSentences` 등으로 변경 권장) + + private Map ragMeta; //(ex: 사용한 쿼리문 등) public static CreateChatbotResponseDto of( String chatContent, @@ -30,7 +32,7 @@ public static CreateChatbotResponseDto of( .chatContent(chatContent) .graphId(graphId) .createdAt(createdAt) - .retrievedChunks(retrievedChunks) + .retrievedTriples(retrievedChunks) .sourceNodes(sourceNodes) .ragMeta(Map.of("chunkCount", String.valueOf(retrievedChunks.size()))) .build(); diff --git a/src/main/java/com/going/server/domain/chatbot/service/ChatbotServiceImpl.java b/src/main/java/com/going/server/domain/chatbot/service/ChatbotServiceImpl.java index dc91172..4ca7221 100644 --- a/src/main/java/com/going/server/domain/chatbot/service/ChatbotServiceImpl.java +++ b/src/main/java/com/going/server/domain/chatbot/service/ChatbotServiceImpl.java @@ -77,10 +77,12 @@ public CreateChatbotResponseDto createAnswerWithRAG(String graphStrId, CreateCha Long dbId = graphRepository.findDbIdByGraphId(Long.valueOf(graphStrId)); Graph graph = graphRepository.getByGraph(dbId); + // 새로운 채팅인 경우 if (requestDto.isNewChat()) { deletePreviousChat(dbId); } + // 새로운 질문 추가 Chatting userChat = Chatting.builder() .graph(graph) .content(requestDto.getChatContent()) @@ -89,6 +91,7 @@ public CreateChatbotResponseDto createAnswerWithRAG(String graphStrId, CreateCha .build(); chattingRepository.save(userChat); + // 채팅 내역 조회 List chatHistory = chattingRepository.findAllByGraphId(dbId); // RAG 응답 생성 (응답 + 메타 포함) diff --git a/src/main/java/com/going/server/domain/rag/service/GraphRAGService.java b/src/main/java/com/going/server/domain/rag/service/GraphRAGService.java index 61c685a..4537065 100644 --- a/src/main/java/com/going/server/domain/rag/service/GraphRAGService.java +++ b/src/main/java/com/going/server/domain/rag/service/GraphRAGService.java @@ -31,6 +31,12 @@ public class GraphRAGService { /** * 사용자 질문에 대해 Cypher 쿼리 → 그래프 정보 검색 → 프롬프트 생성 → LLM 응답 생성 * 본 메서드는 LangChain 없이 구현한 Spring 기반 GraphRAG의 핵심 흐름입니다. + * + * private LocalDateTime createdAt; + * private List retrievedTriples; //관계 중심의 3요소 표현 ("물 -상태변화→ 응고") + * private List sourceNodes; //질의에 사용된 핵심 노드들 ("물", "응고" 등) + * private List 증강할때쓴자료; //LLM에 넘긴 context 문장들 (이름은 `augmentedSentences` 등으로 변경 권장) + * -> 이렇게 결과 나오도록 정리 */ public CreateChatbotResponseDto createAnswerWithGraphRAG( Long dbId, @@ -74,11 +80,20 @@ public CreateChatbotResponseDto createAnswerWithGraphRAG( chattingRepository.save(answer); log.info("[GraphRAG] Response saved to DB"); + // 임시 retrievedTriples 설정 + List retrievedTriples = List.of( + "(물)-[:RELATED {label: '상태변화'}]->(기화)", + "(기화)-[:RELATED {label: '조건'}]->(높은 온도)", + "(수증기)-[:RELATED {label: '응결'}]->(물방울)", + "(물)-[:RELATED {label: '응고'}]->(얼음)", + "(응고)-[:RELATED {label: '예시'}]->(겨울철 얼어붙은 길)" + ); + return CreateChatbotResponseDto.of( response, dbId.toString(), answer.getCreatedAt(), - contextChunks, + retrievedTriples, sourceNodes ); }