RAG의 기본 구조: 검색한 문서를 답변의 근거로 연결하기
문서 준비, 검색, 문맥 구성, 답변 생성으로 나누어 검색 증강 생성의 흐름을 살펴봅니다.
왜 검색을 먼저 할까
모델이 답변에 필요한 정보를 모두 알고 있다고 가정하기는 어렵습니다. **RAG(Retrieval-Augmented Generation)**는 질문과 관련된 외부 정보를 검색한 뒤, 그 자료를 문맥에 포함해 답변 생성을 돕는 방식입니다.
검색한 내용을 모델에 전달하는 것이며, 이 과정 자체가 모델의 가중치를 다시 학습시키는 것은 아닙니다.
문서를 검색 가능한 형태로 준비하기
한 가지 구성 예시는 다음과 같습니다.
- 문서에서 필요한 텍스트와 출처를 추출합니다.
- 문서를 검색에 적합한 크기의 청크로 나눕니다.
- 청크와 출처를 검색 인덱스에 저장합니다.
검색 방식은 벡터 검색, 키워드 검색 또는 둘을 결합한 방식일 수 있습니다. 벡터 데이터베이스만이 유일한 선택지는 아닙니다.
질문에서 답변까지
사용자 질문
→ 관련 문서 검색
→ 답변에 사용할 문맥 구성
→ 질문과 문맥을 모델에 전달
→ 출처와 함께 답변 표시
이 흐름을 코드의 책임으로 나누면 검색, 문맥 구성, 생성 단계를 각각 검증하기 쉽습니다.
검색과 생성을 나누어 평가하기
검색에서 필요한 문서를 놓치면 답변에 근거가 부족해집니다. 검색이 잘되었더라도 모델이 문맥을 잘못 해석할 수 있습니다. 두 단계를 구분해서 확인해야 문제를 좁힐 수 있습니다.
| 단계 | 확인할 질문 |
|---|---|
| 검색 | 필요한 문서를 후보에서 찾았는가? |
| 문맥 구성 | 문서의 출처와 필요한 내용을 유지했는가? |
| 생성 | 답변이 제공한 자료에 근거하는가? |
| 표시 | 독자가 근거 문서를 확인할 수 있는가? |
근거가 없을 때는 부족하다고 안내하는 경로도 설계합니다. 검색 결과가 있다는 사실만으로 답변의 정확성이 보장되지는 않습니다.