논문 리뷰: Development of Chatbot using Knowledge Graph and AI Agent

zoo_gathers·2025년 7월 28일

논문 정리

목록 보기
6/13

해당 논문은 다음과 같은 출처를 갖습니다.

출처 : DBpia: Development of Chatbot using Knowledge Graph and AI Agent


1. 논문 목적:

본 논문은 LLM, knowledge graph, Retrieval Augmented Generation(RAG)AI Agent를 사용하는 Q&A 챗봇을 개발한다.

이를 위해서 C 대학교의 학술 정보 데이터를 사용하여 지식 그래프 데이터베이스를 구축했다.
지식 그래프를 구축한 후 LLM을 사용하여 Cypher 쿼리를 생성하고 이를 통해 지식 그래프에서 원하는 정보를 검색하고 LLM을 사용하여 답변을 추론한다.

  • 지식 그래프를 구축
  • LLM을 사용하여 사이퍼 쿼리문을 생성
  • 지식 그래프에서 원하는 정보를 검색
  • LLM을 사용하여 답변을 추론

AI 에이전트함수 호출 및 도구를 정의하여 구축되었으며, 동적 쿼리 생성 및 전체 텍스트 인덱스를 통해 이전 방법으로는 검색하기 어려웠던 질문에 대해 안정적인 답변을 제공할 수 있도록 구현되었다.

본 논문에서 사용된 Neo4j는 Apache Lucene의 전체 텍스트 검색 기능을 사용한다.
AI 에이전트는 사용자 질문에서 추출한 적절한 인수를 사용하여 어떤 함수를 사용해야 하는지 결정하고 다양한 처리를 수행하는 실행자 역할을 한다.

이를 통해 시뮬레이션 결과 개발된 Q&A 챗봇이 사용자 질문에 대해 올바른 답변을 생성하는 것으로 나타남.

논문 키워드: Knowledge Graph, AI Agent, RAG, Chatbot, LLM


2. 서론:

LLM의 주요 문제 중 하나는 "지식 컷오프(knowledge cutoff)"이다.
예를 들어, 웹 기반 챗봇 버전의 ChatGPT에게 아직 훈련 데이터 세트에 존재하지 않는 사건에 대해 질문을 하거나, 지식 컷오프 날짜 이후에 대해서 LLM은 공개적으로 사용 가능한 데이터에 대한 정보를 가지고 있지 않다.

컷오프 날짜 이전에도 사용 가능했을 수 있는 개인 정보 또는 기밀 정보에 액세스도 할 수 없다.
즉 일반 데이터로 훈련된 LLM은 특정 회사의 기밀 정보에 액세스 하는 것이 불가능하다는 것이다.

이러한 경우, 사용자 정의 LLM을 사용하여 직접 Q&A 시스템을 개발하도록 해야 한다.

지식 컷오프

"지식 컷오프(knowledge cutoff)"는 AI가 학습한 데이터의 최신 시점을 의미하는 기준 날짜를 말한다.

즉, AI가 그 날짜까지의 정보만 알고 있고, 그 이후에 발생한 사건이나 변경된 사실은 알지 못한다는 의미이다.

LLM의 발전과 영향을 고려할 때, 답변을 검증하거나 더 정확한 결과를 생성하는 것은 가장 중요한 과제이다.

이 문제를 해결하기 위한 주요 접근 방식은 다음과 같다.

  • 검색 증강 생성(Retrieval-Augmented Generation, RAG)
  • 파인튜닝(finetuning)

현재는 이러한 문제를 해결하기 위해서 LLM을 특정 도메인에 대해 학습을 시키는 파인튜닝과 추가적인 관련 문서 또는 정보를 검색함으로써 문제를 해결하는 RAG 방법을 활용합니다.

이러한 방법을 통해 일반적으로 훈련된 LLM의 내부 지식에만 의존하여 답변을 생성하는 대신, LLM은 데이터베이스에 대한 자연어 쿼리를 구성하거나 도메인 특정 문서에서 관련 정보를 추출하고 요약하는 데 사용된다.

Langchain과 LlamaIndex는 이러한 검색 증강 생성 시스템과 같은 LLM 기반 애플리케이션을 구축하는 데 자주 사용되는 프레임워크이다.


RAG를 사용하여 LLM 성능을 향상시키는 것은 파인튜닝에 비해 여러 가지 장점이 있지만, 복잡한 사용자 쿼리를 처리하거나 다양한 작업을 수행할 때는 여전히 제한 사항이 있다.

이러한 제한 사항을 극복하기 위해 function calling과 AI 에이전트 사용에 대한 관심이 점점 높아지고 있다.

여기서 AI 에이전트는 사용자를 대신하여 자율적인 결정을 내리거나 작업을 수행할 수 있는 프로그램이라고 생각하면 된다.

