LLM Wiki 검색 성능 개선사 : 문서 저장소에서 근거 기반 지식 시스템까지

처음에는 문서를 많이 넣어두기만 한 상태였다. 지금은 질문을 하면 관련 법령ㆍ예규ㆍ해설 문서를 찾아내고, 그 근거가 믿을 만한지 점검한 다음, 필요한 조문만 짧게 꺼내고, 답변 끝에 "이 근거가 어떤 자격으로 쓰였는지"까지 표시할 수 있는 상태가 됐다.

전체 그림

처음 상태

문서가 많음
  |
  v
어디에 뭐가 있는지 찾기 어려움
  |
  v
AI가 답하더라도 근거를 확인하기 어려움


현재 상태

문서 원문
  |
  v
작은 조각으로 나눔
  |
  v
검색용 색인에 넣음
  |
  v
여러 검색 방식으로 후보를 찾음
  |
  v
공식 근거인지 점검함
  |
  v
짧은 근거와 함께 답변함

이 위키가 해결하려는 문제

지방계약 문서는 길고 복잡하다. 법령, 시행령, 시행규칙, 예규, CSR 유권해석, 블로그, 직접 작성한 해설이 섞여 있다.
사람이 볼 때 어려운 점은 세 가지다.

  1. 어디에 답이 있는지 찾기 어렵다.

  2. 찾은 문서가 공식 근거인지 참고자료인지 구분하기 어렵다.

  3. 문서 전체가 너무 길어서 실제로 필요한 한 문장을 찾기 어렵다.
    이 위키는 이 세 가지를 줄이기 위해 만들어졌다.

질문: 임대차계약은 수의계약이 가능할까?

예전 방식
  시행령 제25조 전체를 열어봄
  긴 조문 안에서 제1항, 제5호, 사목을 사람이 찾아야 함

개선 후
  바로 제25조 제1항 제5호 사목 조각을 찾음
  필요한 한 문장만 답변 근거로 보여줌

어려운 용어 쉽게 번역하기

어려운 말

쉬운 말

실제 의미

RAG

자료 찾아서 답하기

AI가 자기 머리로만 답하지 않고, 저장된 문서를 먼저 찾아서 답하는 방식

chunk

문서 조각

긴 문서를 검색하기 좋게 나눈 작은 단위

micro chunk

아주 작은 문서 조각

조문을 항ㆍ호ㆍ목 단위까지 더 잘게 나눈 것

embedding

의미 좌표 만들기

문장의 의미가 비슷한지 비교할 수 있게 숫자로 바꾸는 것

vector search

의미 검색

단어가 똑같지 않아도 뜻이 비슷한 문서를 찾는 검색

FTS/BM25

정확한 글자 검색

조문번호, 문구, 제목처럼 정확히 들어간 단어를 찾는 검색

MongoDB RAG

문서조각 저장소 검색

많은 chunk를 저장하고 의미 검색하는 기본 검색 창고

OpenViking hybrid

여러 검색법을 섞은 검색

의미 검색, 정확 검색, 우선순위 규칙을 합쳐 더 좋은 근거를 고르는 방식

qmd

Markdown 문서 탐색기

Obsidian 문서 위치를 찾는 데 좋은 보조 검색

evidence quality

근거 품질 검사

찾은 문서가 답변 근거로 써도 되는지 점검하는 과정

성능 지표 쉽게 보기

숫자

쉬운 뜻

예시

hit@1 1.0000

첫 번째 결과가 정답이라는 뜻

시험 질문을 물었을 때 기대한 근거가 바로 1등으로 나옴

hit@5 1.0000

상위 5개 안에는 정답이 있다는 뜻

첫 번째가 아니어도 5개 안에는 들어옴

MRR 1.0000

정답이 거의 항상 앞에 있다는 뜻

1.0에 가까울수록 좋음

answer-eligible@1

첫 번째 결과가 답변에 써도 되는 근거라는 뜻

공식자료나 잘 정리된 위키 문서인지 확인

low_trust_top 0

첫 번째 결과에 낮은 신뢰도 문서가 없다는 뜻

