RAG와 컨텍스트 — 외부 지식을 실시간으로 AI에 연결하는 법

…

한줄 요약

RAG(Retrieval-Augmented Generation)는 AI가 모르는 정보를 외부에서 검색해 컨텍스트에 삽입하는 기술이다 — 의료 AI에서는 최신 가이드라인과 약물 정보를 실시간으로 연결하는 핵심 수단이다.

본문

AI는 왜 모든 것을 알 수 없는가

LLM은 학습 시점까지의 데이터만 안다. 이것을 학습 데이터 컷오프(knowledge cutoff)라 한다. 의료에서 이 한계는 치명적이다.

  • 2025년 발표된 새로운 당뇨 가이드라인을 2024년 학습 모델은 모른다
  • 신약 승인, 급여 기준 변경, 안전성 경고가 반영되지 않는다
  • 개별 병원의 프로토콜, 약품 목록은 애초에 학습 데이터에 없다

RAG는 이 문제를 해결하기 위해 등장했다.


RAG의 기본 구조

RAG는 세 단계로 작동한다.

1단계: 문서 색인 — 의료 가이드라인, 논문 등을 적절한 크기(200~500토큰)로 분할하고, 각 조각을 벡터로 변환하여 벡터 DB에 저장한다.

2단계: 검색 — 사용자 질문을 벡터로 변환하고, 벡터 DB에서 의미적으로 가장 유사한 문서 조각을 찾는다.

3단계: 생성 — 검색된 문서 조각을 컨텍스트에 삽입하고, AI가 이를 참조하여 답변을 생성한다.

[시스템 프롬프트] + [검색된 문서 조각들] + [사용자 질문] → AI 답변

의료 가이드라인 RAG 파이프라인

  1. 문서 수집: 대한고혈압학회 가이드라인, 약물 상호작용 DB 등을 수집한다.

  2. 전처리 및 청킹: 가이드라인의 “권고사항” 단위, 논문의 “결론” 단위로 분할한다. 청킹이 너무 크면 관련 없는 내용이 섞이고, 너무 작으면 맥락이 사라진다.

  3. 임베딩 및 저장: 각 청크를 임베딩 모델로 벡터화하여 Pinecone, ChromaDB 같은 벡터 DB에 저장한다.

  4. 검색 및 주입:

질문: "CKD 3기 고혈압 환자의 ARB 용량 조절 기준은?"
→ 벡터 검색 → 관련 가이드라인 청크 반환 → 컨텍스트 삽입 → AI 답변

벡터 DB와 임베딩의 핵심 개념

임베딩: 텍스트를 고차원 벡터(숫자 배열)로 변환하는 것. 의미가 비슷한 텍스트는 벡터 공간에서 가까이 위치한다.

"고혈압 약물 치료" → [0.12, -0.34, 0.56, ...]
"혈압 관리 약제"   → [0.11, -0.33, 0.55, ...]  ← 유사한 벡터
"당뇨 식이요법"   → [-0.45, 0.78, -0.12, ...]  ← 다른 벡터

하이브리드 검색: 벡터 검색(의미 기반)과 키워드 검색(BM25)을 결합하면 의료 용어 검색의 정확도가 올라간다. “Losartan”이라는 정확한 약물명은 키워드 검색이, “신장 기능이 떨어진 환자의 혈압약”은 벡터 검색이 더 정확하다.


한계: 검색 품질이 답변 품질을 결정한다

RAG의 가장 큰 약점은 “Garbage In, Garbage Out”이 두 번 적용된다는 것이다.

  1. 문서 품질: 잘못된 가이드라인이 DB에 있으면 잘못된 정보가 검색된다
  2. 검색 품질: 관련 없는 문서가 검색되면 AI가 엉뚱한 정보를 참조한다

의료에서 특히 위험한 실패 모드는 다음과 같다.

  • 관련 문서 미검색 → AI가 오래된 학습 데이터에 의존
  • 부분 관련 문서 검색 → AI가 맥락을 오해하고 잘못 적용
  • 상충 문서 동시 검색 → AI가 일관성 없는 답변 생성

이 한계를 인식하고, 검색 품질을 지속적으로 평가·개선해야 한다. 잘 설계된 RAG는 AI를 “최신 가이드라인을 항상 참조하는 보조 의사”로 만들 수 있고, 잘못 설계된 RAG는 “엉뚱한 참고문헌을 인용하는 무책임한 보조자”로 만든다.

핵심 정리

  • RAG는 외부 문서를 검색하여 AI 컨텍스트에 실시간으로 삽입하는 기술이다
  • 문서 색인(청킹+임베딩) → 검색(벡터 유사도) → 생성(컨텍스트 주입)의 3단계로 작동한다
  • 의료에서는 가이드라인, 약물 정보, 논문을 RAG로 연결하여 학습 컷오프를 극복한다
  • 검색 품질이 답변 품질을 결정하므로 청킹 전략과 하이브리드 검색이 중요하다

관련 글