본문 바로가기
AI 개발/LLM

LLM을 이용하여 지식 그래프로 시각화하기 Auto Schema KG Knowledge Graph

by 데이터 AI 벌집 2025. 7. 2.
반응형
 
 

 

🧠 LLM과 지식 그래프(KG)의 만남이 이렇게까지 강력할 줄은 몰랐습니다.

이번 글에서는 AutoSchemaKG 프레임워크를 바탕으로, 기술주들 간의 협력, 경쟁, 종속 관계를 자동 추출하고, 그것을 실시간 RAG 시스템에 통합하는 전 과정을 소개하겠습니다.


🧩 목표

  • 입력 데이터: 기술주 관련 기사/리서치/IR 문서 (ex. 엔비디아, 애플, 테슬라, 마이크로소프트 등)
  • 출력 목표: 기업 간 관계 그래프 + RAG 기반 질문 응답 시스템
  • 예시 질문: “애플은 어떤 기업에 의존하고 있나요?” “엔비디아와 경쟁하는 회사는 어디인가요?”

1. 기술주 문서 수집 및 전처리

📄 sample_tech_articles.txt

- Nvidia provides GPUs to OpenAI, integrated into Microsoft Azure.
- Apple relies on TSMC for its 3nm chip manufacturing.
- Tesla is reducing reliance on Nvidia by building its own Dojo AI chips.
- Palantir integrates AWS into its Foundry platform.

 

해당 문서는 example_data/tech.txt로 저장하고, keyword = 'tech'로 설정합니다.


2. Triple 및 스키마 자동 추출

from atlas_rag import TripleGenerator, KnowledgeGraphExtractor, ProcessingConfig
from openai import OpenAI
import os

# 설정
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
model_name = "meta-llama/Llama-3.3-70B-Instruct"

client = OpenAI(
 base_url="https://api.deepinfra.com/v1/openai",
 api_key="YOUR_API_KEY"
)

keyword = 'tech'
output_dir = f'import/{keyword}'
triple_generator = TripleGenerator(client, model_name=model_name,
    max_new_tokens=4096,
    temperature=0.1,
    frequency_penalty=1.1)

kg_config = ProcessingConfig(
    model_path=model_name,
    data_directory="example_data",
    filename_pattern=keyword,
    batch_size=4,
    output_directory=output_dir
)

kg_extractor = KnowledgeGraphExtractor(model=triple_generator, config=kg_config)
kg_extractor.run_extraction()
kg_extractor.convert_json_to_csv()

 

🧠 이 과정에서 “Nvidia → provides → GPUs”, “Tesla → builds → Dojo AI chip” 같은 트리플과 개념(label: ‘AI 기업’, ‘반도체 제조사’)까지 자동 추출됩니다.

 

3. 개념 CSV 수동 생성 + 그래프 구축

import pandas as pd, os, networkx as nx

os.makedirs(f"{output_dir}/concept_csv", exist_ok=True)

nodes_df = pd.read_csv(f"{output_dir}/triples_csv/triple_nodes_{keyword}_from_json_without_emb.csv")
edges_df = pd.read_csv(f"{output_dir}/triples_csv/triple_edges_{keyword}_from_json_without_emb.csv")

nodes_df.to_csv(f"{output_dir}/concept_csv/concept_nodes_{keyword}.csv", index=False)
edges_df.to_csv(f"{output_dir}/concept_csv/triple_edges_{keyword}.csv", index=False)
pd.DataFrame(columns=[':START_ID', ':END_ID', 'relation', ':TYPE']).to_csv(
    f"{output_dir}/concept_csv/concept_edges_{keyword}.csv", index=False)

G = nx.DiGraph()
for _, row in nodes_df.iterrows():
    G.add_node(str(row['name:ID']), **{
        'id': str(row['name:ID']),
        'type': str(row.get('type', 'entity')),
        'file_id': str(row['name:ID']),
        'label': str(row[':LABEL']),
        'concepts': str(row.get('concepts', '')),
        'synsets': str(row.get('synsets', '')),
    })

for _, row in edges_df.iterrows():
    G.add_edge(str(row[':START_ID']), str(row[':END_ID']),
               relation=row['relation'], type=row[':TYPE'])

nx.write_graphml(G, f"{output_dir}/kg_graphml/{keyword}_graph.graphml")

 

4. 노드/엣지 임베딩 + FAISS 인덱스 생성

지식 그래프를 구성한 뒤, 단순히 연결 구조만으로는 검색이 어렵습니다. 그래서 각 요소를 벡터 형태로 임베딩(embedding)해야 LLM 기반의 질의응답 시스템에 통합할 수 있습니다.

 

여기서 처리한 대상은 다음과 같습니다:

  • 노드 (Node): 엔비디아, 테슬라, TSMC 같은 기업명
  • 엣지 (Edge): “relies_on”, “provides”, “integrates_with” 같은 관계
  • 텍스트 (Text): 원래 문장에서 발췌한 문장들 (예: “Apple relies on TSMC for its chips”)

이 요소들은 문장 임베딩 모델(예: all-MiniLM-L6-v2)을 통해 고차원 벡터로 변환되며, 이 벡터들은 FAISS라는 라이브러리를 이용해 유사도 기반 검색 인덱스로 변환됩니다.

FAISS 인덱스를 구축함으로써, 사용자가 어떤 질문을 던지더라도 빠르게 관련 노드/엣지를 유사도 기반으로 찾아낼 수 있게 됩니다.


5. 질문 응답 시스템 구성 (RAG: Retrieval-Augmented Generation)

지금까지 생성된 벡터들과 인덱스를 바탕으로, 본격적인 질문 응답 시스템을 구성합니다. 구조는 아래와 같습니다:

  1. 사용자 질문 입력: 예) "Which companies does Apple rely on?"
  2. SentenceEncoder를 통해 질문을 벡터로 임베딩
  3. FAISS 인덱스를 활용해 유사한 노드/엣지/텍스트를 검색
  4. 가장 연관 높은 Top-N 개의 정보 추출
  5. LLMGenerator가 해당 문맥을 바탕으로 자연어 응답 생성

이 과정은 기존의 LLM 단독 응답보다 훨씬 정확도가 높으며, 지식 그래프에 기반한 신뢰성 높은 정보만을 바탕으로 대답하게 됩니다.


💡 요약하자면,

  • 4는 "지식 요소를 수치화해서 빠르게 찾을 수 있도록 인덱스를 만드는 단계",
  • 5는 "그 인덱스를 기반으로 질문에 답하는 에이전트 시스템 구성 단계"입니다.

이후 RAG 기반 챗봇, 데이터 분석 리포트 생성기, 혹은 금융 리서치 자동화 도구로 확장할 수 있습니다.

결론: “기술주 연결성”을 자동으로 그리는 시대

AutoSchemaKG는 정적인 데이터 분석을 넘어서, "문맥에 기반한 관계 추출 + 실시간 질의응답"을 완성하는 AI 기반 프레임워크입니다.

기술주 외에도 산업망, IPO 관계, 공급망 위협 분석 등 다양한 금융 리서치에 활용할 수 있습니다.


📁 참고자료

반응형