Knowledge Graphs and LLMs in Action · Chapter 13

문서를 찾는 데서
관계를 읽는 데로

제13장은 언어모델의 말솜씨를 지식의 근거와 연결하는 장이다. 벡터 검색이 닮은 문장을 건져 올린다면, 지식그래프는 누가 누구와 무엇을 논했고 여러 문서의 조각이 어디서 만나는지를 드러낸다. 이 장의 핵심은 더 많은 문서를 넣는 데 있지 않다. 질문에 필요한 맥락을 가장 알맞은 도구로 찾아, 그 출처와 관계를 보존한 채 답으로 엮는 데 있다.

좋은 RAG는 거대한 창고에서 종이를 많이 꺼내 오는 기술이 아니다. 질문의 결을 헤아리고, 필요한 문서와 관계만 골라 한 상 위에 차려 내는 지식의 큐레이션이다.
범위: 원서 337-355쪽핵심: AI Agent · RAG · Graph RAG사례: Rockefeller Archive Center도구: Neo4j · LangChain · ReActListing 13.1-13.6 · Figure 13.1-13.5
Prologue · 337-338

말을 잘하는 모델에서, 일을 해내는 시스템으로

2022년 말 GPT-3.5의 등장은 자연어처리의 제작 방식을 뒤집었다. 과업마다 데이터셋과 전용 모델을 오래 준비하던 시대에서, 프롬프트만으로 여러 응용을 빠르게 조립하는 시대로 건너왔다. 그러나 시연에서 감탄을 얻는 일과 기업 환경에서 책임 있게 작동하는 일은 서로 다른 고개다.

제13장은 그 고개를 넘기 위해 AI 에이전트, RAG, Graph RAG를 차례로 놓는다. 앞 장들에서 비공개 문서를 지식그래프로 바꾸었다면, 이제 그 그래프와 벡터 데이터베이스를 대화형 인터페이스의 외부 기억으로 사용한다. 에이전트의 뇌는 질문을 받고, 어떤 도구를 쓸지 판단하며, 맥락이 충분한지를 되묻고, 마지막에 근거 있는 답을 생성한다.

사용자 질문자연어 입력 AI 에이전트의 뇌어떤 도구를 쓸까? · 맥락은 충분한가? Semantic벡터 검색 KG Retriever구조 검색 KG Document관계 문서 검색 Vector DB문서 임베딩 Knowledge Graph개체·관계·출처 답변근거 결합
Figure 13.1과 13.4의 핵심 구조를 재구성한 도식. 에이전트는 벡터 검색, KG 검색, KG 기반 문서 검색을 상황에 따라 선택한다.
이 장의 세 질문 — LLM을 어떻게 에이전트의 뇌로 만들 것인가, 외부 맥락으로 어떻게 답을 grounding할 것인가, 지식그래프를 RAG의 정밀한 검색 장치로 어떻게 사용할 것인가.
13.1 · 338-339

AI 에이전트: 정해진 순서가 아니라 상황을 읽는 프로그램

전통적 프로그램은 미리 적힌 순서를 따른다. 에이전트는 환경과 중간 결과를 보고 다음 행동을 고른다. 자율성, 적응성, 경험에서의 학습은 여기서 나온다.

1

다단계 추론

중간 산출물에 따라 실행 계획을 바꾸는 능력이다. 수학 퍼즐의 연역이나, 첫 검색 결과를 보고 다음 검색 범위를 조절하는 과정이 이에 해당한다.

2

깊은 관계 패턴

사회망의 영향자, 공급망의 병목처럼 개별 문장만으로는 보이지 않는 다중 홉 구조를 읽어야 한다.

3

외부·비공개 최신 데이터

학습 시점 이후의 정보나 조직 내부 자료, 사용자 권한에 따라 접근 범위가 다른 민감 정보가 필요하다.

멀티에이전트는 역할극과 닮았다

