실서비스에 올리기 전에 — Redis로 RAG 다듬기1편에서 만든 구조는 로컬에서는 꽤 잘 돌아갔다. 질문을 입력하면 관련 FAQ를 찾고, GPT가 그 내용을 바탕으로 답변을 만들어냈다.그런데 운영 환경을 생각하니 손볼 곳이 하나둘 보이기 시작했다.같은 질문이 들어와도 매번 임베딩 API를 호출하고 있었고, FAQ를 찾을 때마다 DB에서 전체 데이터를 읽어왔다. 이전 대화를 저장하지 않아 사용자가 앞 질문에 이어서 말을 하면 맥락도 끊겼다.특히 이런 식이다.사용자: 후원 감액하고 싶어요.챗봇: 어떤 후원을 감액하고 싶으신가요?사용자: 해외아동 후원인데요.사람끼리 대화한다면 마지막 문장이 앞 질문에 대한 답이라는 걸 굳이 설명할 필요가 없다. 하지만 요청 하나만 놓고 보면 "해외아동 후원인데요"라는 문장에..
제목이 지나친 어그로처럼 느껴진다면, 사실 맞다. 유발 하라리는 《호모 데우스》에서 자유의지가 종말을 맞이하고 있다고 말하지 않는다. 종말은 존재하던 것이 끝난다는 뜻이다. 하라리의 논지는 애초에 자유의지라는 것은 허상이라고 주장하는 쪽에 가깝다. 그러니 《호모 데우스》를 읽고 쓰는 이 글의 제목은 사실 ‘자유의지 허상론’이 되는 편이 더 정확하다. 하지만 ‘허상론’보다 ‘종말론’이 어감이 강하다. 더 눈에 띄고, AI 시대에 느끼는 위기의식을 표현하기에도 그럴듯하다. 적어도 내 좌뇌 뉴런들은 그렇게 판단한 모양이다. 따라서 위 제목은 내 머릿속에 쌓인 어휘 데이터가 전기 자극의 형태로 손가락을 움직인 결과일 뿐이다. 내 자유의지는 없었다는 것을 알아주길 바란다. (반응하기 곤란하다면 그냥 웃어주면 ..
1. 얇은 책이 던지는 무거운 질문《The Nature of Software Development》는 얇은 책이다. 두껍지 않고, 화려하지 않고, 제법 선언적이다. 론 제프리스는 소프트웨어 개발에서 가장 중요한 것이 무엇인지를 단순하게 말한다. 가치. 가장 가치 있는 것을 먼저 만들 것. 전체 그림을 보되, 한 번에 전체를 만들려고 하지 말 것. 지금 가장 먼저 작동해야 하는 작은 피쳐를 찾고, 그 피쳐를 실제로 동작하게 만들 것. 그리고 그다음 가치로 넘어갈 것. 책의 메시지는 간결하다. 그런데 그 간결함이 가볍지는 않다. 오히려 계속 같은 질문으로 돌아오게 만든다. 그래서 무엇이 가치 있는가?그 가치를 가장 작게 만들 수 있는 단위는 무엇인가?그것은 실제로 동작하는가?우리는 정말 중요한 것을 만들고 ..
나는 어쩌다 레거시 챗봇 시스템에 RAG를 제안하고 도입하게 되었나. 진부한 도입부지만 여기에서 시작하지 않을 수가 없다. 나는 지난 4년간을 챗봇 서비스 개발 및 운영 서비스 팀에서 일 해왔다. 카카오 챗봇 빌더나 다이얼로그플로우 같은 챗봇 툴은 기본적으로 패턴 매칭 기반으로 동작한다. 예를 들어 어드민에 "배송 언제 돼요?", "배송 기간이 어떻게 돼요?" 같은 발화를 등록해두고 사용자가 질문하면, 등록된 발화들과 비교해서 가장 비슷한 걸 찾아내 그에 맞는 답변을 내보내는 식이다. 문제는 "가장 비슷한"을 판단하는 기준이다. 이 툴들은 텍스트의 의미를 이해하는 게 아니라, 형태적 유사성을 보는 것에 가깝다. 단어가 겹치거나 구조가 비슷해야 매칭이 된다. 그러니 "배송 언제 돼요?"는 잘 잡히는데, "..
글의 도입부를 어떻게 시작하면 좋을지 고민하다가, 최근 읽은 책들에서 유행처럼 번졌던, AI 생산성을 독자에게 직접 체감시키도록 설계된 서문의 트릭들이 떠올랐다. 그럴듯한 어휘와 논지들의 나열. 반 페이지에 가까운 빽빽하면서도 제법 흥미로운 활자를 다 읽고 나면 여러 줄의 줄바꿈과 함께 진짜 저자가 등장하여 다음과 같이 말하는 것이다. "위 글은 나처럼 쓰라는 주문을 받은 강력한 인공지능이 쓴 것이다." 조잡한 문장력때문에라도 아무도 의심하지 않겠지만, 혹시나 실망 혹은 기대하는 사람이 있을까봐 이야기하자면 이 글은 내가 직접 쓴 것이 맞다. 클로드를 여러번 윽박질러 봤지만 내 취향의 유머는 아무래도 뱉어내질 못했다. 내심 가슴을 쓸어내릴 사실이다. 적어도 나에겐 아직 내 글이 아주 조금 더 재밌다. ..