LLM과 그래프가 Knowledge Graph의 미래를 가져올 수 있는 것
추상적인
지난 수십 년 동안 사람들은 지식 관련 솔루션 구축을 고려할 때 데이터가 정형인지 비정형인지에 따라 두 가지 방향을 고려하는 경향이 있었어요. 그래서 데이터베이스에 대한 쿼리어를 이용한 소위 구조화된 검색이나 데이터, 주로 텍스트의 의미에 대한 추론과 추론을 이용한 Semantic Search가 있죠.
더 나은 정확성과 성능을 달성하기 위해 엔터티 추출, 엔터티 연결, 관계 추출 등과 같은 기술을 통해 특정 구조를 비정형 데이터로 가져오는 방법도 있어요. LLM(Large Language Models)의 등장으로 이 둘을 하나로 통합할 수 있는 새롭고 유망한 방법이 생겼는데요. 바로 Knowledge Graph(KG)에 구조와 의미를 모두 (텍스트 임베딩 프로세스에 의해 생성된 벡터 형식으로) 저장하는 것이에요. 예시를 통해 이 아이디어를 더 자세히 살펴볼게요.
Knowledge Graph의 간략한 역사
Knowledge Graph는 인공지능, 시맨틱 웹, 그래프 이론 등 다양한 분야에 뿌리를 두고 있으며, 수십 년에 걸쳐 다양한 애플리케이션을 지원하도록 구축되어 왔어요. 지난 60여년(벌써!) KG의 역사를 간략하게 살펴볼까요?
1. 1960년대와 1970년대 — 의미 네트워크
초기 AI 연구자들은 지식을 표현하는 방법으로 의미 네트워크를 도입했어요. 이러한 그래픽 구조는 객체(Node)와 객체 간의 관계(Edge)를 나타내죠.
2. 1980년대 — 프레임 및 전문가 시스템
마빈 민스키(Marvin Minsky)는 틀에 박힌 상황을 표현하기 위한 데이터 구조인 프레임 개념을 도입했어요.
인간 전문가의 의사결정 능력을 모방하는 컴퓨터 시스템인 전문가 시스템이 대중화되었죠. 이러한 시스템은 지식 기반에 크게 의존했어요.
3. 1990년대 — 온톨로지 및 RDF:
"온톨로지"라는 용어는 지식 표현의 맥락에서 널리 사용되기 시작했어요. 이는 주제 영역의 일련의 개념과 범주, 그리고 그 관계를 나타내죠.
The 자원 설명 프레임워크(RDF)W3C(World Wide Web Consortium)에서 웹 리소스를 설명하기 위한 표준으로 도입했어요.
4. 2000년대 — SPARQL 및 DBpedia:
스파클RDF(Resource Description Framework)용 쿼리 언어인 가 도입되어 웹 데이터에 대한 보다 복잡한 쿼리가 가능해졌어요.
출시DBpediaWikipedia에서 구조화된 정보를 추출하고 이 정보를 웹에서 사용할 수 있도록 하는 것을 목표로 한 는 중요한 이정표였죠.
5. 2010년대 — 상업적 지식 그래프의 부상
– Google의 지식 그래프: 2012년 Google은 다양한 소스에서 수집한 정보로 검색 결과를 향상하기 위한 구조화된 지식 기반인 지식 그래프를 발표했어요. 검색 시 정보가 표시되는 방식이 변경되어 직접적인 답변과 리치 스니펫이 제공되죠.
— 페이스북의 오픈 그래프: 같은 시기에 Facebook은 타사 웹사이트가 플랫폼과 더욱 원활하게 통합될 수 있도록 하는 Open Graph Protocol을 도입했어요.
— 위키데이터: 2012년 Wikimedia Foundation에서 출시된 이 제품은 Wikipedia 및 Wikimedia Commons를 포함한 Wikimedia 자매 프로젝트의 구조화된 데이터를 위한 중앙 저장소 역할을 해요.
— 네오4j: 이 그래프 데이터베이스는 비록 지식 그래프는 아니지만 지식 그래프 기술의 성장에 중요한 역할을 해왔어요. 이라는 스키마에서 그래프 데이터 구조를 생성, 쿼리 및 유지 관리하기 위한 도구와 인프라를 제공하죠.
RDF 트리플 스토어와 레이블이 있는 속성 그래프: 차이점은 무엇입니까? – 그래프 데이터베이스 및 분석
6. 2020년대와 그 이후: 신경 지식 그래프의 시대?
신경 지식 그래프는 Knowledge Graph의 구조화된 표현과 Neural Network의 학습 기능, 특히 Deep Learning을 결합해요. 신경 지식 그래프의 등장은 상징적인 규칙 기반 AI(해석 가능하고 명시적으로 추론할 수 있음)와 하위 기호 통계 AI(시끄러운 실제 데이터를 처리하는 데 능숙함)를 결합하는 것을 목표로 하는 AI 연구의 광범위한 추세의 일부이죠. 초기 연구에서는 이러한 접근 방식으로 유망한 결과를 얻었으며 그 미래는 아직 알 수 없어요.
구조화된 검색인가, Semantic Search인가?
구조화된 검색에는 일반적으로 특정 스키마를 정의해야 해요. 예를 들어 관계형 데이터베이스의 열, 행 및 필드 또는 그래프 데이터베이스의 Node, 관계 및 속성이죠.사용 가능한 필드 또는 열과 해당 데이터 유형을 알아야 하는 사전 정의된 스키마의 가장 큰 이점은 RDBMS용 SQL 및 그래프 데이터베이스용 Cypher와 같은 쿼리 언어를 통해 데이터를 조작할 수 있는 정확성과 강력한 기능이에요.
한편, 검색어의 의도와 문맥적 의미를 이해해서 관련성이 높은 결과를 만들어내는 게 목표예요. 단순히 일치하는 키워드에만 집중하는 게 아니라, 키워드가 사용되는 맥락을 이해하려고 하는 거죠. 예를 들어 "사과"라는 단어는 과일이나 기술 회사를 나타낼 수 있는데, Semantic Search 시스템은 추가적인 맥락을 바탕으로 어떤 의미로 사용되었는지 파악하려고 시도할 거예요.
Semantic Search는 종종 Natural Language Processing 기술을 사용해서 컨텍스트, 동의어, 사용자 의도 등을 이해해요. 많은 Semantic Search 시스템은 Knowledge Graph를 사용해서 다양한 엔터티와 개념 간의 관계를 이해하고요.
저장된 정보의 특성과 제공되는 기능 덕분에, 구조적인 검색은 데이터가 잘 구성되어 있고 사용자가 쿼리하는 내용을 정확하게 알고 있는 환경에서 뛰어난 성능을 발휘해요. 반면에 Semantic Search는 정확한 정보를 검색하는 데 사용자 의도와 컨텍스트가 중요한 역할을 하는 더 복잡한 자연어 환경에서 빛을 발하죠.
구조적 검색과 Semantic Search를 하나로 통합하기
LLM에 의해 생성된 텍스트 Vector Embedding의 가장 놀라운 점은 모든 텍스트(구조화되지 않은 텍스트까지!)를 고정된 크기의 부동 소수점(벡터) 목록으로 인코딩할 수 있다는 거예요. 그런 다음 유사성 알고리즘 중 하나를 사용해서 매칭할 수 있고요.
아래 포스팅에 좀 더 자세한 설명이 나와 있어요..
텍스트 임베딩 — 무엇을, 왜, 어떻게?
LLM은 텍스트에 비해 놀라울 정도로 강력한 추론, 요약, 완성 기능을 보여주기도 해요. 사람들은 질문을 할 때 구조화된 데이터와 구조화되지 않은 데이터를 구분하지 못하는 경우가 많기 때문에, LLM과 KG를 결합한 통합적인 접근 방식은 자연어 쿼리를 이해하고, 기반 구조에 관계없이 정보를 가져올 수 있어서 더 자연스럽고 직관적인 검색 경험을 제공할 수 있어요.
더 중요한 건, 구조적인 검색과 Semantic Search를 통합하면 **훨씬 강력한 피드백 메커니즘**을 만들 수 있다는 점이에요. 시스템은 명시적인 피드백(예: 사용자가 결과의 관련성을 평가하는 것)과 암시적인 피드백(예: 사용자가 가장 자주 클릭하는 결과 추적)을 통해 학습해서 시간이 지남에 따라 알고리즘을 개선할 수 있거든요.
Movie Graph를 사용한 실험
Movie Graph
다음 섹션에서는 몇 가지 간단한 단계를 거쳐 ChatGPT API와 Neo4j Graph Database를 사용해서 유명한 Movie Graph에서 자연어 Q&A를 구현하는 방법을 보여드릴게요.
Movie Graph를 만드는 단계는 다음과 같아요. Neo4j AuraDB에 OpenAI API에서 생성된 텍스트 Vector Embedding을 저장하는 거죠. 이전 게시물을 확인해보세요.
Knowledge Graph에 대한 협업 필터링을 통해 텍스트 임베딩의 의미 체계 검색 향상
디자인
GPT-3 및 기타 유사한 LLM을 사용해서 자연어로 된 질문에서 Cypher 쿼리를 생성하는 방법에 대한 게시물은 이미 많이 나와 있어요. 이 패턴에서는 제공된 예시를 기반으로 LLM에서 쿼리가 생성된 다음, 기본 데이터베이스에서 실행되어 결과를 반환하죠.
하지만 이 패턴에서 *일반적으로 발생하는 문제*는 다음과 같아요.
- 스키마가 Prompt의 일부로 제공되더라도 LLM이 항상 올바른 Label, Relationship 또는 Property 이름을 생성할 수는 없어요.
- 샘플이 제공되지 않으면 LLM은 복잡한 쿼리를 생성할 수 없어요.
- Prompt 크기 제한 때문에 충분한 샘플을 제공할 수 없어서 LLM이 쿼리 언어의 사용 가능한 모든 구문을 학습하지 못할 수도 있어요.
- LLM은 Relationship 방향을 잘못 설정할 수도 있고요.
- 간단한 3단계로 Knowledge Graph에 Q&A 기능 추가하기
- Doctor.ai의 GPT-3를 사용하여 영어를 Cypher로 변환
- LangChain Cypher Search: 팁과 요령
LLM이 구조화되지 않은 질문을 기반으로 구조화된 쿼리를 생성할 거라고 기대하는 대신, 다음 세 단계를 따르는 다른 접근 방식을 보여드릴게요.
- KG의 Node, Relationship 및 Node-Relationship-Node 패턴에 대해 *텍스트 Vector Embedding*을 만들어서 저장해요. (=> 4.3)
- *벡터 Index*를 만들어요. (=>4.4)
- 질문에 대해 텍스트 Vector Embedding을 생성하고 KG에서 유사성 검색을 수행해서 가능한 한 많은 콘텐츠를 검색한 다음, LLM이 답변을 생성하도록 해요. (=>4.5)
임베딩만 있으면 돼요
Movie Graph에는 아주 간단한 스키마가 있어요.
Node Embedding은 기본적으로 다음의 텍스트 Vector Embedding이에요.
- Node Label
- Node Property
- Node Property 값
예를 들어, *Person* Node의 경우 Node Embedding은 다음 콘텐츠의 OpenAI Embedding API에 의해 생성된 텍스트 Vector Embedding이에요.
Person name "Tom Hanks" born 1956
그리고 *영화* Node *아폴로 13호*는 다음에서 생성돼요.
Movie title "Apollo 13" tagline "Houston, we have a problem."
**Node-Relationship-Node 임베딩**
이건 트리플을 삽입하는 것과 비슷해요. 예를 들면 이런 거죠.
임베딩은 다음과 같이 생성돼요.
"Tom Hanks" ACTED_IN "Apollo 13"
Neo4j의 텍스트 임베딩 저장 및 인덱스 생성
임베딩은 부동 소수점 값의 배열인 벡터로 표현되죠. Neo4j에서는 벡터가 속성값으로 저장되고, 아래 링크에서 자세한 내용을 확인할 수 있어요.
Neo4j의 벡터 검색: AI 기반 애플리케이션에 대한 더 깊은 통찰력 확보 – Graph Database 및 분석
주어진 질문에 대해 OpenAI Embedding API를 호출해서 임베딩을 얻은 다음, 벡터 인덱스를 통해 Neo4j에서 유사한 콘텐츠를 검색하는 데 사용돼요. 유사성은 COSINE 유사성을 사용해서 계산하고요.
CALL db.index.vector.queryNodes('embeddingIndex', topK, $questionEmbedding)
YIELD node, score
RETURN node.text AS context, score;
다른 게시물과 달리 위의 Cypher는 실행할 유일한 쿼리이고, 여기에는 하나의 매개 변수, 즉 질문 삽입이 있어요. 주어진 질문에 대해 Cypher를 생성할 필요가!
답변 생성
주어진 질문에 대해 Knowledge Graph에서 충분한 콘텐츠가 검색되면 LLM이 컨텍스트에서 답변을 생성할 수 있도록 또 다른 OpenAI Completion API 호출이 수행돼요.
아래 은 프롬프트에 사용돼요 (또는 채팅 API GPT-3.5/4 모델에서 사용하는 경우):
당신은 지능형 챗봇입니다. 가능한 한 아래 제공된 맥락을 토대로 질문에 답해 주세요. 문맥에서 답변을 찾을 수 없는 경우 "죄송합니다. 질문에 대한 문맥이 충분하지 않습니다."라고 말씀하세요.
샘플 문제의 테스트 결과
이 섹션에는 Movie Graph에 대한 몇 가지 Q&A 결과가 나와 있어요.
1. 단일 엔터티: 누구인가?
질문:누구인가?
컨텍스트: (처음 5줄만 제공됩니다. 다음 샘플 모두 동일)
사람 이름 “Kevin Bacon” 1958년생
“케빈 베이컨” ACTED_IN “아폴로 13호”
“케빈 베이컨” ACTED_IN “어 퓨 굿 맨(A Few Good Men)”
“케빈 베이컨” ACTED_IN “프로스트/닉슨”
사람 이름 “Kevin Pollak” 1957년생
… … … …
답변:케빈 베이컨은 1958년생 배우입니다.
2. 단일 개체: 사실 기반 논리적 추론
질문:탑건은 영화인가요?
문맥:
'탑건' 감독은 '토니 스콧'이 맡았다.
“톰 스커릿” ACTED_IN “탑건”
영화 제목 '탑건' 태그라인 "나는 속도의 필요성을 느낀다."
“멕 라이언” ACTED_IN “탑건”
“톰 크루즈” ACTED_IN “탑건”
… … … …
답변:네, '탑건'은 영화입니다.
3. 단일 개체: 사실 기반 논리적 추론, 부정
질문:톰 행크스는 영화인가요?
문맥:
“톰 행크스” ACTED_IN “시애틀의 잠 못 이루는 밤”
'댓 씽 유 두'(That Thing You Do) 감독은 '톰 행크스'다.
“톰 행크스” ACTED_IN “You've Got Mail”
“톰 행크스” ACTED_IN “당신이 하는 일”
“톰 행크스” ACTED_IN “캐스트 어웨이”
… … … …
답변:
아니요, 톰 행크스는 영화가 아닙니다. 톰 행크스는 많은 영화에 출연한 배우입니다.
4. 단순 집계
질문:영화는 몇 편?행동했나요?
문맥:(결과 순서는 #1과 약간 다릅니다)
“케빈 베이컨” ACTED_IN “어 퓨 굿 맨(A Few Good Men)”
“케빈 베이컨” ACTED_IN “아폴로 13호”
“케빈 베이컨” ACTED_IN “프로스트/닉슨”
사람 이름 “Kevin Bacon” 1958년생
“케빈 폴락” ACTED_IN “어 퓨 굿 맨(A Few Good Men)”
… … … …
답변:케빈 베이컨은 3편의 영화에 출연했습니다. (Cypher 쿼리 결과에 따르면 정확합니다.)
5. 단일 엔터티 + 관계
질문:톰 행크스는 어떤 영화에 출연했나요?
문맥:
“톰 행크스” ACTED_IN “시애틀의 잠 못 이루는 밤”
“톰 행크스” ACTED_IN “그들만의 리그”
“톰 행크스” ACTED_IN “That Thing You Do”
“톰 행크스” ACTED_IN “You've Got Mail”
“톰 행크스” ACTED_IN “캐스트 어웨이”
… … … …
답변:Tom Hanks는 다음 영화에 출연했습니다. - Sleepless in Seattle - A League of their Own - That Thing You Do - You've Got Mail - Cast Away - Charlie Wilson's War - The Green Mile - Apollo 13 - Joe Versus the Volcano - The Da Vinci Code - The Polar Express - Cloud Atlas
6. 두 개체, 논리적 추론
질문:톰 크루즈가 톰 행크스보다 나이가 많나요?
문맥:
사람 이름 “Tom Hanks” 1956년생
사람 이름 “Tom Cruise” 1962년생
“톰 행크스” ACTED_IN “아폴로 13호”
“톰 행크스” ACTED_IN “캐스트 어웨이”
“톰 행크스” ACTED_IN “조 대 화산”
… … … …
답변:아니요, Tom Hanks는 Tom Cruise보다 나이가 많아요.
7. 범위 밖의 엔터티 관계
질문:톰 크루즈가 미션 임파서블 7에 출연했나요?
문맥:
“톰 크루즈” ACTED_IN “탑건”
“톰 크루즈” ACTED_IN “어 퓨 굿 맨”
“톰 크루즈” ACTED_IN “제리 맥과이어”
“톰 스커릿” ACTED_IN “탑건”
“톰 행크스” ACTED_IN “아폴로 13호”
… … … …
답변:죄송합니다. 질문에 대한 충분한 맥락이 없네요.
8. 두 엔터티 관계, 1홉
질문:톰 행크스와 호고 위빙이 같은 영화에 출연한 적이 있나요?
문맥:
“톰 행크스” ACTED_IN “그들만의 리그”
“톰 행크스” ACTED_IN “That Thing You Do”
“톰 행크스” ACTED_IN “시애틀의 잠 못 이루는 밤”
“톰 행크스” ACTED_IN “캐스트 어웨이”
“톰 행크스” ACTED_IN “찰리 윌슨의 전쟁”
… … … …
답변:네, 톰 행크스와 휴고 위빙은 영화 '클라우드 아틀라스'에 함께 출연했어요.
9. 단일 엔터티, 다중 관계, 요약
질문:Top Gun에 대해 알려주세요.
문맥:
'탑건' 감독은 '토니 스콧'이 맡았다.
“톰 스커릿” ACTED_IN “탑건”
“발 킬머” ACTED_IN “탑건”
영화 제목 '탑건' 태그라인 "나는 속도의 필요성을 느낀다."
“켈리 맥길리스” ACTED_IN “탑건”
… … … …
답변:'탑건'은 토니 스콧 감독의 영화예요. 톰 크루즈, 톰 스커릿, 발 킬머, 켈리 맥길리스, 멕 라이언, 앤서니 에드워즈가 출연하죠. 영화의 태그라인은 '나는 속도의 필요성을 느낀다'입니다.
10. 다중 엔터티, 다중 관계, 요약
질문:배우나 감독이 주문한 매트릭스와 비슷한 영화 추천해주세요
문맥:
'매트릭스' 감독 '릴리 워쇼스키'
'매트릭스 리로디드' 감독은 '릴리 워쇼스키'다.
'매트릭스' 감독 '라나 워쇼스키'
'매트릭스 레볼루션' 감독 '릴리 워쇼스키'
'매트릭스 레볼루션' 감독 '라나 워쇼스키'
… … … …
답변:처음 3개 부분은 여기에 나열되어 있어요.
1. Lana Wachowski 감독의 영화:
— 클라우드 아틀라스
— 스피드 레이서
2. 릴리 워쇼스키 감독의 영화:
— 매트릭스 리로디드
— 매트릭스 혁명
3. 로버트 저메키스 감독의 영화:
— 캐스트 어웨이
— 폴라 익스프레스
… … … …
11. 다중 엔터티, 다중 홉, 협업 필터링, 요약
질문:톰 행크스의 공동 배우들은 또 어떤 영화에 출연했나요? 배우 이름 및 영화 제목 나열
문맥:
“톰 행크스” ACTED_IN “그들만의 리그”
“톰 행크스” ACTED_IN “시애틀의 잠 못 이루는 밤”
“톰 행크스” ACTED_IN “That Thing You Do”
“톰 행크스” ACTED_IN “You've Got Mail”
“톰 행크스” ACTED_IN “조 대 화산”
… … … …
답변:
빌 풀먼 — 시애틀에서 잠 못 이루다
빌 팩스턴 — 그들만의 리그, 아폴로 13, 트위스터
Steve Zahn — You've Got Mail
멕 라이언 — Sleepless in Seattle, You've Got Mail, When Harry Met Sally, Joe Versus the Volcano, Top Gun
… … … …
추가 토론
더 많은 Q&A를 계속할 수 있지만 지금까지 표시된 결과의 정확성과 관련성은 정말 인상적이었어요. 이에 대한 추가 개발은 다음 영역에 중점을 둘 거예요.
- 보다 효율적이고 관련성이 높은 컨텍스트 생성.
- 질문에 대한 답변을 텍스트 기반 컨텍스트 또는 구조화된 쿼리 실행으로 결정하는 지능입니다.
- 효율성을 높이기 위해 데이터 세트의 메타데이터 또는 도메인 지식(예: 온톨로지)을 활용합니다.
- 도메인별 데이터를 사용하여 Fine-tuning된 모델입니다.
구조화된 지식과 그 의미 체계가 모두 Neo4j Graph Database에 저장되면 Semantic Search와 그래프에 대한 구조화된 순회를 결합하여 결과에 대한 추가 처리를 제공하는 것이 매우 가능하며, 이는 이 접근 방식을 추가로 탐색할 수 있는 큰 잠재력을 갖게 합니다.
결론적으로 이 글의 몇 마디를 인용하고 싶네요. 놀라운 종이 작성자: Luna Dong:
(KG의) 미래: 위의 분석을 통해 우리는 지식 트리플의 형태와 LLM 임베딩의 형태로 지식을 인코딩하는 KG를 구상합니다. 전자는 인간의 이해와 설명에 사용하기 쉽고 후자는 기계의 이해에 더 쉽습니다.
다음 내용을 기대해주세요!
- neo4j llm
- Semantic Search
에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.
'Ontology & Knowledge Graph' 카테고리의 다른 글
| Knowledge Graphs Are the Accountability Layer for High-Stakes AI (0) | 2026.07.13 |
|---|---|
| 지식 그래프, Graph Database 맞아? Neo4j로 파헤쳐 보기 (0) | 2026.07.13 |
| Elasticsearch와 Neo4j로 지식 그래프 검색 마스터하기 (1) | 2026.07.12 |
| 지식 그래프와 LLM으로 Multi-Hop 추론 능력 높이는 방법 (0) | 2026.07.12 |
| 지식 그래프 & LLM: 실시간 그래프 분석으로 똑똑하게! (1) | 2026.07.11 |
