LAB ONLINEFocus Computer Vision / ML / Animal Behavior
Project Detail
HybridRAG – 벡터 + 그래프 기반 복합 질의 해결 RAG 시스템
벡터 기반 검색과 그래프 기반 검색을 결합한 하이브리드 검색 구조가, 단일 검색 방식보다 더 정확하고 관련도 높은 응답을 생성할 수 있는가
Archived
Group
ml
Domain
Stack
llama, Python, Ollama, OpenAI API, RAG
Roles
💾 Back End, 🛠️ ML Engineer, 🔢 Data Analyst Modeling
Output
🧠 ML
Untitled
트랙 : Ⅱ. Research Reproduction Track
선정 논문
[Main] Hybrid RAG: 벡터 유사도 기반 탐색을 통해 증강 된 그래프 검색 및 생성S. Cha, K. Seo, and D. Kim, “Hybrid RAG: Enhancing Graph Retrieval-Augmented Generation through Vector Similarity-based Search,” in 2024 Korean Institute of Broadcast and Media Engineers Fall Conference, 2024.Source: author’s Notion note
[Sub] HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information ExtractionB. Sarmah, B. Hall, R. Rao, S. Patel, S. Pasquali, and D. Mehta, “HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information Extraction,” arXiv preprint arXiv:2408.04948v1, Aug. 2024.
연구 문제 정의
RAG는 대개 두가지 방식으로 나눌 수 있다 Vector DB를 활용한 Vector RAG와 Graph DB를 활용한 Graph RAG.
Vector RAG : 임베딩 공간에서 질문과 문서 청크 간의 유사도를 계산하여 관련 정보를 검색하는 방식
Graph RAG : 지식 그래프와 같은 구조화된 데이터베이스를 활용하여 개체 간의 관계와 논리적 추론을 가능하게 하는 방식
| --- | --- | --- |
| 종류 | 장점 | 한계점 |
| Vector RAG | 대량의 비구조화된 텍스트 데이터에서 문맥적 유사성을 잘 포착할 수 있다 | 글로벌 질문이나 다단계 추론에 대해서는 한계를 보인다 (여러 개체 간의 상호 관계나 문서 전반에 걸친 분석이 필요한 경우) |
| Graph RAG | 복잡한 관계를 이해하고 추론할 수 있다 | 검색을 위해 사용자의 요청으로부터 정확한 쿼리를 작성하는데 제약이 있다 |
논문 핵심 아이디어 요약
둘을 합치면 성능이 더 나오지 않을까? → 벡터 기반의 유사도를 그래프 데이터베이스 검색 프로세스에 적용한 Hybrid RAG 모델→ Hybrid RAG 는 벡터 기반의 유사도 검색과 그래프 기반의 관계 추론을 통합하여, 복잡한 질문에 대한 보다 정확한 검색 및 답변이 가능할 것으로 기대→ 벡터 검색과 그래프 검색을 마지막에 단순 결합하는 것이 아니라, 그래프 탐색의 시작점 선정 자체에 벡터 유사도를 활용한다
Reproduction 계획
구현 범위 (Implementation Scope)HybridRAG 시스템을 구축하기 위해 개발해야 할 기능적 단계들입니다.
지식 추출 및 그래프 구축 (Graph Construction):
PDF 문서를 청크(Chunk) 단위로 분할하는 로직을 구현합니다.
LLM을 이용해 각 청크에서 개체(Entity)와 관계(Relation)를 추출하여 트리플(Ns,R,Nt)을 생성하는 모듈을 개발합니다.
각 노드에 해당 텍스트의 벡터 임베딩을 속성(Property)으로 저장하는 기능을 구현합니다.
벡터 유사도 기반 탐색 (Retrieval):
사용자의 질문을 벡터로 변환하는 기능을 구현합니다.
질문 벡터와 그래프 노드 벡터 간의 유사도를 계산하여 탐색을 시작할 ‘상위 K개 노드’를 선정하는 알고리즘을 코딩합니다.
선정된 노드로부터 인접한 정보를 가져오기 위한 그래프 탐색(DFS 등) 로직을 구현합니다.
답변 생성 파이프라인 (Generation):
검색된 그래프 컨텍스트를 LLM이 이해할 수 있는 텍스트 형태로 변환(Decoding)하는 모듈을 만듭니다.
최종적으로 질문과 컨텍스트를 결합하여 답변을 생성하는 프롬프트 체인을 구축합니다.
Source: author’s Notion note
실험 구성 (Experimental Setup)개발된 시스템의 객관적인 성능을 측정하기 위한 실험 환경 정의입니다.
기술적 설정 (Technical Settings):
사용 언어 및 프레임워크: Python, LangChain
사용 모델: GPT-3.5-Turbo (LLM), text-embedding-ada-002 (Embedding).
문맥 정밀도 (Context Precision) → 상위 검색 결과 중 관련 있는 문맥이 얼마나 정확하게 포함되었는지 평가Total num of relevant items in the top K results∑k=1KPrecision@k×vk
문맥 재현율 (Context Recall) → 전체 정답 문맥 중 얼마나 많이 검색해냈는지 평가∣Total number of reference contexts∣∣Number of relevant contexts retrieved∣
신뢰도 (Faithfulness) → 생성된 답변의 주장 중 근거 문맥으로 뒷받침되는 비율 평가∣Total number of claims in the generated answer∣∣Number of supported claims in the generated answer∣
답변 관련도 (Answer Relevancy) → 생성된 답변이 질문과 의미적으로 얼마나 관련 있는지 평가N1∑i=1Ncos(Egi,Eo)
답변 정확도 (Answer Correctness) → 생성된 답변이 정답과 얼마나 정확하게 일치하는지 평가∣TP∣+0.5×(∣FP∣+∣FN∣)∣TP∣
답변 유사도 (Answer Similarity) → 생성된 답변과 참조 정답이 의미적으로 얼마나 유사한지 평가ai⋅gi
비교군 (Baselines):
기존 Vector RAG: 단순 벡터 유사도 검색 방식.
기존 Graph RAG: Cypher 쿼리 등을 이용한 그래프 검색 방식.
Vector + Graph RAG (Concatenate/Summarize): 두 검색 결과를 단순히 합치거나 요약하는 방식.
HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information Extraction https://arxiv.org/pdf/2408.04948