중급읽는 시간 8분·

RAG로 지식베이스 Q&A 시스템 만들기

LLM은 여러분의 비공개·최신 자료를 모르고 환각을 일으키기 쉽습니다. RAG(검색 증강 생성)는 "먼저 검색하고, 그다음 생성한다"는 방식으로 신뢰할 수 있는 지식베이스에 근거해 답하게 합니다. 오늘날 가장 실용적인 프로덕션 방식 중 하나입니다.

작성자AI Resource Hub

RAG가 필요한 이유

모델을 직접 파인튜닝해 지식을 주입하는 방식은 비싸고 갱신이 느립니다. RAG는 지식을 외부 데이터베이스에 두고 필요할 때 관련 조각을 검색해 모델에 전달합니다. 저렴하고 항상 최신입니다.

파이프라인 개요

전형적인 RAG 시스템은 두 단계로 나뉩니다. 문서를 검색 가능한 벡터로 가공하는 오프라인 "인덱싱 단계"와, 사용자 질문을 바탕으로 검색해 답을 생성하는 온라인 "질의 단계"입니다.

문서 청킹과 임베딩

먼저 문서를 적절한 크기의 청크로 나눕니다. 너무 크면 검색이 부정확해지고, 너무 작으면 맥락을 잃습니다. 보통 수백 토큰 정도에 약간의 겹침을 두는 방식을 씁니다.

그다음 임베딩 모델로 각 청크를 벡터로 바꿔 벡터 데이터베이스(pgvector, Milvus, Qdrant 등)에 저장합니다.

벡터 검색과 Top-K

사용자가 질문하면 그 질문도 벡터로 바꾸고, 데이터베이스에서 유사도 검색을 실행해 가장 관련 있는 청크(Top-K)를 가져옵니다.

키워드 검색을 결합해 "하이브리드 검색"을 구성하고, 리랭킹으로 재현율 품질을 한층 더 끌어올릴 수 있습니다.

컨텍스트 구성과 답변 생성

검색된 청크를 프롬프트에 넣고, 모델에게 "제공된 자료만을 근거로 답하고, 자료에 답이 없으면 분명히 밝혀라"라고 지시하세요. 환각이 크게 줄어듭니다.

고급 최적화로는 질의 재작성, 출처 인용, 컨텍스트 길이 제어, 검색 결과의 중복 제거와 필터링 등이 있습니다.

벡터 데이터베이스 선택하기

벡터 데이터베이스는 RAG의 핵심입니다. 프로토타입에는 설정 없이 메모리에서 실행되는 Chroma가 적합합니다. 프로덕션 작업 부하에는 Rust 기반 Qdrant와 완전 관리형 Pinecone이 최고의 성능과 확장성을 제공합니다. 이미 PostgreSQL을 쓴다면 pgvector로 새 인프라 추가를 피할 수 있고, 내장 벡터화 모듈과 GraphQL API가 필요할 때 Weaviate가 빛납니다.

RAG 품질 평가하기

RAG 시스템은 검색과 생성 둘 다만큼 좋습니다. 검색은 Recall@K(올바른 청크가 Top-K 결과에 나오는가)로 측정하고, 생성은 충실도(답변이 검색된 컨텍스트에 근거하는가)와 관련성(실제로 질문에 답하는가)으로 측정합니다. RAGAS 같은 프레임워크가 이 지표들을 자동화해 주므로, 청킹 전략·임베딩 모델·프롬프트 템플릿을 반복하면서 품질을 추적할 수 있습니다.

RAG벡터 데이터베이스임베딩지식베이스

관련 튜토리얼