Vectorless RAG

JunD·2026년 4월 20일

자연어처리(NLP)

목록 보기
15/15
post-thumbnail
  • RAG는 데이터로 모델을 학습(Fine-tuning)할 필요 없고, 기존 정보 변경 및 새로운 정보가 추가될 때에도 굳이 학습할 필요가 없어 리소스를 아끼고 정답 가능성도 높이는 방법 중 하나이다.

  • 오늘은 다양한 RAG 중, Vectorless RAG에 대해 알아보자!


RAG

  • 보편화된 RAG는 다음과 같은 단계를 거친다
    1. 텍스트 Split, Embed (Chunking)
    2. Top-K Documents extract By Cosine Similarity (Retrieve)
    3. Make Prompt (Use)
  • 물론 유사도를 기반으로 추출한 문서들은 애초에 전체 텍스트가 아닌, 일부 텍스트만 추출되기 때문에 할루시네이션 문제나 정답을 찾기 못하는 문제가 발생!

  • 물론 보편화된 RAG를 사용해도 거의 잘 동작하지만,

  • 모든 기술이 그렇듯, RAG도 정답으로 사용할 청크를 보다 정확하게 추출할지, 어떻게 더 경량화할지 등 발전 방법에 대해 모색한다.

    • ex) Vectorless RAG
  • 오늘은 vectorless RAG와 대표적인 알고리즘인 PageIndex에 대해 알아보자


Vectorless RAG

  • 초창기 사용하던 RAG는 전체가 아닌 분리된 즉, 텍스트를 일정한 크기로 분할하여 DB에 저장하고 쿼리(질문)과 관련된 documents를 추출하기 때문에 앞서 언급한 한계점 존재

  • 또한 벡터 DB 구성할 때 각 document는 텍스트와 이를 벡터로 변환한 임베딩도 함께 저장하는데, 임베딩 생성 비용과 저장 비용만 고려하여도 이는 상당히 많은 자원이 소모되는 문제 발생

  • Vectorless RAG는 자원 측면에서도 기존 RAG보다 훨씬 갸벼우며텍스트 구조화를 통해 맥락 손실을 방지

    • 자세한 건 각 알고리즘을 정리하며 살펴보자!

PageIndex

  • pageindex는 청크를 바라보는 시점 자체가 다르다
    • 기존 RAG는 문서(document)를 flat sequence. 즉, 전체 텍스트를 청크로 쪼갠 평면적 구성이라면,
    • Pageindex는 Tree형태로 구성하여 그래프 구조로 맥락을 유지하며 이를 Semantic skeleton tree라고 일컫는다.

Indexing

  • 먼저 전체 텍스트의 구조를 파악하여 파싱 수행
    • ex) markdown header, PDF outlines...
  • 각 노드는 타이틀, 라인 번호, 요약(summary) 등으로 구성
    • 요약은 해당 전체 텍스트를 LLM에 입력하여 생성한 요약본
    • 여기서 많은 cost가 발생하며, 비교적 가벼운 모델을 활용
  • 예시
{
  "node_id": "0011",
  "title": "Chapter 1. Deceptive Strength",
  "summary": "Covers South Asia's growth outlook, inflation trends, financial vulnerabilities, climate risks, and policy challenges...",
  "line_num": 621,
  "nodes": [
    {
      "node_id": "0012",
      "title": "Introduction",
      "summary": "Summarizes the chapter's key themes including regional growth driven by India...",
      "line_num": 625
    },
    ...
  ]
}
# Chapter 1의 내용은 "nodes"로 하위에 존재하는 것을 볼 수 있음

Retrieval

  • 인덱싱 과정을 수행한 뒤, 사용자의 질문(쿼리)가 들어오면 PageIndex는 전체 요약본 트리를 LLM에 건네고 어떤 노드에 정답이 포함되어 있는 지 질문하는 과정으로 검색을 수행

    • 기존 RAG와 달리 수학적인 유사도 계산을 수행하지 않음
  • LLM은 전체 텍스트가 아닌 요약본(summaries)만 읽고 정답의 Node ID 리스트만 반환

  • 얻은 Node ID를 기반으로 Raw data에 접근하여 원본 텍스트를 얻고, LLM에 입력하여 최종 답변 생성

💡 PageIndex 장점

  • Node 기반 검색
  • 답변에 잘리지 않은 텍스트 활용 가능
  • 동일한 맥락 다루는 텍스트 전체를 입력하기 때문에 할루시네이션문제에 강건

⚠️ PageIndex 단점

  • 인덱싱, 검색에서 모두 LLM을 사용하기 때문에 지연시간(latency) 및 cost(비용)가 큰 문제


정리

💡

  • Vectorless RAG는 청킹으로 인한 맥락 끊김, 임베딩 생성 및 저장 등 할루시네이션 방지와 자원 절약이라는 측면에서 기존 RAG보다 개선된 결과
  • 당연하지만, 벡터 기반 검색, 키워트 매칭 검색, LLM 기반 검색 등 무턱대고 사용하기 보다 데이터가 어떤 도메인을 다루는지 파악한 뒤 사용하는 게 중요
  • LLM 호출량이 많다는 점에서 과연 기존 RAG보다 효율적일까? 라는 의문이 들지만, 최근 SpecEdge처럼 로컬 환경을 동시에 사용하는 방법을 접목하거나 점차 LLM의 처리 가능한 토큰 개수 증가 및 처리 시간 감소라는 점을 고려하면 충분히 매력적인 방법이 될 수 있을 것 같다.
profile
Data Scientist & Data Analyst

0개의 댓글