AI 에이전트는 환경을 인식하고, 데이터를 해석하고 해당 데이터를 기반으로 결정을 내린 다음, 조치를 취하게 된다.

LLM이 사용자 쿼리에 응답하는 방식을 개전하기 위해 RAG는 비정형 데이터와 정형 데이터를 모두 처리할 수 있으며, 정형 데이터는 일반적인 DB, 비정형 데이터는 PDF 파일과 같은 것이 포함된다.

하지만 비정형 데이터를 활용하게 되는 경우 여러 가지 성능 문제가 발생할 수 있게 되며, 결국 대부분은 지식 그래프와 같은 정형 데이터를 사용하여 Q&A 시스템을 구축하는 사례가 많아지고 있다.


지식 그래프를 통한 Q&A 챗봇 생성

지식 그래프를 사용하여 RAG 시스템을 구축할 때 쿼리는 여전히 LLM을 통해 생성되지만, 이 접근 방식은 계속 발전하고 있으며 아직 완전히 일관되고 강력한 해결책을 제공하지 못하고 있다.

이를 해결하기 위해 최근 노력으로 동적 쿼리 생성 기술이 연구되고 있다.

본 논문에서는 LLM, RAG, AI 에이전트 및 지식 그래프를 활용하여 Q&A 챗봇을 개발하고자 한다.

사용자 질문을 지식 그래프에 대한 검색어로 생성하기 위해 LLM을 사용하는 기존 방법을 동적 쿼리 생성 및 전체 텍스트 인덱싱을 추가하여 개선하도록 한다.

이러한 개선을 통해 표준 검색 방법을 사용하여 처리하기 어려웠떤 질문에 대해 보다 안정적으로 답변하는 것이 가능해진다.

이를 위해 function calling을 사용하여 AI 에이전트를 구축하고, 지식 그래프도 구축한 뒤 LangChain을 사용하여 환각(hallucinations) 없이 복잡한 쿼리에 대해 신뢰할 수 있는 답변을 제공할 수 있는 LLM 기반 챗봇을 개발한다.


RAG

RAG에 대해서 조금 더 설명을 하자면, RAG는 언어 모델이 외부 데이터베이스에서 사용자 질문에 답변하는 데 필요한 정보를 검색하여 보다 정확하고 관련성 높은 응답을 제공할 수 있도록 한다.

RAG의 과정은 크게 3가지로 분류할 수 있다.

  • 쿼리 개선
  • 정보 검색
  • 답변 생성

먼저 쿼리 개선 과정에서는 검색 정확도를 높이거나 쿼리에 검색 단계가 필요한지 여부를 결정하기 위해 사용자 질문을 처리하는 것을 포함한다.

정보 검색은 필요한 정보를 얻기 위해 외부 데이터 소스에서 관련 문서를 검색하는 것을 포함한다.

답변 생성은 검색된 정보를 사용하여 LLM을 통해 정보에 입각한 응답을 생성하며, 종종 인용문을 포함한다.

이러한 단계에서는 다음과 같은 여러 하위 작업이 수행될 수 있다.

  • Re-ranking: 관련성을 기반으로 검색된 문서의 순서를 최적화
  • Re-packing: 검색된 문서를 구조화된 형식으로 구성
  • Summarization: 검색된 텍스트에서 핵심 정보를 추출하여 간결한 응답을 생성하고 중복성을 제거

지식 그래프

"Knowledge graph"라는 용어에 대해 익숙하지 않은 사람들이 있을 것이기 때문에 이에 대해서도 정리해보자.

"Knowledge graph" 즉 지식 그래프는 질의 응답 시스템, 추천 시스템 및 시맨틱 웹 구축을 포함한 다양한 애플리케이션에 사용된다.

지식 그래프는 그래프 노드에 해당하는 엔터티와 엣지에 해당하는 관계로 구성된 다중 관계 그래프이며, 정보는 이러한 정점과 엣지를 통해 표현된다.

이미지 출처: 지식 그래프 이미지

지식 그래프의 엣지는 (h, r, t) 형식의 트리플로 표현될 수 있으며, 여기서 h, r, t는 각각 주체 엔터티, 관계, 객체 엔터티를 나타낸다.

이는 주체 h와 객체 t 사이에 r이라는 관계가 있음을 나타내고 예를 들어
(Student A, enrolled_in, Course B)로 표현된 것은 Student A가 Course B라는 강좌에 등록되었다는 것을 의미한다.

이렇게 지식 그래프의 등장과 함께 Knowledge Graph Question Answering (KGQA)을 위한 다양한 모델들이 연구되어 왔다.