개인 메모나 임시 보고서가 1등으로 올라오지 않음

전체 발전 과정 한눈에 보기

[0] 문서 구조 점검
     |
     v
[1] MongoDB RAG 저장소 구축
     |
     v
[2] L0/L1 요약 지도 추가
     |
     v
[3] OpenViking식 구조 실험
     |
     v
[4] OpenViking 실제 실행 실험
     |
     v
[5] Hybrid 검색 우선순위 개선
     |
     v
[6] FTS/BM25 정확 검색 추가
     |
     v
[7] 근거 품질 평가 추가
     |
     v
[8] 법제처 공식 법령 원문 추가
     |
     v
[9] 조문 단위로 자르기
     |
     v
[10] 항ㆍ호ㆍ목 단위로 더 잘게 자르기
     |
     v
[11] 답변 끝에 공식 근거 성적표 붙이기
     |
     v
[12] 근거 자격표를 더 세밀하게 나누기

단계별 쉬운 해설

0단계: 문서가 망가지지 않았는지 확인

처음에는 검색 성능보다 기본 정리가 중요했다. 문서 링크가 깨지지 않았는지, 출처 번호가 맞는지, 파일 구조가 맞는지 확인했다.

검증 결과
lint PASS
errors 0
warnings 0

쉬운 의미:

문서함 정리 상태: 정상
깨진 링크: 없음
출처 목록: 정상

1단계: 문서를 검색 창고에 넣기

긴 Markdown 문서를 작은 조각으로 나누고 MongoDB라는 저장소에 넣었다.

긴 문서
  |
  v
작은 조각들
  |
  v
MongoDB 저장소
  |
  v
질문하면 비슷한 조각 검색

주요 결과:

최초 전체 ingest: 14803/14803 chunks complete

쉬운 의미:

문서 조각 14,803개를 검색 창고에 모두 넣었다.

2단계: 문서 지도를 만들기

문서 조각만 많으면 검색이 느리고, 엉뚱한 조각이 나올 수 있다. 그래서 각 문서에 짧은 요약 지도인 L0/L1을 만들었다.

L0 = 아주 짧은 요약
L1 = 조금 더 긴 개요
L2 = 실제 원문

그림으로 보면:

질문
  |
  v
먼저 L0/L1 지도에서 관련 문서 후보를 찾음
  |
  v
필요할 때만 L2 원문 조각을 봄

초기 평가:

24문항 평가
MongoDB baseline hit@5 0.9583
MongoDB context hit@5 0.9583
MongoDB strict hit@5 0.9167

개선 후:

MongoDB baseline hit@5 1.0000
MongoDB context hit@5 1.0000

쉬운 의미:

처음에는 24문제 중 23문제 정도를 상위 5개 안에서 찾았다.
개선 후에는 24문제 모두 상위 5개 안에서 찾았다.

3단계: OpenViking식 구조로 바꿔볼 준비

OpenViking은 자료, 기억, 기술을 파일 시스템처럼 정리하는 방식이다. 이 단계에서는 실제 OpenViking을 완전히 쓰기 전에, 우리 위키 자료를 OpenViking이 읽을 수 있는 모양으로 정리했다.

LLM Wiki 문서
  |
  v
OpenViking식 resource / skill / session 구조
  |
  v
나중에 OpenViking으로 옮기거나 비교 가능

검증 결과:

coverage 1.0000
lexical-hybrid hit@5 1.0000

쉬운 의미:

OpenViking식으로 내보낸 자료 안에 필요한 정답 문서가 빠짐없이 들어 있었다.

4단계: OpenViking을 실제로 돌려본 실험

OpenAI API Key 없이, 로컬 embedding만으로 OpenViking runtime을 시험했다.
결과:

hit@1 0.5000
hit@5 0.6250
MRR 0.5778

쉬운 의미:

실제 OpenViking runtime만으로는 아직 성능이 충분하지 않았다.
첫 번째 결과가 정답인 경우가 절반 정도였다.

그래서 결론은 이랬다.

OpenViking runtime 단독 사용: 아직 이르다
MongoDB RAG: 기본 검색으로 유지
OpenViking: 구조 실험과 보조 검색으로 활용

