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 파이프라인
-
문서 수집: 대한고혈압학회 가이드라인, 약물 상호작용 DB 등을 수집한다.
-
전처리 및 청킹: 가이드라인의 “권고사항” 단위, 논문의 “결론” 단위로 분할한다. 청킹이 너무 크면 관련 없는 내용이 섞이고, 너무 작으면 맥락이 사라진다.
-
임베딩 및 저장: 각 청크를 임베딩 모델로 벡터화하여 Pinecone, ChromaDB 같은 벡터 DB에 저장한다.
-
검색 및 주입:
질문: "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”이 두 번 적용된다는 것이다.
- 문서 품질: 잘못된 가이드라인이 DB에 있으면 잘못된 정보가 검색된다
- 검색 품질: 관련 없는 문서가 검색되면 AI가 엉뚱한 정보를 참조한다
의료에서 특히 위험한 실패 모드는 다음과 같다.
- 관련 문서 미검색 → AI가 오래된 학습 데이터에 의존
- 부분 관련 문서 검색 → AI가 맥락을 오해하고 잘못 적용
- 상충 문서 동시 검색 → AI가 일관성 없는 답변 생성
이 한계를 인식하고, 검색 품질을 지속적으로 평가·개선해야 한다. 잘 설계된 RAG는 AI를 “최신 가이드라인을 항상 참조하는 보조 의사”로 만들 수 있고, 잘못 설계된 RAG는 “엉뚱한 참고문헌을 인용하는 무책임한 보조자”로 만든다.
핵심 정리
- RAG는 외부 문서를 검색하여 AI 컨텍스트에 실시간으로 삽입하는 기술이다
- 문서 색인(청킹+임베딩) → 검색(벡터 유사도) → 생성(컨텍스트 주입)의 3단계로 작동한다
- 의료에서는 가이드라인, 약물 정보, 논문을 RAG로 연결하여 학습 컷오프를 극복한다
- 검색 품질이 답변 품질을 결정하므로 청킹 전략과 하이브리드 검색이 중요하다