전체 그래프
RAG

Graph RAG with LangChain

ai-mlrag

상위: Advanced RAG Techniques

텍스트를 독립된 청크가 아닌, 정보 간의 '관계' 를 중심으로 파악하는 RAG 기법

  • 작동방식
    1. 그래프 생성: LLM을 이용해 문서 전체를 분석하여 핵심 개체(인물, 장소, 개념 등)와 이들 간의 관계(소속, 원인, 결과 등)를 자동으로 추출하여 Knowledge Graph를 구축
    2. 그래프 검색: 사용자의 질문이 들어오면, 질문에서 핵심 개체를 파악한 뒤, Knowledge Graph에서 해당 개체와 연결된 주변 노드 및 관계들을 탐색하여 관련성 높은 하위 그래프(sub-graph)를 찾음
    3. 컨텍스트 재구성: 검색된 하위 그래프에 포함된 모든 정보(노드, 엣지)를 종합하여 하나의 풍부한 텍스트 컨텍스트로 재구성
    4. 답변 생성: 재구성된 컨텍스트를 LLM에 전달하여, 정보들 간의 관계를 바탕으로 깊이 있는 답변을 생성
  • 장점
    • 관계 추론 능력: 여러 문서나 문단에 흩어져 있는 정보를 연결하여 복잡한 관계를 추론하는 질문에 매우 강력
    • 정확성 향상: 정보가 구조화되어 있어, 모호함을 줄이고 사실에 기반한 더 정확한 답변을 제공
    • 문맥 이해 증진: 개별 정보 조각이 아닌 전체적인 관계 속에서 정보를 파악하므로, 더 깊이 있는 문맥 이해가 가능
  • 구현
    • 그래프 자동 생성: LLMGraphTransformer를 사용하여 텍스트 문서로부터 노드(개체)와 엣지(관계)를 자동으로 추출하는 로직을 구현. LLM이 텍스트를 읽고 Knowledge Graph의 구성 요소를 식별하도록 지시
    • 질의 기반 검색: 사용자의 질문을 다시 LLM에 보내 검색의 시작점이 될 핵심 개체를 추출. 그 다음, Neo4j와 같은 Graph DatabaseCypher 쿼리를 실행하여 해당 개체와 연결된 이웃 정보(neighborhood)를 가져오는 방식으로 검색을 수행.
    • 정보 통합: 검색된 그래프의 노드와 관계 데이터를 평탄한 텍스트로 변환하여, 최종 답변 생성 LLM에게 전달할 최종 컨텍스트를 구성.