RAG 관련 용어 정리

wldbs._.·2025년 7월 17일

RAG

목록 보기
1/22
post-thumbnail

생성형 AI 데이터 사이언티스트 직무를 시작하게 되었다.
모르는 용어나 기술이 대부분이라 많이 어렵고 힘든 것 같다.

그래도 천천히, 차근차근 혼자서라도 공부하고 정리해가다보면 괜찮지 않을까?

이 글은 내가 다른 분들이 활발하게 소통을 하는 걸 지켜보며
(난 그 당시에는 아무것도 이해를 하지 못해 듣기만 하고,, 망했다는 생각이 들어서 멘붕상태였다 🤔)
조용히 필기해두어 구글링과 리서치를 진행하여 정리해둔 것이다.


입문

내가 생각한 DS와는 많이 달랐다
그래서 되게 혼란스럽고 어려워서 버틸 수 있을까 하는 의문이 계속 든다
그래도 어떡해 해야지,,

그래서 둘째날부터 구글링을 하며 해당 페이지들은 다 저장해두고 따로 노션에 기록을 해두었다


이런 형식으로 이해하고 접근하기 쉽게 정리해두었다..
갈수록 많아져서 .. 많이 걱정된다
그래도 할 수 있지 않을까

작년 sw 개발 직무 인턴도 초반에는 정말 어렵고 힘들어서 포기하고 싶었지만
꾸준히 공부하고 정리하는 습관을 통해 프로젝트를 잘 마무리할 수 있었으니까..!

이 글은 내가 핵심 부분 정리만 붙여놓고, 다음부터는 깔끔하게 전문적으로 작성해보고 싶다


용어 정리

1분할

1. CoT

👌 (사고 중..) → CoT(Chain of Thought): 답변 전에 사고를 하고 답변한다 → 성능 올라간다

  • 복잡한 작업을 최종 해결을 향한 일련의 논리적 단계로 세분화하여
  • → 인간과 유사한 추론 과정을 시뮬레이션

2. Embedding

👌 임베딩은 텍스트만 가능하다

  • 임베딩: 데이터를 기계 학습 모델이 처리할 수 있는 숫자 벡터로 변환 하는 것
    • 이 벡터는 데이터의 의미적 특징을 내포하고 있어,
    • → 유사한 데이터끼리는 벡터 공간에서 가까운 위치에, 다른 데이터는 멀리 떨어지게 된다
  • 이미지는 임베딩 불가능 → 위치만 안다 → 메타 데이터로 위치 넣기 ⇒ 이미지에 대한 경로 언급

3. Parsing

👌 파싱: 데이터 소스에서 관련 정보를 추출하고 쉽게 분석할 수 있는 구조화된 형식으로 변환

  • 특정 형식으로 된 데이터를 읽고 분석하여
    • ⇒ 변환된 데이터에서 특정 정보를 추출하고 더 사용하기 쉬운 형태로 변환

4. Chunking

👌 청킹: 대용량의 데이터를 더 작은 단위로 나누는 과정

  • 청킹을 통해 데이터를 적절한 크기로 나누어, 모델이 원활하게 데이터를 처리
  • 각 청크는 모델이 한 번에 처리할 수 있는 크기 이내 → 처리 속도 향상 & 응답 시간 단축

4-1. Token

  • 👌 토큰은 문장 또는 텍스트를 작은 단위로 나눈 것
  • 👌 청크토큰의 그룹 이며, 문장에서 의미 있는 단위를 나타내는 경우가 많음

5. RAG (Retrieval-Augmented Generation)

👌 RAG: “검색 기반 생성” 방식의 AI 아키텍처로, 단순히 모델이 모든 답을 기억하거나 생성하는 게 아니라, 외부 지식(문서, DB 등)을 검색 해서 활용한 후, 그 결과를 바탕으로 응답을 생성하는 방법

  • 전통적인 RAG 방식은 정보를 인코딩할 때 문맥을 제거 하여 관련 정보를 제대로 검색하지 못하는 문제

5-1. Contextual Retrieval

👌 Contextual Retrieval은 위 문제를 해결하기 위한 방법으로, 두 가지 기술을 사용

  1. Contextual Embeddings: 각 텍스트 조각(chunk)에 문맥 정보를 추가 하여 임베딩
  2. Contextual BM25: BM25 검색 기법에 문맥 정보를 반영

5-2. BM25

👌 BM25: 주어진 쿼리에 대해 문서와의 연관성을 평가 하는 랭킹 함수 알고리즘

  1. 문서의 길이와 단어 빈도를 고려하여 관련성을 판단
  2. Bag-of-words 개념을 사용하여 쿼리에 있는 용어가 각각의 문서에 얼마나 자주 등장하는 지를 평가

5-3. BoW (Bag of Words)

👌 BoW: 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency) 에만 집중하는 텍스트 데이터의 수치화 표현 방법