콘텐츠 작성 보조 시스템을 사람이 일하는 순서로 풀어 보면 연구자, 작성자, 검토자가 나타난다. Researcher는 자료를 찾고, Writers는 매체와 목적에 맞게 초안을 만들며, Reviewer는 오류와 품질을 확인한다. 하나의 거대한 프롬프트에 모든 책임을 몰아넣는 대신, 전문 역할을 맡은 에이전트들이 대화하며 목표를 완성하는 구조다.

ROLE 01Researcher

자료·사실·배경을 수집하고 출처를 정리한다.

ROLE 02Writer A

장문 기사나 보고서의 논리를 구성한다.

ROLE 03Writer B

블로그·소셜미디어 형식으로 다시 쓴다.

ROLE 04Reviewer

사실성, 일관성, 표현 위험을 검토한다.

ROLE 05Revision

검토 의견을 반영해 초안을 고친다.

GOALPublication

역할별 산출물이 합쳐져 최종 결과가 된다.

13.2 · 339-341

가장 단순한 에이전트: 모델과 기억

대화형 에이전트의 최소 구성은 선행학습 LLM과 대화 이력을 보존하는 메모리다. 시스템 메시지가 역할을 정하고, 사용자 질문과 모델 응답이 차례로 메시지 배열에 쌓인다.

대화 기억의 작동

Listing 13.1의 핵심 구조를 시각화했다.

사이클로트론 연구비의 주요 영향자는 누구인가?
정부기관, 연구기관, 민간재단 등 일반적 범주가 중요하다.
messages[]
1930년대 Rockefeller Foundation 맥락에서는?
이전 질문을 기억해 더 구체적인 이름과 맥락을 제시한다.
Listing 13.1

Agent 클래스

model, system, messages, API client를 보유한다. 호출될 때 사용자 메시지를 저장하고, 모델 응답도 다시 메모리에 추가한다. temperature=0으로 변동성을 낮춘다.

Listing 13.2

출력의 교훈

첫 답은 맞지만 매우 일반적이다. 후속 질문이 시대와 기관을 지정하자 더 구체적인 답이 나온다. 그러나 모델이 기대하는 비공개 원자료를 보지 못한 이상, 정확한 관계와 근거를 보장하지 못한다.

기억은 대화를 이어 주지만, 기억 속에 들어 있지 않은 사실을 만들어 주지는 않는다. 대화의 자연스러움과 지식의 정확성은 별개의 문제다.
13.3 · 341-342

운영 환경의 여섯 난제

기업용 에이전트는 “질문 입력-답변 출력”의 매끈한 시연만으로 완성되지 않는다. 모델이 틀릴 때의 비용, 최신성, 출처, 권한, 비용, 사회적 위험을 함께 설계해야 한다.

환각지식이 없어도 가장 그럴듯한 다음 토큰을 생성하므로, 설득력 있는 허구가 만들어질 수 있다.
최신성대규모 재학습은 드물다. 학습 이후의 사건이나 변화는 외부 소스 없이는 정확히 답하기 어렵다.
투명성답이 어떤 출처와 추론을 거쳤고 신뢰도가 어느 정도인지 기본 모델만으로는 알기 어렵다.
데이터 프라이버시민감 데이터를 학습하거나 호출할 때 누출 위험과 사용자별 접근권한을 통제해야 한다.
비용과 환경 부담학습·배포·유지에는 막대한 계산자원, 비용, 에너지와 탄소 배출이 따른다.
윤리와 편향학습 데이터의 고정관념·유해 콘텐츠·오정보가 재생산되거나 증폭될 수 있다.

이 난제를 풀기 위해 에이전트에는 외부 세계와 접촉하는 도구가 필요하다. 최신 날씨 API, 뉴스, 조직 내부 데이터베이스, 지속적으로 갱신되는 지식그래프가 그 예다. 이 지점에서 RAG가 등장한다.

13.4 · 342-343

Rockefeller 기록관: 비공개 역사를 대화 가능한 지식으로

사례 지식그래프는 1930년대 Rockefeller Foundation의 연구비 승인 과정과 그 이면의 대화를 담는다. 연구비 금액, 연구 주제, 대학, 연구자뿐 아니라 누가 누구와 무엇을 논했는지가 연결되어 있다.

ENTITY

Researcher

