🧑🏻💻 Ep.26 | 컨텍스트가 모델보다 중요한 순간
월요일 오전, 고객센터에서 메시지가 왔습니다. AI가 “개봉한 상품도 14일 안에는 반품할 수 있다”고 안내했다는 내용이었어요. 지난 금요일에 바뀐 정책은 정반대였습니다.
팀은 모델부터 의심했습니다. 프롬프트가 짧았나, 더 큰 모델을 써야 하나. 그런데 AI가 인용한 링크를 열어보니 문장은 정확했습니다. 문제는 그 문서가 지난달 고객센터 매뉴얼이었다는 겁니다. 새 정책은 사내 위키에만 올라왔고 검색 인덱스에는 아직 들어오지 않았습니다.
AI는 주어진 자료를 제법 충실하게 읽었습니다. 우리가 틀린 책을 펴줬던 거죠.
모델이 답을 쓰더라도, 어떤 사실을 읽게 할지는 제품이 결정합니다.
※ 이 글의 장면과 시간은 여러 운영 패턴을 합성한 가상 사례입니다.
1. “문서를 연결했다” 뒤에 숨은 일
AI에게 사내 문서를 검색하게 하면 회사 일을 이해하는 것처럼 보입니다. 실제로는 여러 단계가 이어집니다.
원본에서 문서를 가져오고, 읽을 수 있는 크기로 나누고, 검색용 인덱스를 만들고, 사용자의 질문과 가까운 조각을 고르고, 그 조각을 모델에게 보냅니다. 어느 한 단계에서 오래되거나 엉뚱한 자료가 들어가면 마지막 문장도 틀어집니다.
백엔드에서 캐시 문제를 잡을 때를 떠올리면 비슷합니다. DB 값은 맞는데 캐시가 오래됐을 수 있고, 캐시는 갱신됐는데 다른 리전에는 전파되지 않았을 수 있습니다. “DB는 정상입니다”로 조사를 끝내지 않듯, “원본 문서는 수정됐습니다”만으로 AI의 최신성을 증명할 수 없습니다.
그래서 답변 하나를 볼 때도 경로를 거슬러 올라갈 수 있어야 합니다. 어느 원본의 몇 번째 버전을 언제 가져왔고, 검색 결과로 어떤 구간이 선택됐는지 말이죠.
2. 세 문서가 모두 맞다고 말할 때
조사하면서 더 곤란한 사실을 발견했습니다. 반품 규정이 세 곳에 있었어요.
✔️ 정책팀의 공식 규정: 개봉 후 단순 변심 반품 불가
✔️ 고객센터 매뉴얼: 14일 내 반품 가능
✔️ 지난 분기 프로모션 공지: 일부 상품은 30일 내 가능
검색 관점에서는 세 문서가 모두 “반품”과 가깝습니다. 모델에게 셋을 한꺼번에 주면 조건을 섞어 그럴듯한 네 번째 정책을 만들 수도 있습니다.
이때 필요한 건 검색 정확도 튜닝보다 먼저 누가 사실을 정하는가에 대한 합의입니다. 법적·정책적 기준이 되는 원본, 현장 설명을 보완하는 문서, 특정 기간에만 유효한 공지를 구분해야 합니다. 유효 기간과 적용 상품도 데이터로 남기고요.
공식 원본끼리 충돌하면 AI에게 더 자연스러운 쪽을 고르게 하지 않습니다. 답을 멈추고 정책 담당자에게 알리는 게 맞습니다. 문서 충돌은 모델이 풀 퀴즈가 아니라 조직이 해결할 결함이기 때문입니다.
💡 검색 결과가 많아질수록 답이 좋아지는 게 아닙니다. 무엇을 믿어야 하는지가 분명해져야 좋아집니다.
3. 최신성에는 시간이 들어간다
정책팀이 문서를 고친 시각은 금요일 오후 4시 12분이었습니다. 수집 작업은 매일 새벽 한 번 돌았고, 그날은 인덱싱 오류까지 겹쳤습니다. 월요일 오전에도 AI는 목요일의 세계를 보고 있었어요.
“항상 최신 정보를 제공합니다”라는 문장은 그래서 위험합니다. 실제 시스템에는 지연이 있습니다. 원본 수정, 수집, 인덱싱, 검색 반영 사이에 걸리는 시간을 측정해야 합니다.
정책처럼 몇 시간의 지연도 문제가 되는 자료라면 선택지가 있습니다. 변경 이벤트가 오면 바로 갱신하거나, 새 버전 반영 전에는 해당 주제의 자동 답변을 막거나, 답변에 기준 시각을 보여주는 식입니다.
어떤 방식을 택하든 얼마나 오래된 정보까지 허용할지가 먼저입니다. 이 기준이 없으면 오래된 답은 우연한 장애가 아니라 시스템이 허용한 정상 동작이 됩니다.
4. 검색 실패를 말로 메우지 않게
검색 결과가 없을 때가 있습니다. 사용자가 없는 정책을 물었거나, 인덱스가 깨졌거나, 권한 때문에 문서를 볼 수 없는 경우입니다.
사람은 자료가 없으면 “확인해볼게요”라고 말합니다. 모델은 빈칸을 일반 지식으로 메우는 데 익숙합니다. 그 문장이 맞을 때도 있어서 더 위험하고요.
제품은 검색 결과가 없다는 사실을 모델 밖에서도 알아야 합니다. 근거 문서가 0개이거나 최신성 기준을 넘겼다면, 답을 생성하더라도 정책 안내로 전송하지 않습니다. 사용자에게 필요한 정보를 다시 묻거나, 공식 문의 경로로 넘깁니다.
여기서 “모른다”는 실패가 아닙니다. 근거가 없다는 신호를 잃어버리고도 아는 척하는 것이 실패입니다.
5. 검색에도 권한이 흐른다
컨텍스트 문제를 최신성만으로 보면 또 하나를 놓칩니다. 검색이 사용자의 권한을 지켜야 한다는 점입니다.
상담원이 고객 주문을 조회할 수 있다고 해서 모든 고객의 메모를 볼 수 있는 것은 아닙니다. 일반 직원이 정책 문서를 검색할 수 있어도 인사·법무 문서까지 같은 인덱스에서 꺼내면 안 되고요.
권한 검사는 마지막 답변을 가리는 필터로 두기보다 검색 단계부터 적용하는 편이 안전합니다. 모델이 한 번 본 비밀을 자연스럽게 “잊게” 만들 수는 없으니까요. 캐시가 있다면 사용자별 결과가 섞이지 않는지도 봐야 합니다.
그리고 답변에는 사용한 출처를 남깁니다. 링크 장식만 붙이는 게 아니라, 실제 결론을 뒷받침한 문서와 버전을 추적할 수 있어야 합니다. 그래야 상담원이 확인하고, 사고가 나면 어느 경로에서 잘못됐는지 찾을 수 있습니다.
6. 모델보다 먼저 볼 네 곳
AI가 틀렸을 때 모델을 바꾸는 건 눈에 잘 보이는 해결책입니다. 가끔은 정말 모델의 추론이 문제이기도 합니다. 다만 그 전에 네 곳을 차례로 보는 습관이 유용합니다.
1️⃣ 공식 원본 자체가 맞고 서로 충돌하지 않는가
2️⃣ 최신 버전이 정해진 시간 안에 인덱스에 들어왔는가
3️⃣ 질문에 필요한 구간이 실제 검색 결과에 있었는가
4️⃣ 그 결과를 볼 권한과 적용 조건이 맞았는가
여기까지 정상인데 모델이 근거와 다른 결론을 냈다면, 그때 프롬프트와 모델을 봅니다. 이 순서가 있으면 비싼 모델로 오래된 문서를 더 유창하게 읽게 만드는 일을 피할 수 있습니다.
✅ 좋은 AI 답변은 좋은 모델 하나에서 나오지 않습니다. 믿을 원본, 제때 도착한 데이터, 지켜진 권한, 추적 가능한 출처가 함께 만든 결과입니다.
월요일의 반품 사고 뒤 팀이 가장 먼저 바꾼 것도 모델이 아니었습니다. 정책 변경이 검색에 반영되지 않으면 자동 답변을 멈추는 작은 경보였습니다. 덜 화려했지만, 다음 금요일에는 그 장치가 사용자를 지켜줬습니다.
🌱 시스템의 맥락을 끝까지 추적하는 개발자들이 모인 곳, 루퍼스
모델의 답 뒤에는 데이터와 권한, 운영의 긴 경로가 있습니다. 그 경로를 함께 읽고 설계하는 감각을 나누고 싶다면 루퍼스에서 함께해보세요 🙌
AI 시대에도 결국 중요한 건 생각하는 힘과 성장하는 환경이라고 믿습니다.
루퍼스에는 성장에 진심인 800+명의 크루가 함께하고 있습니다. 현업에서 부딪히는 고민과 경험을 나누며 함께 성장하는 크루들의 이야기. 전액 기부 강의 그리고 다양한 오프라인 네트워킹까지! 루퍼스는 개발자를 위한 지속 가능한 성장을 만들어 갑니다.
📢 LOOPERS의 소식이 궁금하다면?
Share article