GraphRAG, 색인 시점 대신 질문마다 회로 계산으로 검색하는 실험

기존 방식은 색인을 만들 때 전체 그래프를 미리 여러 커뮤니티(그룹)로 나누고 요약해 둔 뒤, 질문이 들어오면 가장 가까운 커뮤니티를 그대로 보여주는 구조다. 문제는 그 커뮤니티가 질문이 나오기 전에 이미 정해져 있어서, 질문과 절반쯤 상관없는 내용까지 딸려 오고 그만큼 컨텍스트(문맥) 공간과 비용을 낭비한다는 점이다. 이 글은 반대 방향을 시도한다. 질문 자체를 전기 회로처럼 모델링해서, 질문의 출발 개체는 +1V 전압, 목표 카테고리는 접지(0V)로 놓고, 온톨로지(개념 간 관계) 가중치를 전도도로 취급한다.

이렇게 풀면 그래프의 각 개체마다 전압 값이 나온다. 여기에 더해 '레이어 3'이라는 검색 단계를 얹는데, 인접한 노드 사이의 전류(신호)가 큰 경로부터 먼저 확장하는 빔 서치 방식이다. 신호가 흐르지 않는 막다른 길은 애초에 후보에 들지 않는다. 이 과정에서는 이 전혀 없다.

결과로 두 가지를 얻는다. 하나는 경로에서 가장 약한 구간(병목 전류)으로 점수를 매긴 순위 있는 경로들이다(영화 데이터로 예를 들면 '놀란 감독→SF 장르' 경로 중 인터스텔라 경로는 0.394, 인셉션 경로는 0.301, 다크나이트 경로는 0점). 다른 하나는 이 결과만 한 번에 걸러내는 'extract_circuit'라는 필터 기능이다.

핵심 포인트

  • 기존 는 색인 시점에 미리 그룹(커뮤니티)을 나눠두고, 질문이 오면 가장 가까운 그룹을 그대로 보여준다
  • 이 방식은 질문과 절반쯤 무관한 내용까지 컨텍스트에 끼워 넣어 비용을 낭비할 수 있다
  • 이 실험은 질문 자체를 전기 회로처럼 모델링해 개체마다 전압을 계산하고, 신호(전류)가 강한 경로부터 탐색한다
  • 탐색 과정에는 이 전혀 없어 순수 계산만으로 경로를 찾는다
  • 결과로 경로에 순위를 매기고, 가장 약한 구간 점수로 신뢰도를 표시하며, 한 번에 필터링하는 기능도 제공한다
원문 보기