Ernest O. Lawrence, Vannevar Bush, Dorothy M. Wrinch 등 연구자와 관계자.

CONTEXT

Grant

연구비 금액, 승인 과정, 지원 기관과 연구 주제.

RELATION

Conversation

TALKED_ABOUT, TALKED_WITH, WORKS_ON 등 대화와 협업.

PROVENANCE

Page

각 개체와 관계를 원문 일지 페이지로 되돌려 확인할 수 있는 출처 연결.

전통적 KG 시스템은 그래프 시각화와 대시보드로 이 자료를 보여 준다. 그러나 사용자가 Cypher를 배우고 그래프를 직접 탐색하지 않아도 같은 가치를 얻도록 하려면, 자연어 질문을 검색 도구와 연결하는 AI 인터페이스가 필요하다.

13.4.1 · 343-345

RAG: 모델의 기억 밖에서 근거를 가져오는 법

RAG는 생성 모델과 외부 정보검색을 결합한다. 에이전트는 질문에 필요한 맥락을 구조화 데이터베이스나 텍스트·이미지 같은 비정형 소스에서 가져오고, LLM은 질문과 검색 맥락을 함께 받아 답을 만든다.

1. 질문사용자의 자연어 요청
2. 검색 표현질문 임베딩·개체 추출
3. 외부 검색DB·문서·API·KG
4. Context관련 정보만 프롬프트에 결합
5. 생성근거 범위 안에서 답변
RAG Agent = LLM + Prompt + Retrieval Tools + Retrieved Context
Grounding의 의미 — 모델이 내부 파라미터만으로 자유롭게 답하도록 두지 않고, 제공된 외부 맥락을 사실적 바닥으로 삼게 한다. 환각 가능성을 크게 줄이지만 확률적 생성의 위험을 완전히 없애지는 못한다.

원문은 인간을 대체하는 것이 아니라 인간의 결정을 증강해야 하며, 피드백·검증·감독을 통해 human-in-the-loop를 유지하는 것이 필수라고 강조한다.

초기 벡터 RAG의 전형

문서를 작은 chunk로 나누고, 각 chunk를 고정 길이 임베딩으로 변환해 벡터 데이터베이스에 저장한다. 질문도 같은 모델로 임베딩한 뒤 cosine similarity가 높은 문서를 가져온다. Listing 13.3은 Neo4j의 Page.text를 OpenAI embedding으로 변환해 embedding 속성과 인덱스를 만들고, 상위 두 문서를 검색한다.

0.918
1939-01-31 일지

대형 사이클로트론의 자석·전원·챔버 비용과 다음 세대 기계 구상을 직접 논한다. 질문과 높은 관련성을 보인다.

0.916
Van de Graaff의 발전기 설명

사이클로트론을 언급하지만 자신의 발전기 장점을 강조하는 내용이다. 관련은 있으나 질문의 중심에서는 벗어난다.

Listing 13.3-13.4

Neo4jVector 흐름

Page.text → OpenAIEmbeddings
→ Page.embedding + vector index
Question → same embedding model
→ similarity_search_with_score(k=2)

벡터 점수가 높다고 해서 질문에 필요한 개체·관계가 반드시 포함된 것은 아니다.

13.4.2 · 345-347

벡터 RAG의 그늘: 닮음은 관계와 완전성을 보장하지 않는다

🧩
Context fragmentation

chunk를 독립적으로 다루면 문서 사이의 다중 홉 관계와 앞뒤 문맥이 끊어진다. 필요한 두 조각이 올바른 순서로 함께 검색된다는 보장이 없다.

Scalability

대규모 corpus에서 정밀 벡터 검색은 비싸다. 속도를 위해 approximate search를 사용하면 정확성이 낮아질 수 있다.

Embedding limits

문서 의미를 하나의 dense vector로 압축하면 세밀한 도메인 의미가 사라진다. 희소 용어와 새 명칭, 정적 벡터도 약점이다.

Retrieval noise

느슨하게 관련된 문서가 context를 채우면 distraction이 생기고, 긴 맥락 속 잡음이 모델의 답 품질을 낮춘다.

