질의응답(RAG)으로 데이터 위에서 답하기

질의응답(RAG)으로 데이터 위에서 답하기

LLM의 가장 흔한 유스 케이스 중 하나는 어떤 데이터 집합에 대해 질문에 답하는 거예요. 그 데이터는 대개 PDF나 HTML 같은 비정형 문서 형태지만, 반구조화·구조화 데이터일 수도 있어요.

LLM으로 질의응답을 구현하는 주된 프레임워크가 바로 검색 증강 생성(Retrieval Augmented Generation, RAG)이에요. LlamaIndex는 단순한 수준부터 고급 수준까지 다양한 RAG 기법을 제공해서, 데이터의 양과 형태에 따라 단순하거나 복잡한 질문을 처리할 수 있게 해줘요. 미리 만들어 둔 RAG 추상화(예: query engines)를 쓰거나, 커스텀 RAG workflows를 직접 만들 수도 있어요.

비정형 문서 위의 RAG

LlamaIndex는 비정형 텍스트, PDF, Notion·Slack 문서 등을 가져와 그 안의 데이터를 인덱싱해요.

가장 단순한 질문은 크게 두 갈래로 나뉘어요.

  • 시맨틱 검색(Semantic search) — 문서에서 특정 정보를 찾는 질문으로, 질문의 단어나 의미적 의도와 일치하는 내용을 찾아요. 보통 단순 벡터 검색(top-k)으로 처리해요.
  • 요약(Summarization) — 방대한 데이터를 현재 질문에 맞는 짧은 요약으로 압축해요.

구조화 데이터 위의 QA

데이터가 이미 SQL 데이터베이스, CSV 파일, 또는 다른 구조화 형식으로 존재한다면 LlamaIndex는 그 소스에서도 질의할 수 있어요. 여기에는 내추럴 랭귀지를 SQL 연산으로 바꾸는 text-to-SQL과, Pandas 연산으로 바꾸는 text-to-Pandas가 포함돼요.

고급 QA 토픽

더 복잡한 질문·더 많은 데이터로 규모를 키울수록, 쿼리 이해·검색·데이터 소스 통합을 돕는 여러 기법이 LlamaIndex에 준비돼 있어요.

  • 복잡한 문서 질의 — PDF 안에 텍스트, 표, 차트, 이미지, 머리글·바닥글 등이 섞여 있으면 문서 표현이 복잡해지죠. LlamaIndex는 자체 문서 파서인 LlamaParse와 통합된 고급 인덱싱·검색을 제공해요.
  • 여러 소스 결합 — 데이터 일부가 Slack에, 일부가 PDF에, 일부가 비정형 텍스트에 흩어져 있다면, LlamaIndex는 임의 개수의 소스에 걸친 질의를 결합할 수 있어요.
  • 여러 소스 라우팅 — 데이터 소스가 여러 개일 때, 애플리케이션이 먼저 가장 좋은 소스를 고르고 그 소스로 질문을 '라우팅'할 수 있어요.
  • 멀티 문서 질의 — 어떤 질문은 답이 여러 데이터 소스에 일부씩 나뉘어 있어서, 각각 따로 질의한 뒤 결과를 합쳐야 해요.

더 알아보기

RAG 개념을 처음 접한다면 'Introduction to RAG' 이해 섹션에서 다섯 단계(로딩·인덱싱·스토어·쿼리·평가)를 먼저 잡고 오는 걸 추천해요. 실제 패턴 코드는 'Q&A patterns' 페이지에서 시맨틱 검색부터 멀티 문서 질의까지 예시로 확인할 수 있어요.