LLM에서의 지식 그래프 임베딩 (Knowledge Graph Embedding) 소개
요약
텍스트에서 지식 그래프를 추출하고 엔티티를 임베딩하여 RAG의 한계를 보완하는 파이프라인 구축 방법을 소개합니다. Oxlo.ai의 OpenAI 호환 API를 활용해 구조화된 트리플 기반의 설명 가능한 답변 생성을 구현합니다.
핵심 포인트
- 지식 그래프를 활용해 벡터 RAG의 모호성 해결 및 근거 있는 답변 생성
- Oxlo.ai API를 통한 비용 예측 가능한 지식 추출 및 엔티티 임베딩
- 트리플 추출, 엔티티 임베딩, 유사도 인덱스 구축의 5단계 프로세스
- OpenAI SDK와 호환되는 인터페이스로 모델 교체 용이성 확보
우리는 원문 텍스트에서 지식 그래프 (Knowledge Graph)를 추출하고, 의미론적 검색 (Semantic Retrieval)을 위해 엔티티 (Entities)를 임베딩하며, 해당 구조화된 트리플 (Triples)을 사용하여 질문에 답변하는 파이프라인을 구축할 것입니다. 이를 통해 순수 벡터 RAG (Vector RAG)가 종종 모호하게 만드는 부분을 보완하여, 설명 가능하고 근거가 확실한 (Grounded) 응답을 얻을 수 있습니다. 우리는 모든 과정을 Oxlo.ai의 OpenAI 호환 API를 통해 실행하므로, 코드 변경 없이 모델을 교체할 수 있습니다.
필요한 사항
- Python 3.10 이상
pip install openai numpy- https://portal.oxlo.ai에서 발급받은 Oxlo.ai API 키
여기서 Oxlo.ai를 사용하는 이유는 요청당 고정된 가격 정책 덕분에, 추출 프롬프트 (Extraction Prompt)에 긴 소스 문서를 입력하더라도 비용을 예측 가능하게 유지할 수 있기 때문입니다. 자세한 내용은 https://oxlo.ai/pricing에서 확인할 수 있습니다.
1단계: 클라이언트 및 추출 프롬프트 초기화
먼저, OpenAI SDK가 Oxlo.ai를 가리키도록 설정합니다. 그런 다음 모델이 깨끗한 JSON 트리플을 출력하도록 강제하는 시스템 프롬프트 (System Prompt)를 정의합니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
SYSTEM_PROMPT = (
"You are a precise knowledge extraction engine. "
"Read the user's text and return a JSON list of triples. "
...
2단계: 원문 텍스트에서 트리플 추출
샘플 단락을 Llama 3.3 70B에 전달하고 반환된 JSON을 파싱합니다. 이것이 우리의 지식 그래프가 됩니다.
from openai import OpenAI
import json
...
3단계: Oxlo.ai를 통한 엔티티 임베딩
의미론적 검색 (Semantic Retrieval)을 가능하게 하기 위해, 동일한 OpenAI 호환 클라이언트를 통해 Oxlo.ai의 BGE-Large 모델을 사용하여 모든 고유 엔티티를 임베딩합니다.
from openai import OpenAI
import numpy as np
...
4단계: 유사도 인덱스 구축
벡터들을 행렬 (Matrix)로 쌓고, 쿼리 (Query)를 임베딩한 뒤 코사인 유사도 (Cosine Similarity)에 따라 상위 k개의 엔티티를 반환하는 리트리버 (Retriever)를 정의합니다.
from openai import OpenAI
import numpy as np
...
5단계: 자연어를 이용한 그래프 쿼리
마지막으로, 관련 트리플을 검색하여 Kimi K2.6에 입력함으로써 근거가 확실한 (Grounded) 답변을 생성합니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
실행하기 (Run it)
모든 구성 요소를 결합하여 스크립트를 실행하면 다음과 같은 출력이 생성됩니다.
Extracted triples:
[
{
...
요약 및 다음 단계 (Wrap-up and next steps)
이제 여러분은 Oxlo.ai를 통해 완전히 구동되는 작동 가능한 지식 그래프 임베딩 (Knowledge Graph Embedding) 파이프라인을 갖추게 되었습니다. 요청당 고정된 가격 책정 (flat per-request pricing) 방식은 여기서 특히 유용한데, 소스 문서가 늘어남에 따라 추출 프롬프트 (extraction prompts)가 커지더라도 호출당 비용은 일정하게 유지되기 때문입니다.
두 가지 구체적인 다음 단계는 다음과 같습니다: 메모리 용량을 넘어 확장하기 위해 트리플 (triples)과 벡터 (vectors)를 Neo4j 또는 벡터 데이터베이스 (vector database)에 영구 저장하거나, 다국어 문서를 처리하기 시작할 경우 추출 모델을 Qwen 3 32B로 교체하는 것입니다. 두 가지 변경 사항 모두 OpenAI 호환 API (OpenAI-compatible API) 덕분에 단 한 줄의 코드만으로 가능합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기