Retrieval misses

핵심 문서를 놓치면 좋은 모델도 완전한 답을 만들 수 없다. 전체 corpus를 집계해야 하는 질문은 특히 취약하다.

Lauritsen 질문이 보여 준 역설

“Lauritsen은 사이클로트론 연구와 어떻게 관련되는가?”라는 질문의 상위 세 문서는 cosine similarity가 거의 같다. 그러나 Lauritsen을 실제로 포함한 문서는 하나뿐이다. 임베딩은 텍스트의 전체 의미를 압축할 뿐, 질문 속 이름의 포함을 보장하지 않는다.

상위 문서Cosine similarityLauritsen 언급Cyclotron 언급판단
1939-01-03, Karl Lark-Horovitz / Purdue0.906TrueTrue직접 관련
1939-05-02, Irving Langmuir / Dorothy Wrinch0.903FalseTrue이름 누락·잡음
1939-04-03, Dorothy M. Wrinch0.902FalseTrue이름 누락·잡음

검색 임계값 실험

점수만으로 문서를 선택할 때 생기는 정밀도-재현율의 감각을 확인한다.

13.4.3 · 347-349

Graph RAG: 문서의 내용과 문서 사이의 길을 함께 저장한다

지식그래프는 원문만 모으는 창고가 아니다. 문서 메타데이터, 신뢰도 높은 구조화 자료, 개체와 관계, 그리고 그 지식이 어느 문서에서 왔는지를 한 구조 안에 묶는다. 도메인 전문가는 이 구조를 직접 검증하고 갱신할 수 있다.

Text-attributed graph

노드와 관계 자체가 텍스트 및 다른 속성을 가진다. 이름, 설명, 날짜, 저자, 문서 종류 같은 속성이 검색과 요약의 직접 근거가 된다.

Person{name}Topic{label}Org{date}Grant{amount}

Text-paired graph

개체와 관계가 자신을 낳은 원문 문서와 연결된다. 구조화 관계가 부족할 때 출처 페이지로 되돌아가 상세 설명을 검색할 수 있다.

PagePagePagePageRelation

네 가지 활용 방식

Metadata

날짜·문서유형·출처·저자를 이용해 최신 규정, 대표 문서, 문서 커뮤니티를 선택한다.

KG Retriever

질문과 KG schema로 Cypher를 만들거나, 두 개체를 잇는 최단 경로·부분그래프를 반환한다.

KG-enhanced Document

질문 속 모든 개체나 특정 관계를 언급하는 문서만 골라 벡터 검색의 잡음을 줄인다.

Combined Retrieval

KG에서 이름·역할을 식별한 뒤 다른 문서 DB를 검색하고, 두 context를 합쳐 답을 만든다.

결합 검색 예 — “범죄집단 X의 수장이 올해 수행한 거래는 무엇인가?” 금융 문서에는 ‘X의 수장’이라는 직함이 없을 가능성이 크다. 먼저 수사기관 KG에서 실제 인물을 찾고, 그 이름으로 금융 문서를 검색해야 한다.
Figure 13.4 · Listing 13.5

세 도구의 배치: 구조, 원문, 그리고 최후의 벡터 검색

Rockefeller 사례의 에이전트는 KG retriever, KG-enhanced document retriever, semantic retriever를 갖는다. 구조화 지식으로 답할 수 있으면 KG를 쓰고, 관계의 상세 문장이 필요하면 출처 문서를 찾으며, 둘이 실패할 때 벡터 검색을 백업으로 쓴다.

TOOL ROUTER

두 인물 간 발언의 상세

매개변수화된 KG 문서 선택기

입력 schema

entity_sourceentity_source_class = Personentity_targetentity_target_class ∈ {Person, Organization, Occupation, Title}relationship
TALKED_ABOUTTALKED_WITHWORKS_WITHWORKS_ONHAS_TITLE

실행 원리

에이전트가 질문에서 두 개체, 클래스, 관계 유형을 추출한다. 함수는 이를 미리 준비한 Cypher template에 채우고 Neo4j에서 관계를 언급하는 Page.text를 조회한다. 최대 세 문서를 에이전트에 돌려준다.

