← Projects

데이터 인프라 + RAG

약관 변경 추적 프로젝트

WhereIsMyTerms · TOS-Korea

  • Python
  • LangGraph
  • Jev
  • Vector DB
  • BM25
  • SQL
  • Git

Think Flow

이 프로젝트는 AI 시대를 맞아 새로운 도전을 하면서
알아 가게 된 것들을 하나씩 녹여 가며 만들었습니다.

그중에서도 RAG(검색 증강 생성)를 배우고,
이를 어디에 활용할 수 있을지 고민했습니다.

제가 생각하는 RAG가 필요한 곳은
크게 두 가지입니다

첫 번째는 기획을 해도
자료를 구성할 수 없었습니다

그래서 두 번째에서
RAG로서 가치 있는 정보를 찾았습니다

01

LLM이 처음부터 학습할 수 없는 것

사내 문서, 개인 문서처럼 일반적으로 웹에서 얻을 수 없는 정보

적절한 자료를 구성할 수 없음

02

LLM이 학습하기 어려운 것

계속 바뀌는 정보, 사전 학습(Pre-trained)이 끝난 뒤에 생긴 정보

중요하지만, 놓치는 것 자주 바뀌지만, 알지 못하는 것

이에 해당하는 자료를 고민하고 리서치한 끝에
도출해 낸 프로젝트가 WhereIsMyTerms와 TOS-Korea입니다.

약관은 중요하지만 아무도 관심이 없습니다.

자주 바뀌지만 바뀐 것이 무엇인지 모릅니다.

하지만 무엇보다 중요한 계약입니다.

How it works

어떻게 작동하나요?

입력질문
Jev분기
벡터 + BM25검색
Jev관련도
Jev충분성
LLM답변

↺ 근거가 부족하면 검색어를 늘려 다시 찾고(최대 2회), 끝내 부족하면 추측하지 않고 답변을 보류합니다

판정은 결정 모델 Jev 글쓰기는 LLM

01 · 조항 단위 임베딩

약관을 조항 단위로 나눠 색인합니다

쿠팡 이용약관
→
[쿠팡 · 이용약관] 제1조 목적 [쿠팡 · 이용약관] 제7조 서비스 이용 [쿠팡 · 이용약관] 제38조 회사의 면책
→
벡터 DBChroma + BM25
  • 조(제N조) 하나를 한 단위로 자르고, 1,500자가 넘는 긴 조항은 항 경계에서 조각으로 나눕니다.
  • 조각마다 [서비스 · 문서 제목] 조항 번호 · 제목 머리말을 붙여, 비슷한 약관끼리도 서비스를 구분합니다.
  • 한국어 임베딩 모델과 키워드 검색(BM25)을 함께 써, "환불", "면책"처럼 키워드가 강한 질문의 빈 곳을 메웁니다.
0.42 → 0.62정답 조항을 1위로 찾는 비율
(OpenAI small → 한국어 모델)
97.5%현재 조항 질문에서 정답이
상위 5개 안에 드는 비율

02 · Jev 판정

결정 모델 Jev가 세 가지를 판단합니다

예시 질문 · "쿠팡 24시간 이용 안내 아직 있어?"

분기약관을 봐야 답할 수 있는 질문인가?
0.89 기준 0.3 (서비스 이름이 있을 때)→ 검색
관련도찾은 근거가 질문과 맞는가?
0.87 기준 0.5→ 근거 채택
충분성이 근거만으로 답할 수 있는가?
0.68 기준 0.6→ 답변

판정 확률 = LangGraph의 분기 조건Jev가 돌려주는 확률을 그대로 그래프의 조건 분기(edge) 기준으로 썼습니다. 좋은 시점에 나온 모델이라 바로 적용할 수 있었습니다.

기다림을 줄이는 설계로딩이 1초에서 3초로 늘면 이탈 확률이 32% 오른다는 Google 연구를 기준 삼아, 판정은 가벼운 결정 모델에 맡기고 진행 단계를 실시간으로 보여 줍니다. 질문 하나 평균 5.4초 (평가 질문 191개).

03 · 답변

맞는 조항을 가져와 근거를 달아 답합니다

쿠팡 24시간 이용 안내 아직 있어?

질문 분기 조항 · 변경 이력 검색 근거 판정 답변 작성

24시간 이용 안내는 2015-01-02 개정에서 삭제되어 지금 쿠팡 이용약관에는 없습니다. [1]

[1] 쿠팡 이용약관 제7조 · 변경 이력

판정 확률과 답변은 2026-09-29 실제 실행 기록을 바탕으로 다시 그린 예시입니다.

구성

데이터 인프라

TOS-Korea

약관 파일 하나가 문서, 커밋 하나가 버전. 한국 온라인 서비스 약관의 변경 이력을 Git으로 기록합니다.

GitHub →

서비스 · RAG

WhereIsMyTerms

쌓인 변경 이력을 바탕으로 약관이 언제, 어떻게, 누구에게 불리하게 바뀌었는지 근거를 달아 답합니다.

GitHub →