이러한 지식 그래프 기반 Q&A 모델들은 단일 홉 쿼리부터 다중 홉 추론에 이르기까지 다양한 유형의 질문에 대해 지식 그래프에서 올바른 답변을 추출하는데, 단순히 정답을 도출하는 것을 넘어, 답변이 어떻게 추론되었는지에 대한 명확한 설명을 제공하여 답변 도출의 근거를 검증할 수 있도록 하는 것이 중요하다.

이러한 지식 그래프를 사용하여 그래프 DB를 구축할 때, 현재 벡터 검색 기반 접근 방식(RAG)에 비해 여러 가지 장점이 존재한다.

따라서 최근 지식 그래프와 LLM이 상호 보완적일 수 있기 때문에 LLM과 KG를 통합할 가능성을 탐구하는 연구가 증가하고 있는 추세이다.

LLM과 KG의 장점을 결합하여 지식을 표현하고 추론하는 연구는 다음과 같다.

  • KG-enhanced LLMs

LLM을 더 똑똑하게 만들기 위해 KG를 활용하는 방법

해당 방법은 LLM이 글은 잘 작성하지만, 가끔 사실을 틀리거나 헷갈리는 정보를 말하는 경우 이를 해결하기 위해서 정확하고 구조화된 지식(KG)을 불러와서 LLM이 더 믿을 만한 답변을 하게 도와주는 방법이다.

  • LLM-augmented KGs

KG를 더 잘 만들기 위해 LLM을 활용하는 방법

이 방법을 활용하는 이유는 KG를 사람이 하나하나 만드는 것은 시간도 오래 걸리고 어렵다.
하지만 LLM은 수많은 문서나 글을 읽고 정보를 뽑아낼 수 있기 때문에 이를 활용하여 KG를 자동으로 만드는 것이다.

  • Synergized LLMs+KGs

LLM과 KG를 같이 써서 서로의 약점을 보완하는 방법

LLM은 유연하고 창의적이지만 가끔 정보를 틀린다, KG는 정확하지만 융통성이 없다. 이 부분을 융합하여 정확하면서도 유연한 AI를 만드는 것이다.

본 연구는 이러한 범주 중에서 처음 2가지와 관련있다고 할 수 있다.


3. AI Agent

그럼 이제 해당 논문에서 에이전트가 어떤 방식으로 활용되는지 알아보기 전에 에이전트에 대해서 알고 넘어가자.

AI Agent 또는 autonomous AI agnet는 사용자의 명령을 받으면 스스로 문제를 분석하고, 더 작고 관리하기 쉬운 작업으로 분해하고, 외부 도구를 활용하여 처리하고, 결과를 반복적으로 검토하고, 사용자의 페스로나와 메모리에 저장된 정보를 활용하여 최종 답변을 생성할 수 있는 기술이다.

간단히 에이전트의 핵심 특징은 질의응답 시스템을 넘어서 사용자가 요청한 작업을 완료하기 위해 다양한 도구와 자율적으로 일련의 상호 작용을 수행한다는 점이다.

위 그림은 에이전트 구조와 구성 요소를 보여준다.
구성 요소에는 메모리, 계획, 액션 및 도구가 포함된다.

기존 RAG 시스템과 AI 에이전트는 LLM을 향상시키는 서로 다른 접근 방식을 나타낸다.

RAG는 LLM을 외부 지식으로 보강하는 데 중점을 두는 반면, 에이전트는 LLM이 작업과 도구를 통해 실제 세계와 상호 작용할 수 있도록 한다.

RAG 시스템은 LLM의 제한 사항(예: 오래된 정보 또는 도메인 전문 지식 부족)을 해결하기 위해 정보 검색 구성 요소를 통합한다.

반면에 AI 에이전트는 LLM이 도구 및 환경과 상호 작용할 수 있도록 추론과 액션의 결합을 강조한다.

따라서 RAG와 AI 에이전트 간의 선택은 특정 애플리케이션과 원하는 기능에 따라 달라질 수 있다.


해당 내용에서 따로 지식 그래프를 구축하는 방법에 대해서는 정리하지 않겠다.


전통적으로 구축된 지식 그래프에서 정보를 검색하고 답변을 추론하기 위해서는 LLM이 KG에 대한 사이퍼 쿼리를 생성하는 방식이 사용되어 왔다.

그러나 쿼리 생성이 LLM에만 전적으로 의존하는 경우, 에이전트는 일관성 없이 생성되는 쿼리로 인해 원하는 정보를 일관되게 얻지 못할 수 있다.

따라서 동적 쿼리 생성이 채택되었으며, 이는 논리적 계층을 사용하여 의도된 목적에 따라 지식 개르패 쿼리가 생성되는 방식을 분류하고 결정한다.

이 방법은 function calling을 지원하는 LLM으로 구현할 수 있다.