Question → typed arguments
→ precanned Cypher
→ Neo4j Page/Entity/Relation match
→ top 3 source texts

원문은 완전 자동 Cypher 생성을 더 일반적인 해법으로 볼 수 있으나, 복잡한 질의에서는 실패 지점이 하나 더 생긴다고 경고한다. 운영 Graph RAG가 반복 질문 유형별로 미리 검증된 Cypher 도구를 여럿 두는 이유다.

13.4.4 · 351-352

ReAct: 생각하고, 행동하고, 관찰하며 다시 고른다

도구가 여러 개인데 고정된 실행 순서가 없다면, 에이전트는 질문과 중간 결과에 따라 다음 도구를 선택해야 한다. ReAct는 Thought-Action-Observation을 반복해 필요한 context가 충분해질 때 루프를 끝낸다.

Tool description

도구 이름과 설명은 모델의 라우팅 정책이다. 어떤 질문에 언제 쓰고 어떤 인자를 넣는지를 명확히 쓸수록 안정성과 예측 가능성이 높아진다.

반복 테스트

같은 설정과 같은 질문도 여러 번 시험해야 한다. 일관성이 부족하면 LangChain 기본 prompt와 도구 설명을 직접 고쳐야 한다.

원형의 한계

제시된 구현은 교육용이다. 문서 re-ranking, Cypher self-correction, 질문 유형별 추가 도구가 운영 수준의 다음 단계다.

AgentExecutor = LLM + Agent Prompt + Tool Set + max_iterations(5) + Intermediate Steps
13.4.5 · 352-354

KG와 대화하기: 한 사람의 평판과 여러 문서의 공통점을 찾다

Dorothy M. Wrinch에 대한 동료들의 말

에이전트는 먼저 KG reader에게 “누가 Wrinch에 대해 말했는가?”를 묻는다. Eric Ponder, Pascu, Irving Langmuir라는 세 이름을 얻은 뒤, 각 인물에 대해 KG 기반 문서 선택기를 호출한다. 총 네 번의 Thought-Action-Observation을 거쳐, 원문 문서를 바탕으로 동료들의 평가를 요약한다.

QUESTION동료들의 평가는?

평판과 발언 내용을 묻는 관계형 질문.

THOUGHT먼저 발언자를 찾자

Wrinch로 들어오는 TALKED_ABOUT 관계가 필요하다.

KG ACTIONKnowledgeGraph-reader

Eric Ponder · Pascu · Irving Langmuir 반환.

DOC ACTION문서 선택기 × 3

각 발언자가 언급된 일지 페이지를 회수.

CONTEXT원문 근거 결합

관계와 상세 문장을 하나의 context로 묶는다.

ANSWER근거 기반 요약

짧고 사실적이며 비공개 문서에 grounding된 답.

August Krogh는 Lawrence Irving에 대해 무엇이라 말했는가?
KG-enhanced document retriever가 직접 처리한다.

요지는 Krogh가 심해 잠수동물의 호흡생리 연구를 높이 평가하고, Scholander와 Irving의 협업 필요성을 강조했다는 것이다. Irving의 우수한 연구와 미국 내 시설 가능성, Boothbay Harbor 및 수족관 동물 연구 가능성이 함께 언급된다.

Harvard와 Johns Hopkins의 공통 연구 주제는 무엇인가?
구조화 KG만으로 답할 수 있다.

두 기관과 연결된 연구 주제를 집계하면 공통점은 천문학(astronomy)기후학(climatology)이다. 어느 한 문서에도 이 비교 문장이 직접 쓰여 있지 않지만, KG가 문서 사이의 점을 연결한다.

집계 질문에서 KG가 강한 이유 — 벡터 검색은 많은 문서를 context에 넣고 완전한 답이 우연히 포함되기를 기대해야 한다. KG는 여러 문서에 흩어진 기관-주제 관계를 직접 집계하므로 context가 작아지고, distraction과 환각 위험, 추론 비용과 지연도 줄어든다.
Reference Map