5단계: 여러 검색 결과를 섞어 더 좋은 결과 고르기

이 단계에서 OpenViking hybrid가 중요해졌다. 단순히 한 검색엔진만 믿지 않고 여러 후보를 섞은 뒤, 공식 근거와 좋은 concept 문서를 위로 올렸다.

MongoDB 검색 결과
        +
OpenViking식 L0/L1 결과
        +
정확 문구 검색
        +
우선순위 규칙
        |
        v
OpenViking hybrid 결과

27문항 평가:

OpenViking hybrid hit@1 1.0000
OpenViking hybrid hit@5 1.0000
MRR 1.0000

쉬운 의미:

27개 시험 질문에서 첫 번째 결과가 모두 기대한 근거였다.

다만 이때 중요한 깨달음이 있었다.

검색 점수만 높다고 좋은 답변 근거는 아니다.
CSR 사례나 블로그가 1등으로 올라오면 답변에는 조심해서 써야 한다.

6단계: 정확한 글자 검색 FTS/BM25 추가

의미 검색은 비슷한 뜻을 찾는 데 좋지만, 조문번호나 정확한 문구는 글자 그대로 찾는 검색이 더 강하다.
그래서 FTS/BM25를 붙였다.

의미 검색이 잘하는 것:
  "입찰참가자격 제한"과 "부정당업자 제재"처럼 비슷한 뜻 찾기

FTS/BM25가 잘하는 것:
  "제25조제1항제5호사목"
  "SRC-002"
  "재공고입찰"

초기 결과:

FTS/BM25 hit@1 0.9630
FTS/BM25 hit@5 1.0000

쉬운 의미:

정확한 단어가 들어간 질문에서는 매우 잘 찾았다.

7단계: 찾은 문서가 믿을 만한지 검사

이때부터 단순히 "찾았나?"가 아니라 "찾은 것이 답변 근거로 안전한가?"를 보기 시작했다.

찾은 문서
  |
  +-- 공식 법령/예규 원문인가?
  |
  +-- 공식 source chunk인가?
  |
  +-- 정리된 concept인가?
  |
  +-- CSR/블로그 같은 참고자료인가?
  |
  +-- 개인 메모나 임시 문서인가?

새로 본 지표:

official@1
answer-eligible@1
low-trust top
reference-only risk

쉬운 의미:

정답을 찾는 것만으로는 부족하다.
공식 근거와 참고자료를 구분해야 한다.

8단계: 법제처 공식 법령 원문 추가

이전에는 예규, CSR, 블로그, concept가 중심이었다. 이후 법제처 OpenLaw API로 지방계약법령 3종을 공식 source로 넣었다.

SRC-011 지방계약법
SRC-012 지방계약법 시행령
SRC-013 지방계약법 시행규칙

쉬운 의미:

이제 위키 안에 지방계약법령 공식 원문이 들어왔다.
답변이 더 공식 근거에 가까워졌다.

9단계: 법령을 조문 단위로 자르기

법령 원문이 들어와도 문서가 너무 길면 읽기 어렵다. 그래서 법령을 조문 단위로 나눴다.

지방계약법 시행령 전체
  |
  v
제25조
제26조
제31조
...

생성 결과:

지방계약법 조문 chunks: 81
시행령 조문 chunks: 275
시행규칙 조문 chunks: 149
합계: 505

32문항 평가:

OpenViking hybrid hit@1 1.0000
FTS/BM25 hit@1 0.9375

쉬운 의미:

제25조, 제26조, 제31조처럼 조문 번호를 물으면 잘 찾게 됐다.

하지만 문제가 남았다.

제25조 하나가 여전히 너무 길다.
제25조 안에 제1항, 제5호, 사목 같은 세부 내용이 많다.

10단계: 항ㆍ호ㆍ목 단위로 더 잘게 자르기

마지막 성능개선은 조문을 한 번 더 잘게 나누는 것이었다.

예전
  시행령 제25조 전체

개선 후
  시행령 제25조
    |
    v
  제1항
    |
    v
  제5호
    |
    v
  사목

생성 결과:

