
🧠 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)
지금까지 생성된 벡터들과 인덱스를 바탕으로, 본격적인 질문 응답 시스템을 구성합니다. 구조는 아래와 같습니다:
- 사용자 질문 입력: 예) "Which companies does Apple rely on?"
- SentenceEncoder를 통해 질문을 벡터로 임베딩
- FAISS 인덱스를 활용해 유사한 노드/엣지/텍스트를 검색
- 가장 연관 높은 Top-N 개의 정보 추출
- LLMGenerator가 해당 문맥을 바탕으로 자연어 응답 생성
이 과정은 기존의 LLM 단독 응답보다 훨씬 정확도가 높으며, 지식 그래프에 기반한 신뢰성 높은 정보만을 바탕으로 대답하게 됩니다.
💡 요약하자면,
- 4는 "지식 요소를 수치화해서 빠르게 찾을 수 있도록 인덱스를 만드는 단계",
- 5는 "그 인덱스를 기반으로 질문에 답하는 에이전트 시스템 구성 단계"입니다.
이후 RAG 기반 챗봇, 데이터 분석 리포트 생성기, 혹은 금융 리서치 자동화 도구로 확장할 수 있습니다.
결론: “기술주 연결성”을 자동으로 그리는 시대
AutoSchemaKG는 정적인 데이터 분석을 넘어서, "문맥에 기반한 관계 추출 + 실시간 질의응답"을 완성하는 AI 기반 프레임워크입니다.
기술주 외에도 산업망, IPO 관계, 공급망 위협 분석 등 다양한 금융 리서치에 활용할 수 있습니다.
📁 참고자료
'AI 개발 > LLM' 카테고리의 다른 글
ChatGPT 프롬프트 공식 - 금융 AI 개발자를 위한 실전 가이드 (2) | 2025.06.29 |
---|---|
📌 Ollama vs Hugging Face: 어떤 차이가 있을까? (1) | 2025.01.31 |
DeepSeek R1 챗봇 만들기! 🚀 AI 대화형 모델을 내 PC에서 실행하는 방법 🤖 (0) | 2025.01.31 |
[LLM] DeepSeek-R1 논문 쉽게 읽기: 새로운 AI 강화학습 시대가 열렸다! 🚀 (2) | 2025.01.31 |
💻 올라마(Ollama) 설치하기 가이드 🛠️ (0) | 2025.01.28 |