제13장의 그림·표·Listing 전체 지도

Figure 13.1 · 전체 mental model

사용자, 에이전트의 뇌, semantic/KG/KG-document retriever, vector DB, KG, 답변의 연결을 제시한다.

Listing 13.1 · 메모리 보유 대화 에이전트

시스템 메시지, 메시지 이력, OpenAI chat completion을 감싼 최소 Agent 클래스다.

Listing 13.2 · 대화 출력

일반 질문은 일반적 답을, 시대·기관 맥락을 추가한 후속 질문은 더 구체적인 답을 만든다는 사례다.

Figure 13.2 · Vector RAG

문서와 질문을 임베딩하고 유사 문서를 검색해 최종 생성 context로 사용하는 흐름이다.

Listing 13.3 · 문서 임베딩

Neo4jVector와 OpenAIEmbeddings를 이용해 Page 텍스트를 벡터화하고 인덱싱한다.

Listing 13.4 · 상위 2개 chunk

cyclotron 질문에 대한 유사도 0.918, 0.916의 문서를 보여 주며, 두 번째 결과의 부분적 잡음을 드러낸다.

Table 13.1 · Lauritsen 검색 실패

0.906, 0.903, 0.902의 거의 같은 점수에도 세 문서 중 하나만 Lauritsen을 포함한다.

Figure 13.3 · text-attributed + text-paired

문서 메타데이터 subgraph와 개체·관계 subgraph를 결합하고, 모든 지식을 원문으로 추적한다.

Figure 13.4 · 세 retriever의 Graph RAG

KG, KG 문서 선택, semantic 검색을 함께 갖춘 에이전트의 실제 배치를 보여 준다.

Listing 13.5 · KG 문서 선택기

Pydantic 입력 schema와 precanned Cypher로 두 개체의 특정 관계를 다룬 문서를 가져온다.

Listing 13.6 · ReAct agent

StructuredTool, KG schema 설명, GPT-4o-mini, AgentExecutor와 최대 5회 반복을 묶는다.

Figure 13.5 · Wrinch 질의의 내부 단계

KG에서 발언자들을 찾고 각 발언자의 문서를 순차적으로 가져온 뒤 최종 답을 생성하는 네 단계의 실행이다.

Table 13.2 · 두 Q&A 사례

Krogh-Irving 발언과 Harvard-Johns Hopkins 공통 연구주제를 각각 문서 관계 검색과 KG 집계로 해결한다.

원문을 읽을 때의 주의

원문은 모델 버전에 따라 출력이 달라질 수 있다고 명시한다. 또한 제시된 Graph RAG 코드는 개념 검증용이며 production-ready 구현으로 주장하지 않는다. 따라서 이 웹페이지의 예시 답변도 장의 실험 맥락을 설명하는 자료이지, 현재 모델과 라이브러리에서 동일한 출력이 재현된다는 보장은 아니다.

Summary · 354-355

장의 결론: 정확한 답은 모델 크기보다 맥락의 구조에서 온다

1
에이전트의 핵심
LLM이 뇌가 되고, prompt가 행동을 안내하며, tools가 외부 세계와 연결한다.
2
RAG의 역할
생성과 검색을 결합해 환각, 최신성, 투명성, 비공개 데이터 접근 문제를 완화한다.
3
벡터 RAG의 한계
관계 추론, 확장성, embedding 압축, retrieval noise와 miss가 남는다.
4
Graph RAG의 강점
typed relation과 multi-hop pattern을 이용해 검색 정밀도, 추론, 통제, 투명성을 높인다.
5
그래프 설계가 통합법을 결정
text-attributed와 text-paired 구조가 KG 지식, 문서, 메타데이터를 함께 활용하게 한다.
6
다음 단계
Cypher self-correction, document re-ranking, 질문 유형별 도구 확장이 안정성을 높인다.
문서의 바다에서 답을 얻는 일은 가장 비슷한 문장을 건지는 것으로 끝나지 않는다. 이름과 기관, 주제와 발언, 그리고 그 모든 것의 출처를 한눈에 놓을 때 비로소 질문은 지식의 길을 따라간다.