본문 바로가기

AI

[ LLM/RAG ] Graph RAG와 Basic RAG의 차이점

업계가 변경되고 나서 LLM or sLLM에 대해서 공부를 더 하게 된다.
내가 있는 곳은 현재 RAG를 통한 콘텐츠의 생산성의 정확도를 높이기 위한 전략을 취한다.
물론 환각 최소화 방안이기도 하다.

 

아래의 내용은 2개의 논문을 바탕으로 나름대로 내용을 각색해봤다.

GRAG: Graph Retrieval-Augmented Generation

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

※ 이 글에서 Basic RAG는 작성자가 임의로 작성한 글임을 알린다.

 

이번 2025 코엑스 Generative LLM/sLLM에서도 모두가 RAG를 언급한다.

한국에서는 아쉽게도 하나의 창만 있다.

나는 개발자는 아니다. 그냥 Dream or Viewer or Exploer라고 할 수 있다.

 

 

 

RAG에 간단히 설명하면

elastric

사용자가 질문을 넣으면 그 질문에 보강 데이터를 내 PC 또는 DB, 문서를 찾아낸다.
그리고 그것을 Prompt 에 추가하여 질문에 내용을 더 강화시켜 LLM에게 문의를 하는 것이다.

 

 

그렇다면 Graph Rag와 Basic RAG의 차이는 무엇일까?

Basic RAG는

1. 쿼리 문서 간의 벡터 유사도 계산

2. 독립적인 텍스트 청크(약 100 단어정도) 검색

3. TOP-k 방식으로 가장 관련성 노ㅠ응 청크들 선별

4. 이 정보를 LLM에 콘텍스트로 제공

 

Graph RAG는

1. 쿼리와 관련된 중요 노드들(activated nodes) 식별

2. 해당 노들간의 관계(edge) 고려

3. 중요 노드를 중심으로 하는 k-hop ego grah(subgrap) 추출

4. 의미적 관련성과 구조적 연결성 모두 고려

5. soft pruning 적용하여 관련성 낮은 node/edge 영향 최소화

6. 이 정보를 LLM에 콘텍스트로 제공

 

 

상세 차이 이야기

Basic RAG의 개별적 단위

청크(Chunk): 대부분의 RAG 시스템에서는 긴 문서를 수백 단어 정도의 더 작은 청크로 나누어 저장.
이러한 청크가 가장 일반적인 "개별적 단위"라 칭함

- 문서 조각: 원본 문서에서 의미적으로 독립된 부분(예: 단락, 섹션, 페이지)
- 완전한 문서: 짧은 문서의 경우 전체 문서가 하나의 단위
- 데이터베이스 레코드: 구조화된 데이터의 경우 데이터베이스의 행이나 레코드가 단위

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 내용중

 

1. 검색은 "Maximum Inner Product Search(MIPS)"를 통해 수행
2. 쿼리 벡터 q(x)와 문서 벡터 d(z) 간의 내적값(cosine 유사도)을 기준으로 문서를 검색
3. 각 문서는 다른 문서와의 관계성 없이 독립적으로 순위 적용

 

반면, Graph RAG는?

분할 정복(Divide-and-Conquer) 전략 활용

1. 분할(Divide) 단계
최적의 서브그래프를 직접 찾는 대신, 중요 노드들을 중심으로 한 에고 그래프들을 찾는 문제로 재구성

2. 정복(Conquer) 단계
각 중요 노드를 독립적으로 평가하여 그 노드의 K-hop 에고 그래프의 가치를 계산

3. 결합(Combine) 단계
- 검색된 각 에고 그래프들을 병합
- 소프트 프루닝(soft pruning) 메커니즘을 적용하여 관련성이 낮은 노드와 엣지의 영향 최소화



서브그래프

선택된 노드들(Nodes): 문서나 정보 조각을 나타내는 점들
해당 노드 간의 연결(Edges): 노드 간의 관계를 나타내는 연결선
그 구조 내의 위상 정보(Topology): 노드들이 어떻게 서로 연결되어 있는지에 대한 정보

 

결론

결국, 여기서의 큰 차이는 더 의미있는 정보(관계성)를 LLM/sLLM에 제공하자 이다.
이제 자신에게 맞는 정보를 출력하게 만드는 게 더 의미있어지고 있다.

여기서부터는 숫자(기술) 싸움이다.