SRC-017 지방계약법 micro chunks: 255
SRC-018 시행령 micro chunks: 1079
SRC-019 시행규칙 micro chunks: 483
합계: 1817

대표 예시:

시행령 제25조 제1항 제5호 사목

이 조각에는 이런 내용만 들어 있다.

사. 추정가격이 5천만원 이하인 임대차 계약
   연액 또는 총액을 기준으로 추정가격을 산정한다

쉬운 의미:

"임대차 수의계약"을 물으면 이제 시행령 제25조 전체를 보여주지 않는다.
바로 제25조 제1항 제5호 사목만 꺼낸다.

11단계: 답변 끝에 공식 근거 성적표 붙이기

이번 단계의 핵심은 검색을 더 많이 하는 것이 아니라, 답변을 믿을 수 있게 만드는 규칙을 고정한 것이다.
예전에는 검색 결과가 좋아도 이런 의문이 남을 수 있었다.

이 답변은 공식 법령을 보고 쓴 걸까?
CSR 사례를 공식 근거처럼 쓴 건 아닐까?
블로그나 개인 메모가 앞에 온 건 아닐까?
어떤 검색 방식으로 찾은 걸까?

이제는 답변 끝에 다음과 같은 성적표가 붙는다.

근거 방식
근거 신뢰도
공식 근거 게이트
상위 근거
법령 전용 preflight 근거
판정 이유
한계
재현 명령

쉬운 말로 하면 다음과 같다.

답변
  |
  v
어떤 자료를 봤는지 표시
  |
  v
그 자료가 공식 법령인지 표시
  |
  v
CSR/블로그는 참고자료인지 표시
  |
  v
다시 확인할 명령까지 표시

이번에 고정한 근거 순서는 이렇다.

1순위: 지방계약법, 시행령, 시행규칙
2순위: 지방계약예규, 행정규칙
3순위: 잘 정리된 위키 concept와 source summary
4순위: CSR 유권해석
5순위: 블로그, 회원 메모, 사례글

중요한 점:

CSR이나 블로그가 검색되더라도 참고자료로만 쓴다.
공식 근거가 약하면 위키의 정식 지식으로 바로 승격하지 않는다.

또 OpenViking식 L0/L1 지도를 세 개 더 만들었다.

법령별 지도
조문별 지도
실무질의별 지도

쉬운 의미:

긴 법령집을 통째로 뒤지는 것이 아니라,
먼저 "어느 법령의 어느 조문 근처를 봐야 하는지" 알려주는 안내도를 만든 것이다.

최종 성능을 사람 말로 해석하기

FTS/BM25 eval

hit@1 0.9906
hit@5 1.0000

쉬운 말:

시험 질문 106개 중 거의 전부를 첫 번째 결과로 찾았다.
상위 5개 안에는 모두 들어왔다.
조문번호나 정확한 문구를 찾는 데 특히 강하다.

OpenViking hybrid eval

hit@1 0.8679
hit@5 1.0000

쉬운 말:

첫 번째 결과가 항상 정답은 아니지만,
상위 5개 안에는 기대한 근거가 모두 들어왔다.
답변 context를 만들 때 공식 근거와 위키 정리문을 함께 배치하는 데 유용하다.

MongoDB RAG eval

baseline hit@1 0.8302
baseline hit@5 0.9811

쉬운 말:

전체 문서 조각 저장소에서 빠르게 의미 검색하는 기본 검색 창고다.
대부분의 질문에서 좋은 후보를 찾지만,
가끔 CSR이나 웹 사례가 앞에 올 수 있어 공식 근거 게이트와 함께 써야 한다.

Evidence quality

legal FTS authority answer_eligible@1 0.9434
legal FTS authority answer_eligible@5 0.9811
low_trust_top 0

쉬운 말:

첫 번째 결과가 답변에 쓸 만한 근거인 경우가 94% 정도다.
상위 5개까지 보면 98% 정도가 답변 가능한 근거를 포함한다.
낮은 신뢰도 문서가 첫 번째로 올라온 경우는 없다.

Lint

PASS
errors 0
warnings 0

쉬운 말:

문서 구조와 링크 상태가 정상이다.

