정의
검색 증강 생성(RAG)은 시스템이 먼저 문서 모음에서 관련 구절을 찾아 질문과 함께 LLM에 건네, 답변이 그 텍스트에 근거하게 하는 방법입니다.
검색 증강 생성의 작동 방식
이 용어는 2020년 Lewis 등의 논문에서 나왔습니다. 사전 학습된 시퀀스 투 시퀀스 모델과 위키백과 구절의 검색 가능한 색인을 결합한 것이었습니다. 신경망 검색기가 입력에 관련된 구절을 가져오고, 생성기가 그것을 이용해 출력을 만들었습니다. 이 발상은 그 특정 설계보다 오래되고 넓으며, 지금은 이 이름이 많은 시스템을 가리킵니다.
전형적인 형태에는 네 단계가 있습니다.
- 색인. 문서를 구절로 나누어 검색 가능한 색인에 저장합니다. 단어뿐 아니라 의미로도 검색되도록 흔히 숫자 임베딩을 씁니다.
- 검색. 사용자의 질문을 쿼리로 바꾸고 가장 가까운 구절을 돌려줍니다.
- 증강. 그 구절들을 질문과 지시문 옆에 LLM의 입력으로 넣습니다.
- 생성. 모델이 가능하면 구절이 말하는 내용만 이용해 답변을 씁니다.
이점은 모델을 다시 학습시키지 않고 문서만 바꿔도 시스템이 아는 것을 바꿀 수 있다는 것입니다. 지식 베이스는 이런 시스템이 검색하는 문서 모음입니다.
검색이 정답을 보장하지는 않습니다. 검색이 엉뚱한 구절이나 아무것도 돌려주지 않을 수 있고, 구절들이 서로 모순될 수 있으며, 모델이 구절에 없는 내용을 덧붙일 수도 있습니다. 검색은 환각을 줄이지만 없애지는 못합니다.
음성 에이전트에게 중요한 이유
통화에서는 검색이 발신자가 기다리는 동안 일어납니다. 검색과 더 길어진 입력은 음성 지연에 더해지므로, 팀은 구절을 짧게 유지하고, 가져오는 수를 제한하며, 질문이 필요로 할 때만 검색하기도 합니다.
쿼리의 출발점도 음성 전사입니다. 잘못 들은 제품명이나 끝나지 않은 문장 때문에 검색이 엉뚱한 곳으로 갈 수 있습니다. 검색 전에 질문을 다시 쓰고 인식기에 예상 용어 목록을 주는 것이 둘 다 도움이 됩니다.
출력은 읽히는 것이 아니라 들립니다. 발신자는 출처 목록이나 긴 발췌문을 볼 수 없으므로, 에이전트는 가져온 텍스트를 한두 문장의 구어체로 바꾸고 관련된 것을 찾지 못했을 때는 분명히 그렇게 말해야 합니다.
예시
클리닉 전화 회선의 설명용 검색 사례입니다.
- 발신자: “토요일에 예약 없이도 진료하나요?”
- 가져온 구절: “토요일 진료 시간은 9시부터 1시까지이며 예약제로만 운영합니다.”
- 에이전트: “토요일은 예약제로만 9시부터 1시까지 운영합니다. 예약해 드릴까요?”