Function calling을 사용하면 LLM이 함수에 대한 구조화된 입력을 준비하는 방법을 정의할 수 있다는 장점이 있다.

이 접근 방식은 사용자 입력의 유연성을 허용하면서 쿼리 생성 프로세스가 제어되고 일관성을 유지하도록 보장한다.


위 내용을 정리하면 다음과 같다.

전통적으로 LLM에게 쿼리 생성을 맡기게 된다면 LLM은 복잡한 질문에서는 쿼리 형식이 불안정하거나 누락되는 경우가 발생함, 특히 데이터 스키마를 잘못 이해할 수 있음

이를 해결하기 위해서 동적 쿼리 생성 + 논리적 계층화를 사용할 것임

기존 LLM이 쿼리문을 생성하게 되면 발생하는 문제점은 다음과 같다.

문제점

LLM이 Cypher 쿼리를 만들 때 약간의 표현 차이(예: 띄어쓰기, 철자)만 있어도 원하는 정보를 찾지 못하는 경우가 생김

예:
실제 학과명: "컴퓨터공학과"
사용자가 질문: "컴퓨터 공학과"

→ 정확히 일치하지 않으면 쿼리 결과가 없거나 잘못됨

왜 이런 일이 생기냐면?
Cypher 쿼리는 문자열이 정확히 맞아야 하는 경우가 많아서 띄어쓰기 하나 차이도 문제가 됨.

핵심 문제

  • LLM이 생성한 쿼리는 "정확한 키워드 일치"를 가정
  • 그러나 사용자 질문은 모호하거나 불완전할 수 있음
  • 이로 인해 철자/띄어쓰기 작은 오차 -> 쿼리 실패 -> 답변 실패로 이어짐

4. 논문이 제안한 해결책: "Dynamic Query Generation + Full-text Index"

논문에서는 위 문제를 해결하기 위해서 다음과 같은 해결책을 제안했다.

"Dynamic Query Generation + Full-text Index"

위 내용은 다음과 같다.

핵심 아이디어

1) 함수 호출(Function Calling) 기반 동적 쿼리 생성

  • LLM은 직접 Cypher 쿼리를 만들지 않고,
  • 사용자 질문을 해석해 get_department_info(name) 같은 함수에 적절한 파라미터만 추출.
  • 이 함수 내부에서 쿼리를 정형적으로 생성함.
  • → 쿼리 생성 방식이 LLM의 언어적 창의성에 의존하지 않음 → 일관성 확보.

2) Apache Lucene 기반 Full-text Index 사용

  • Neo4j에 전문 검색(full-text search) 인덱스를 생성.
  • 속성값에 띄어쓰기나 철자가 다소 달라도, 유사한 텍스트를 찾아냄.
  • 예: "컴퓨터 공학과" → "컴퓨터공학과"로 인식 가능.

정리된 흐름

[사용자 질문]

LLM → 어떤 함수와 파라미터를 써야 할지 판단

함수 내부에서 Cypher 쿼리 생성 (정형화된 방식)

Neo4j에서 전문 인덱스로 검색 → 유사한 엔티티 탐색 가능

정확한 답변 반환

예시로 요약

사용자: "컴퓨터 공학과 전화번호 알려줘"

기존 RAG: LLM이 MATCH (d:Department {name: "컴퓨터 공학과"}) RETURN d.phone 생성
→ Neo4j는 컴퓨터 공학과를 정확히 가진 노드 없으면 실패

본 논문 방식:

LLM: get_department_info("컴퓨터 공학과") 판단

함수: 내부적으로 CALL db.index.fulltext.queryNodes("departmentIndex", "컴퓨터 공학과") 실행

결과: "컴퓨터공학과" 노드 매칭됨 → 전화번호 반환 성공


5. 실험 결과

  • 실제 C대학의 학과 정보를 기반으로 구축한 Knowledge Graph를 활용

  • GPT-3.5-turbo 및 GPT-4o 모델을 LangChain과 연동해 시스템 구현

  • 결과:
    - 기존 질의 실패율: 높음 (띄어쓰기·철자 오류에 민감)
    - 개선 구조 적용 후: 질의 실패율 급감, 응답 안정성 증가

결론 정리

이 논문은 단순히 LLM을 쓰는 것에 그치지 않고, KG 기반 Q&A 시스템의 구조적 한계를 보완하는 실용적 해결책을 제시한다.

핵심 요약:

  • LLM에게 쿼리를 직접 시키지 말고 Tool(Function)을 정의하자
  • Cypher 쿼리는 내부적으로 안전하게 생성하자
  • Full-text index를 활용해 실수에 강한 검색 시스템을 만들자
profile
전공: 소프트웨어, 관심 분야: LLM, NLP, 지식 그래프

0개의 댓글