GitHub - stair-lab/kg-gen: [NeurIPS '25] Knowledge Graph Generation from Any Text
Service

GitHub - stair-lab/kg-gen: [NeurIPS '25] Knowledge Graph Generation from Any Text

stair-lab
2026.01.17
·GitHub·by 이호민
#Knowledge Graph#AI#LLM#RAG#Text Processing

핵심 포인트

  • 1KGGen은 일반 텍스트 및 대화형 메시지를 포함한 다양한 텍스트 입력에서 Knowledge Graph를 추출하도록 설계된 AI 기반 도구입니다.
  • 2LiteLLM 및 DSPy를 통해 다양한 Language Model을 지원하며, 텍스트 chunking, entity/relation clustering, graph aggregation과 같은 핵심 기능을 제공합니다.
  • 3이 도구는 RAG 강화, synthetic data 생성, 텍스트 구조화 및 개념 관계 분석과 같은 광범위한 애플리케이션에 유용합니다.

KGGen은 LLM(Language Model)을 활용하여 모든 종류의 plain text로부터 Knowledge Graph를 추출하는 데 중점을 둔 논문입니다. 이 프로젝트는 RAG(Retrieval-Augmented Generation)를 위한 그래프 생성, 모델 학습 및 테스트를 위한 그래프 synthetic data 생성, 텍스트를 그래프로 구조화, 그리고 원본 텍스트 내 개념 간의 관계 분석 등 다양한 목적에 활용될 수 있습니다.

핵심 방법론 및 기술적 세부사항:

KGGen은 LLM의 강력한 자연어 이해 및 생성 능력을 활용하여 비정형 텍스트에서 entity, relation, 그리고 relation type을 식별합니다.

  1. LLM 활용: KGGen의 핵심은 LLM을 사용하여 텍스트에서 지식 그래프 요소를 추출하는 것입니다. 이는 LLM이 텍스트의 의미를 파악하고, 주요 개념(entities)과 그 개념들 간의 연결(relations)을 식별하도록 프롬프트 엔지니어링 및 내부 로직을 통해 구현됩니다.
  1. LiteLLM을 통한 모델 제공자 통합: kg-gen은 LiteLLM을 미들웨어로 사용하여 다양한 LLM API 및 로컬 모델(OpenAI, Ollama, Anthropic, Gemini, Deepseek 등)을 통합합니다. 이를 통해 사용자는 openai/gpt-4o, gemini/gemini-2.5-flash 또는 ollama_chat/deepseek-r1:14b와 같은 모델 문자열을 지정하기만 하면 되며, kg-gen의 핵심 KG 생성 로직을 변경하지 않고도 다양한 LLM을 사용할 수 있습니다. LiteLLM은 LLM 제공자 간의 인터페이스를 추상화하여 유연성을 제공합니다.
  1. DSPy를 활용한 Structured Output 생성: kg-gen은 DSPy를 사용하여 LLM이 일관되고 구조화된 출력(예: JSON 형식의 entity, edge, relation)을 생성하도록 합니다. DSPy는 LLM의 추론 단계를 프로그래밍 가능한 모듈로 구성하여, 복잡한 태스크를 위한 LLM 파이프라인을 구축하고, 예측이 특정 스키마에 부합하도록 강제하는 데 유용합니다. 이를 통해 추출된 Knowledge Graph의 정합성과 파싱 용이성이 보장됩니다. 추출된 그래프는 entities (string 집합), edges (관계 타입 string 집합), relations (head, relation, tail 튜플 집합)의 형태로 표현됩니다.
  1. 대용량 텍스트 처리 (Chunking): chunk_size 파라미터를 통해 대용량 텍스트를 작은 청크(chunk)로 나누어 처리합니다. 각 청크는 개별적으로 LLM에 의해 처리되어 부분적인 Knowledge Graph를 생성하고, 이들 부분 그래프들은 최종적으로 하나의 통합된 그래프로 합쳐집니다. 이는 LLM의 context window 제한을 극복하는 일반적인 방법입니다.
  1. 엔티티 및 관계 Clustering:
    • cluster=Truecluster=True 옵션을 통해 그래프 생성 중 또는 kg.cluster() 메서드를 통해 생성 후에도 유사한 엔티티와 관계를 클러스터링할 수 있습니다.
    • 클러스터링은 context 파라미터를 사용하여 클러스터링 과정을 안내할 수 있습니다. 이는 "AI"와 "artificial intelligence" 또는 "is type of"와 "is a type of"와 같이 의미적으로 동일하지만 표현이 다른 엔티티나 관계들을 묶어 표준화하는 데 사용됩니다. 이 과정 또한 LLM의 의미론적 이해 능력을 활용하여 유사성을 판단하고 그룹화하는 것으로 추정됩니다. 클러스터링 결과는 entity_clustersedge_clusters (정식 명칭을 여러 변형에 매핑하는 사전)로 제공됩니다.
  1. 다중 그래프 Aggregation: kg.aggregate() 메서드를 사용하여 여러 개의 개별적으로 생성된 Knowledge Graph를 하나의 통합된 그래프로 결합할 수 있습니다. 이는 서로 다른 텍스트 소스에서 추출된 정보를 한데 모으는 데 유용합니다.
  1. 메시지 배열 처리: 대화 형식의 메시지 배열(messages array) 입력도 지원합니다. 이 경우, 각 메시지의 role 정보(예: "user", "assistant")를 유지하고 메시지 순서를 보존하며, 메시지 내의 개념뿐만 아니라 role (즉, 화자)과 개념 간의 관계, 그리고 대화의 여러 메시지에 걸친 관계까지 추출할 수 있습니다. 예를 들어, (user, "asks about", "France")와 같은 관계를 추출할 수 있습니다.

KGGen은 kg-gen.org에서 시각화 도구를 제공하며, AI agent를 위한 persistent memory 기능을 제공하는 MCP(Memory-Centric Proxy) Server와도 연동됩니다.