qmd

6911 files
56853 vectors

쉬운 말:

Obsidian/Markdown 문서 6,911개가 검색 색인에 들어가 있고,
의미 검색용 위치표가 56,853개 만들어져 있다.

성능 변화 막대그래프

숫자를 직관적으로 보면 다음과 같다.

OpenViking runtime pilot hit@1
0.5000  [##########----------]

OpenViking hybrid 27문항 hit@1
1.0000  [####################]

OpenViking hybrid 36문항 hit@1
1.0000  [####################]

FTS/BM25 106문항 hit@1
0.9906  [####################]

OpenViking hybrid 106문항 hit@1
0.8679  [#################---]

MongoDB baseline 106문항 hit@1
0.8302  [#################---]

legal FTS authority answer_eligible@1
0.9434  [###################-]

FTS/BM25 27문항 hit@1
0.9630  [###################-]

FTS/BM25 36문항 hit@1
0.9167  [##################--]

qmd 36문항 hit@1
0.3333  [#######-------------]

해석:

OpenViking 단독 runtime은 아직 부족했다.
하지만 OpenViking hybrid 방식은 매우 안정적이다.
FTS/BM25는 106문항 기준으로 정확 검색 보조 역할이 더 강해졌다.
legal FTS authority는 "답변에 써도 되는 근거인가"를 보는 데 가장 안정적이다.
qmd는 답변용 검색보다 문서 위치 탐색에 더 적합하다.

새로 추가된 변화: "찾았다"와 "믿을 수 있다"를 분리

이번 개선의 핵심은 단순하다.

기존 질문
  정답 문서를 찾았나?

새 질문
  정답 문서를 찾았나?
  그 문서가 공식 근거인가?
  참고자료라면 공식 근거가 같이 잡혔나?
  낮은 신뢰도 자료라면 위키 지식으로 승격하지 않도록 막았나?

예전에는 어떤 문서가 1등으로 검색됐는지를 주로 봤다. 이제는 1등 문서가 무엇인지뿐 아니라, 그 문서의 신분증까지 확인한다.

검색 결과 1등
  |
  +--> 공식 법령인가?          official-law
  +--> 행정안전부 예규인가?    admin-rule
  +--> 위키 정리문인가?        compiled-wiki
  +--> CSR/블로그/사례인가?    reference-only
  +--> 회원 메모인가?          member-note
  +--> 임시 보고서인가?        low-trust

이렇게 나누는 이유는 분명하다.

법령/예규
  -> 답변의 핵심 근거로 사용 가능

위키 정리문
  -> 원문과 함께 확인하면 사용 가능

CSR/블로그/사례
  -> 참고 사례로만 사용

회원 메모/임시 보고서
  -> 답변 핵심 근거로 쓰면 위험

새 근거 자격표가 보여주는 것

이번 리포트에는 다음 숫자들이 추가로 남는다.
| 지표 | 쉬운 뜻 |
|---|---|
| official@1 | 1등 검색 결과가 공식 법령이나 공식 예규인가 |
| official@5 | 상위 5개 안에 공식 법령이나 공식 예규가 있는가 |
| answer-eligible@1 | 1등 결과를 답변 근거로 써도 되는가 |
| ref+official | 참고자료가 먼저 나왔지만 공식 근거도 함께 찾았는가 |
| reference-only risk | 참고자료만 있고 공식 근거가 부족한 위험 사례인가 |
| promotion blocked | 위키 지식으로 승격하면 안 되는 사례인가 |
실제 최신 OpenViking hybrid 결과는 다음과 같다.

OpenViking hybrid
  official@1            0.5377
  official@5            0.9340
  answer-eligible@1     0.9151
  answer-eligible@5     0.9717
  reference-only risk   3건
  promotion blocked     3건

쉬운 말:

첫 번째 결과가 항상 공식 법령은 아니다.
하지만 상위 5개 안에는 공식 근거가 거의 들어온다.
첫 번째 결과가 답변에 쓸 수 있는 근거인 비율은 높다.
공식 근거 없이 참고자료만 잡힌 위험 사례는 따로 기록된다.

legal FTS authority는 조금 다르게 읽어야 한다.

legal FTS authority
  official@1            1.0000
  official@5            1.0000
  answer-eligible@1     1.0000

이 숫자는 "일반 검색이 완벽하다"는 뜻이 아니다. 공식 법령ㆍ예규 source id만 강제로 뒤지는 안전망을 만들었더니, 106개 평가 질문 모두에서 공식 근거 후보를 찾을 수 있었다는 뜻이다.

일반 검색
  사용자가 실제로 질문했을 때 자연스럽게 어떤 문서가 올라오는지 봄

legal FTS authority
  공식 근거만 따로 뒤져서 안전망이 있는지 봄

답변 끝에 붙는 새 표시

이제 답변 말미의 공식 근거 게이트에는 이런 표시가 붙는다.

1순위 근거 층위: admin-rule
공식 근거 rank: top-1
공식 법령 조문 rank: 전체 FTS 없음, 법령 전용 preflight top-1
예규/공식 실무자료 rank: top-1
답변 가능 근거 rank: top-1
참고자료 top 처리: not-reference-top
concept 승격 게이트: allow-official-supported
근거 품질 점수: 76/100 (중상)

비전문가용으로 번역하면 이렇다.

이번 답변은 행정안전부 예규가 1등 근거로 잡혔다.
법령 조문은 일반 검색 1등은 아니었지만, 법령 전용 검색에서 바로 확인됐다.
CSR이나 블로그를 핵심 근거로 쓰지 않았다.
이 답변은 위키 지식으로 축적해도 되는 수준의 공식 근거를 갖췄다.
다만 점수는 정답 확률이 아니라 근거 품질 점수다.

새 예시: 설계변경ㆍ물가변동 계약금액 조정

이번에는 이런 질문을 던졌다.

지방자치단체 공사계약에서 설계변경이나 물가변동이 발생한 경우
계약금액 조정이 필요한 이유는 무엇인가?

일반 말로 바꾸면 이런 질문이다.

공사 도중 설계가 바뀌거나 자재값ㆍ인건비가 달라졌는데,
처음 계약한 금액을 그대로 두어도 되는가?

위키가 찾아낸 핵심 근거는 다음이었다.

지방계약법 제22조
  계약 후 물가변동, 설계변경, 계약내용 변경으로 계약금액 조정이 필요하면 조정한다.

시행령 제73조
  물가가 일정 요건 이상 변동하면 계약금액을 조정한다.

시행령 제74조
  설계변경으로 공사량이 늘거나 줄면 계약금액을 조정한다.

계약집행기준
  조정 신청, 처리기한, 증빙, 기성대가 지급 등을 실무 절차로 정한다.

답변의 쉬운 결론은 이렇다.

처음 계약금액은 처음 설계와 처음 가격조건을 기준으로 정한 금액이다.
그런데 공사량이 바뀌거나 물가가 크게 달라지면,
처음 금액은 실제 공사 내용과 맞지 않게 된다.
그래서 계약금액을 다시 맞춰야 한다.

왜 중요한지도 분명하다.

계약상대자 보호
  책임 없는 설계변경이나 물가 급등을 전부 떠안지 않게 한다.

지방자치단체 보호
  공사량이 줄거나 가격이 내려갔는데도 과다 지급하지 않게 한다.

공사 안정성
  돈 문제 때문에 공사가 지연되거나 품질이 떨어지는 것을 줄인다.

분쟁 예방
  "누가 얼마를 더 부담해야 하는가"를 법령 절차로 정리한다.

이 질문의 근거 성적표는 이렇게 나왔다.

게이트 상태: 통과
공식 법령 조문: 전체 검색 top-2, 법령 전용 검색 top-1
1순위 근거 층위: admin-rule
답변 가능 근거: top-1
CSR/블로그 자료: 검색에는 잡혔지만 참고자료로만 처리
concept 승격 게이트: allow-official-supported
근거 품질 점수: 85/100 (높음)

쉬운 해석:

첫 번째 근거는 행정안전부 예규였다.
공식 법령 조문도 바로 뒤에서 확인됐다.
CSR 자료가 검색되기는 했지만 핵심 근거로 쓰지 않았다.
따라서 이 답변은 공식 근거가 충분한 답변으로 볼 수 있다.

새 예시: 계약보증금의 목적과 불이행 효과

이번에는 이런 질문을 던졌다.

계약보증금 제도의 목적은 무엇이며,
계약상대자가 계약을 이행하지 않을 경우 어떤 법적 효과가 발생할 수 있는가?

일반 말로 바꾸면 이런 질문이다.

지방자치단체와 계약한 업체가 계약을 제대로 이행하지 않으면,
처음에 맡겨둔 계약보증금은 어떻게 되는가?

위키가 찾아낸 핵심 근거는 다음이었다.

지방계약법 제15조
  계약을 체결하려는 자는 계약보증금을 내야 한다.
  계약상대자가 계약상 의무를 이행하지 않으면 계약보증금은 지방자치단체에 귀속된다.

시행령 제51조
  계약의 이행을 보증하는 방법과 계약보증금 비율을 정한다.

시행령 제54조
  정당한 이유 없이 계약상 의무를 이행하지 않으면 계약보증금을 세입조치한다.

지방계약법 제30조의2
  계약보증금 세입조치는 계약 해제ㆍ해지 사유와 연결될 수 있다.

계약집행기준
  계약보증금 제출, 면제 시 확약서, 세입조치 처리 절차를 실무적으로 설명한다.

답변의 쉬운 결론은 이렇다.

계약보증금은 그냥 맡겨둔 돈이 아니다.
계약상대자가 계약을 끝까지 이행하도록 압박하는 안전장치다.
계약을 제대로 이행하면 돌려받지만,
정당한 이유 없이 이행하지 않으면 지방자치단체에 귀속된다.

이 질문에서 특히 중요한 점은 표현을 정확히 고친 것이다.

부정확할 수 있는 표현
  계약보증금을 손해배상에 사용한다.

법령 원문에 가까운 표현
  계약보증금을 해당 지방자치단체에 귀속시킨다.
  계약보증금을 세입조치한다.

이 질문의 근거 성적표는 이렇게 나왔다.

게이트 상태: 통과
공식 법령 조문: 전체 검색 top-1, 법령 전용 검색 top-1
1순위 근거 층위: official-law
예규/공식 실무자료: top-2
답변 가능 근거: top-1
CSR/블로그 자료: 상위 핵심 근거로 사용하지 않음
concept 승격 게이트: allow-official-supported
근거 품질 점수: 90/100 (높음)

쉬운 해석:

이번 답변은 지방계약법 조문이 바로 1등 근거로 잡혔다.
시행령과 행정안전부 예규도 함께 확인됐다.
그래서 "계약보증금은 왜 있고, 불이행하면 어떻게 되는가"라는 질문에
공식 법령 중심으로 답할 수 있었다.

그래서 무엇이 좋아졌나

이번 개선 전후를 비교하면 다음과 같다.

전
  "검색 결과가 좋다"
  "hit@1이 높다"
  "hit@5가 높다"

후
  "검색 결과가 좋다"
  "공식 근거가 상위에 있다"
  "참고자료는 참고자료로만 표시된다"
  "공식 근거가 없으면 위키 지식 승격을 막는다"
  "답변 끝에서 근거 자격을 확인할 수 있다"

즉, 이 위키는 이제 검색엔진이 아니라 작은 법무 검토실처럼 동작한다.

검색 담당
  관련 문서를 찾음

근거 심사 담당
  공식 근거인지 확인함

기록 담당
  어떤 근거 자격으로 답했는지 남김

현재 위키의 검색 구조

사용자 질문
  |
  +--> OpenViking hybrid
  |      |
  |      +--> 답변용 근거 고르기
  |      +--> 공식 근거와 concept 우선
  |      +--> 최종 context pack 구성
  |
  +--> FTS/BM25
  |      |
  |      +--> 조문번호, 정확 문구, Source ID 찾기
  |      +--> 낮은 신뢰도 문서 제외
  |
  +--> MongoDB RAG
  |      |
  |      +--> 빠른 의미 검색
  |      +--> 많은 chunk에서 후보 찾기
  |
  +--> qmd
         |
         +--> Obsidian 문서 위치 찾기
         +--> Markdown 탐색 보조

예시: 임대차 수의계약 질문이 처리되는 방식

질문:

임대차계약은 수의계약이 가능한가?

검색 흐름:

질문
  |
  v
수의계약 + 임대차 키워드 확인
  |
  v
시행령 제25조 관련 후보 찾기
  |
  v
제25조 전체가 아니라 제1항 제5호 사목으로 좁힘
  |
  v
해당 micro chunk 원문 발췌 출력

답변 근거:

지방계약법 시행령 제25조 제1항 제5호 사목

답변에 들어가는 원문:

추정가격이 5천만원 이하인 임대차 계약
연액 또는 총액을 기준으로 추정가격을 산정한다

중요한 차이:

예전 답변 context:
  시행령 제25조 전체 + concept 장문 발췌

현재 답변 context:
  필요한 사목 micro chunk 1개

지금 가장 중요한 판단

이 위키의 성능은 단순히 "잘 찾는다"에서 끝나지 않는다.
지금은 다음 질문을 함께 본다.

1. 찾았는가?
2. 첫 번째로 찾았는가?
3. 공식 근거인가?
4. 답변에 써도 되는 자료인가?
5. 너무 긴 원문을 넣지 않고 필요한 부분만 넣었는가?

그래서 현재 기준으로 가장 중요한 검색 경로는 다음과 같다.

목적

추천 도구

이유

답변용 근거 구성

OpenViking hybrid

여러 검색 후보를 합쳐 공식 근거와 concept를 우선 배치한다.

조문번호ㆍ정확 문구 확인

FTS/BM25

제25조제1항제5호사목 같은 정확한 글자 검색에 강하다.

빠른 의미 검색

MongoDB RAG

전체 chunk에서 빠르게 비슷한 내용을 찾는다.

Obsidian 문서 위치 확인

qmd

문서 탐색과 관리 보조에 적합하다.

왜 이게 의미 있는가

일반 AI 답변은 그럴듯하지만 근거가 불명확할 수 있다.
이 위키는 답변 전에 문서를 찾고, 그 문서가 믿을 만한지 확인하고, 필요한 원문만 보여준다.

일반 AI 답변
  질문 -> 바로 답변
  위험: 근거가 불명확할 수 있음

이 LLM Wiki 답변
  질문 -> 근거 검색 -> 공식성 점검 -> 짧은 원문 확인 -> 답변
  장점: 왜 그렇게 답했는지 확인 가능

아직 남은 과제

현재는 답변 품질을 운영 규칙으로 고정하는 단계까지 왔다. 다음 과제는 이 규칙을 실제 반복 질의에서 더 다듬는 것이다.

다음 개선 방향
  |
  +--> 공식 근거가 1순위로 오는 비율을 더 높이기
  |
  +--> 실제 질문 로그를 모아 낮은 신뢰도 후보가 왜 올라오는지 분석하기
  |
  +--> 답변에서 조문, 예규, 실무 판단을 더 짧고 명확하게 분리하기
  |
  +--> 공식 근거가 약한 답변은 계속 concept 승격을 막기

결론

이 위키는 처음에는 문서를 검색 가능한 형태로 넣는 단계였다.
지금은 법령ㆍ예규ㆍ해설ㆍ사례를 나누어 저장하고, 여러 검색 방식을 조합해 근거를 찾고, 그 근거가 답변에 쓸 만한지 평가하는 단계까지 왔다.
가장 큰 변화는 다음이다.

전:
  문서가 많다
  찾기는 어렵다
  근거 신뢰도 판단이 어렵다

후:
  문서를 조각내 저장한다
  질문에 맞는 조각을 찾는다
  공식 근거인지 확인한다
  필요한 조문만 짧게 보여준다

따라서 현재 위키는 단순한 메모 모음이 아니라, 지방계약 질문에 대해 근거를 추적하면서 답변을 만들 수 있는 로컬 지식 시스템에 가깝다.

1
1개의 답글

뉴스레터 무료 구독