BoW를 만드는 과정을 두 가지 과정으로 생각해보자

  • (1) 각 단어에 고유한 정수 인덱스를 부여 # 단어 집합 생성.
  • (2) 각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터 생성

2분할

6. ChromaDB

chromadb: 벡터 데이터베이스

  • 벡터 DB는 벡터 형태의 데이터를 저장하고 유사성 을 기반으로 검색하는 데에 특화
  • 여려 형태의 데이터를 벡터로 변환하는 것을 임베딩이라고 하며, 이때 임베딩 모델을 이용

7. LangGraph

Langgraph: 대규모 언어 모델(LLM)을 활용한 복잡한 워크플로우와 의사결정 프로세스를 구현하기 위한 파이썬 프레임워크

8. RAGAS

RAGAS:  RAG 파이프라인의 정량적 평가 를 지원하는 오픈 소스 프레임워크

  • Faithfulness(충실성): 답변이 컨텍스트에 기반하여 정확한 정보를 제공하는지
  • Answer Relevancy(답변 관련성): 질문에 대한 명확하고 적절한 답변을 제공하는지
  • Context Precision(컨텍스트 정밀도): 검색된 정보의 정확도
  • Context Recall(컨텍스트 재현율): 필요한 정보를 얼마나 잘 찾아내는지

9. GraphDB

성능 높이기 위해 graphDB

  • GraphDB: 데이터를 노드(node)와 엣지(edge) 로 표현하는 데이터베이스
  • 내부에서 semantic으로 더 연결

10. Streamlit

streamlit: Python 스크립트를 통해 데이터 시각화, 대화형 웹 애플리케이션, 대시보드 등을 손쉽게 만들 수 있음


갑자기 든 의문점 (해결: ChatGPT)

Q. contextual retrieval은 어떻게 청크에 문맥 정보를 추가하는 거야?

A. Contextual Retrieval에서 말하는 문맥 정보 추가는, 각 청크(chunk)를 벡터화하기 전에 그 청크가 어디서 왔는지, 어떤 의미를 갖는지를 알려주는 배경정보 (context)를 같이 붙여서 벡터화하는 걸 말합니다.

✅ 왜 문맥(Context)이 중요한가?

예를 들어, 다음과 같은 청크가 있다고 해볼게요:

"15일의 연차가 제공됩니다."

이 문장은 혼자 있으면 무슨 말인지 모호합니다.
하지만 아래처럼 문맥이 같이 주어지면, 의미가 명확해지죠:

[출처: 인사 규정 2장 연차 규정]
"15일의 연차가 제공됩니다."

→ 이 문서를 임베딩할 때, 이 문맥 정보까지 포함해서 벡터화하면 질문-응답 일치율이 훨씬 올라갑니다.

✅ Contextual Retrieval에서 문맥 정보를 어떻게 추가하나요?

🎯 핵심:
청크를 단독으로 임베딩하지 않고, 주변 정보(제목, 섹션, 문서 경로 등)를 같이 붙여서 임베딩

🔧 예시: 청크에 문맥 추가 방식

💡 기본 방식 (문맥 없음)

chunk = "15일의 연차가 제공됩니다."

✅ Context 포함 방식

context = "출처: 인사규정 > 연차정책\n"
chunk_with_context = context + chunk

→ 이 chunk_with_context를 임베딩하면 더 의미 있는 벡터가 만들어집니다.

## 코드 예시
title = "인사 규정"
section = "2장 연차 정책"
text_chunk = "15일의 연차가 제공됩니다."

chunk_with_context = f"{title} / {section}\n{text_chunk}"
embedding = model.encode(chunk_with_context)
문맥 정보 종류예시
문서 제목“인사 규정”
섹션 제목“2. 연차 정책”
상위 본문“회사 내 모든 직원은…”
문서 경로 / URLhr_docs/policies/annual_leave.md
생성 일자 / 작성자"작성자: HR팀 (2023)"
사용자 타입"대상: 정규직 직원"

🧠 왜 이게 중요한가?

같은 내용이라도 문맥이 다르면 벡터 의미가 달라짐

  • 검색할 때 질문과 더 정확히 매칭 가능
  • "hallucination" 줄이고, 정확한 답변 가능
    - hallucination(환각): LLM과 같은 생성형 AI가 사실이 아닌 정보를 생성하거나, 자신이 학습한 데이터에 존재하지 않는 내용을 만들어내는 것
항목설명
Contextual Retrieval문서 청크에 주변 문맥을 함께 포함시켜 벡터화하는 기법
목적문맥을 알면 더 정밀한 검색 가능
방법제목, 섹션, 경로 등 메타데이터를 청크 앞에 붙여서 임베딩
효과검색 정확도 ↑, LLM 응답 품질 ↑
profile
공부 기록용 24.08.05~ #LLM #RAG

0개의 댓글