손님이 밤 11시에 묻는 걸 사람이 다 받을 순 없습니다
분양 상담을 해보면 질문이 늘 비슷합니다. 생애최초 특별공급 자격이 되나요, 이 단지 분양가가 얼마예요, 발코니 확장은 돈이 더 드나요. 문제는 이런 질문이 영업시간에만 오지 않는다는 겁니다. 밤 11시에 온 문의를 다음 날 낮에 답하면, 그 손님은 이미 다른 곳과 상담을 끝냈을 수도 있습니다.
Thank you for reading this post, don’t forget to subscribe!그래서 밤에도 자동으로 답하는 상담 챗봇을 만들어보기로 했습니다. 그냥 말 잘하는 챗봇이 아니라, 우리 현장의 실제 정보를 근거로 답하는 챗봇이요. 하룻밤 붙잡고 만든 기록을, 자랑과 실패를 섞어서 남깁니다.
RAG를 12살한테 설명한다면
이 챗봇의 핵심 기술이 RAG입니다. 이름은 어렵지만 원리는 단순합니다.
그냥 챗GPT에게 “탕정자이 분양가 얼마야?”라고 물으면, 이 녀석은 우리 현장을 모르니까 그럴듯하게 지어내거나 모른다고 합니다. 아는 척 틀린 답을 하는 게 제일 위험합니다. RAG는 여기에 한 단계를 끼웁니다. 질문이 들어오면 먼저 내가 준비해둔 자료 창고에서 관련 문서를 찾아오고, 그 문서를 근거로 붙여서 답하게 합니다.
시험을 오픈북으로 바꿔주는 것과 비슷합니다. 머리로 외운 걸 말하는 게 아니라, 펼쳐놓은 자료를 보고 답하는 거죠. 그래서 지어내는 게 확 줄어듭니다. 손님 상담용 챗봇이라면 이게 필수입니다. 틀린 분양가를 자신 있게 말하는 챗봇은 없느니만 못하니까요.
자료를 조각내서 창고에 넣었습니다
그 ‘자료 창고’가 벡터DB라는 겁니다. 문서를 숫자 덩어리로 바꿔서, 의미가 비슷한 걸 빠르게 찾아오는 저장소입니다.
여기서 중요한 게 ‘조각내기’입니다. 긴 문서를 통째로 넣으면 검색이 뭉툭해집니다. 그래서 문서를 의미 단위로 잘게 나눕니다. 저는 9개 현장의 분양가 수천 건, 옵션, 일정, 청약 FAQ를 정리해서 500개가 넘는 조각으로 나눠 넣었습니다. 이렇게 잘라두면, 질문과 가장 관련 있는 조각만 콕 집어 꺼내올 수 있습니다.
처음엔 파인콘이라는 외부 벡터DB를 쓰다가, 어차피 쓰던 데이터베이스 안에서 벡터 검색이 되길래 그쪽으로 갈아탔습니다. 창고를 하나로 합치니 관리가 훨씬 단순해졌습니다. 도구를 줄이는 것도 1인 사업자에겐 실력입니다.
숫자는 검색 말고 표에서 꺼냅니다
한 가지 더 손봤습니다. 이게 은근히 중요합니다.
분양가처럼 딱 떨어지는 숫자는 ‘의미로 비슷한 걸 찾는’ 벡터 검색보다, 그냥 표에서 정확히 조회하는 게 맞습니다. 4억이랑 4억 1천만은 의미로는 비슷하지만 손님에겐 완전히 다른 얘기니까요. 그래서 “말랑말랑한 질문은 의미로 찾기, 정확한 숫자는 표에서 꺼내기”를 섞은 하이브리드로 만들었습니다. FAQ 같은 건 검색으로, 분양가 같은 건 조회로 답이 나가게요.
이 구분을 안 하면 이상한 일이 벌어집니다. 초기에 전부 의미 검색으로만 답하게 했더니, 비슷한 다른 단지 가격을 슬쩍 섞어서 답한 적이 있습니다. 손님한테는 치명적이죠. 그래서 “정확해야 하는 건 검색에 맡기지 않는다”는 원칙을 세웠습니다. AI를 믿되, 어디까지 믿을지는 내가 정하는 겁니다.
실제로 답이 나왔을 때
로컬에서 돌려보니 답이 나왔습니다. 이 순간이 제일 좋았습니다.
“생애최초 특별공급 자격?”이라고 물으니 FAQ를 근거로 정확히 답했고, “탕정자이 분양가?”라고 하니 단지명을 알아서 인식해서 조회하고 5억 2,700만~5,400만 원대를 표로 정리해줬습니다. “발코니 확장 비용?”에는 실제 옵션가를 꺼내왔습니다. 답하는 두뇌는 처음엔 GPT-4o로 붙였고, 나중에 다른 모델로 바꿔 끼울 수 있게 스위치처럼 만들어뒀습니다. 한 모델에 묶이지 않으려고요.
그리고, 밤새 배포는 못 했습니다
여기서 솔직한 부분입니다. 코드는 다 됐는데 그날 밤 클라우드에 올리지 못했습니다.
이유가 좀 허무합니다. 한쪽 클라우드는 로그인 자격증명이 설정돼 있지 않았고 관련 프로그램도 안 깔려 있었습니다. 다른 클라우드는 로그인이 브라우저를 띄워 직접 눌러야 하는 방식이라, 사람이 자는 사이에 무인으로 실행할 수가 없었습니다. 결국 그날 밤에 가능한 최대치는 “코드 완성 + 로컬 검증 + 버튼 하나로 올릴 수 있는 배포 패키지 준비”까지였습니다. 실제 배포는 다음 날 아침에 마무리했습니다.
하나 지킨 게 있습니다. 이미 라이브로 돌아가는 홈페이지 서버는 손끝 하나 안 댔습니다. 새 걸 붙이겠다고 멀쩡히 돌아가는 걸 건드리면 안 되니까요. 사고는 대부분 이럴 때 납니다.
1인 사업자가 여기서 가져갈 것
거창한 결론은 없습니다. 대신 세 가지만 남기겠습니다. AI에게 헛소리를 줄이게 하려면 ‘근거 자료’를 먼저 준비해줘야 합니다. 하룻밤에 다 되는 것 같아도 마지막 배포 단계에서 꼭 한 번 막히니 시간을 넉넉히 잡으세요. 그리고 새 걸 붙일 때 잘 돌아가는 걸 안 건드리는 게, 화려한 기술보다 훨씬 중요한 습관입니다.