KB 보존
모든 프로젝트 지식 베이스와 파일이 업로드된 모든 채팅은 데이터베이스에 벡터 테이블을 소유합니다. 시간이 지나면 대부분 사용이 중단되지만 테이블은 남아 있어 데이터베이스를 더 크고 유지 관리하기 느리게 만듭니다.
**KB 보존(KB Retention)**은 설정 가능한 기간 동안 비활성 상태였던 지식 베이스의 벡터 테이블을 보관합니다. 보관은 검색 색인만 제거합니다. 문서 자체, 그 텍스트, 메타데이터, 폴더, 태그, 업로드된 파일은 유지되므로 Restore KB로 언제든지 지식 베이스를 재구성할 수 있습니다. 보관된 지식 베이스 및 복원을 참고하세요.
Super Admin → Platform Settings → KB Retention에서 엽니다. Platform 권한이 필요합니다.
제거되는 것과 제거되지 않는 것
| 유지 | 제거 |
|---|---|
| 프로젝트, 채팅 및 메시지 | 해당 프로젝트 또는 채팅의 벡터 테이블 |
| 모든 문서 행, 그 텍스트, 메타데이터, 태그 및 폴더 | 해당 벡터 테이블의 색인 |
| 스토리지의 업로드된 파일 | |
| 커넥터 링크(Confluence, Google Drive, SharePoint) 및 크롤링된 URL | |
| 저장된 쿼리 |
테이블이 삭제되기 전에 **불변 매니페스트(manifest)**가 해당 테이블, 색인, 보유한 청크 수, 포함된 모든 문서와 각각의 재구성 방법, 지식 베이스의 마지막 활성 시각, 실행에 사용된 설정을 기록합니다. 매니페스트는 편집하거나 삭제할 수 없습니다. 매니페스트가 작성된 후 테이블이 변경되면 다음 실행이 새 매니페스트를 작성하며, 이전 매니페스트는 이력으로 남습니다.
설정
KB 보존 탭에서 변경하며 다음 실행부터 적용됩니다:
| 설정 | 기본값 | 동작 |
|---|---|---|
| Mode | Report only | Off: 아무것도 실행되지 않습니다. Report only: 일일 실행이 드라이런 보고서를 생성하고 아무것도 변경하지 않습니다. Canary: 카나리 목록에 있는 프로젝트 또는 팀만 보관됩니다. Enforce: 자격이 있는 모든 지식 베이스가 보관됩니다. |
| Project KB retention (days) | 365 | 프로젝트 지식 베이스가 보관되기 전의 비활성 일수. 0이면 프로젝트 지식 베이스의 보관이 꺼집니다. 범위 0-3650. |
| Chat KB retention (days) | 90 | 채팅의 업로드 파일 지식 베이스가 보관되기 전의 비활성 일수. 0이면 채팅의 보관이 꺼집니다. 범위 0-3650. |
모든 변경은 설정 감사 로그와 슈퍼 관리자 감사 로그에 기록됩니다.
배포 설정
이들은 보존을 실행하는 API 및 모든 워커에 도달하는 Helm 값 kbRetention.env의 환경 변수로 환경별로 설정됩니다. 탭은 적용 중인 값을 읽기 전용으로 표시합니다.
| 환경 변수 | 기본값 | 동작 |
|---|---|---|
KB_RETENTION_BATCH_SIZE | 100 | 실행당 최대 보관 지식 베이스 수 (1-5000). |
KB_RETENTION_DROP_DELAY_MS | 1000 | 실행 내 두 테이블 삭제 사이의 대기 시간, 밀리초 (0-60000). |
KB_RETENTION_CANARY_PROJECT_IDS, KB_RETENTION_CANARY_TEAM_IDS | 빈 값 | 모드가 Canary일 때 보관될 수 있는 프로젝트 또는 팀의 모든 프로젝트. 쉼표로 구분. |
KB_RETENTION_EXEMPT_PROJECT_IDS, KB_RETENTION_EXEMPT_TEAM_IDS | 빈 값 | 절대 보관되지 않는 프로젝트 또는 팀의 모든 프로젝트. 해당 팀의 채팅도 면제됩니다. 쉼표로 구분. |
kbRetention:
env:
KB_RETENTION_CANARY_TEAM_IDS: "team-a,team-b"
KB_RETENTION_BATCH_SIZE: "10"
잘못된 숫자는 기본값으로 폴백되고 로그에 기록됩니다.
활동으로 간주되는 것
지식 베이스는 모든 활동이 보존 기간보다 오래되었을 때만 보관됩니다:
- 프로젝트 지식 베이스: 프로젝트의 마지막 활동(채팅 또는 에이전트 사용), 마지막 KB 동기화, 추가된 가장 최근 문서, 프로젝트의 가장 최근 채팅, 벡터 테이블을 읽은 마지막 에이전트 또는 검색, 마지막 복원.
- 채팅 지식 베이스: 채팅의 마지막 메시지, 업로드된 가장 최근 파일, 벡터 테이블을 읽은 마지막 시점, 마지막 복원.
다른 프로젝트에서 오는 읽기도 추적됩니다(예: 다른 프로젝트의 지식 베이스를 검색하도록 구성된 에이전트).
절대 보관되지 않는 것
다음의 경우 지식 베이스를 건너뛰며, 보고서에 그 이유를 기록합니다:
- 문서가 여전히 대기 중이거나 동기화 중이거나 삭제 중일 때;
- 크롤링이 실행 중이거나 프로젝트에 예약된 KB 동기화 또는 반복 크롤링이 구성된 경우;
- 전체 KB 동기화가 진행 중일 때;
- 프로젝트 또는 그 팀이 면제인 경우;
- 벡터 테이블의 어떤 문서든 재구성할 수 없을 때: 보존된 텍스트가 없고 원본이 스토리지에 남아 있는 일반 업로드 파일이 아닌 경우(
source_unavailable); - 소유 프로젝트 또는 채팅을 정확하게 식별할 수 없거나(
orphan,ambiguous_owner,unresolved_name), 데이터베이스의 다른 무언가가 테이블에 의존하는 경우(has_dependencies). 이러한 테이블은 보고서에 나열되지만 절대 삭제되지 않습니다.
자격과 모든 문서가 여전히 재구성 가능한지는 각 테이블이 삭제되기 직전 잠금 하에 다시 확인됩니다. 매니페스트 작성 이후 무언가 변경되었거나(changed_since_manifest) 소스가 사라졌다면(source_unavailable) 해당 실행에서 이 지식 베이스를 건너뜁니다.
긴급 일시 중지
Pause cleanup은 보관을 즉시 중지합니다: 예약된 실행은 아무것도 하지 않고, Run cleanup now는 거부되며, 진행 중인 실행은 다음 삭제 전에 중지됩니다. 복원은 일시 중지되지 않으므로 사용자는 계속해서 지식 베이스를 되돌릴 수 있습니다. 같은 토글로 재개합니다.
운영자는 UI 없이 정리 일시 중지를 위해 백엔드에 KB_RETENTION_HARD_PAUSE=true 환경 변수를 설정할 수도 있습니다.
드라이런 미리보기
Run dry-run은 모든 벡터 테이블을 인벤토리하고 아무것도 변경하지 않은 채 다음을 보여줍니다:
- 보관될 지식 베이스 수와 그것들이 사용하는 스토리지;
- 다른 각각이 왜 건너뛰어질지;
- 지식 베이스별: 소유자, 마지막 활동, 테이블 크기, 소스 재구성 가능 여부.
모드가 Report only인 동안 일일 실행이 자동으로 같은 보고서를 생성합니다.
작업 및 이력
- Cleanup jobs은 모든 보고 및 정리 실행을 트리거, 모드, 상태, 보관·건너뜀·실패한 지식 베이스, 회수된 스토리지, 소요 시간과 함께 나열합니다. 작업을 열면 평가한 각 지식 베이스를 볼 수 있습니다.
- Run cleanup now는 현재 설정으로 정리를 즉시 시작합니다. Canary 또는 Enforce 모드이며 정리가 일시 중지되지 않은 경우에만 사용할 수 있습니다.
- Restore history는 요청자, 진행 상황, 결과 또는 오류와 함께 모든 복원을 나열합니다.
특정 지식 베이스를 지금 보관하기
Archive a knowledge base now는 하나의 프로젝트 또는 채팅 지식 베이스를 즉시 보관하며, 비활성 기간과 카나리 목록을 무시합니다. 재구성 가능성, 면제, 진행 중인 작업을 포함한 다른 모든 규칙은 여전히 적용되며 이 동작은 감사됩니다. 카나리 롤아웃 중 복원을 검증하는 데 사용하세요.
롤아웃 런북
- 프로덕션에서는 Report only. 최소 하루치의 일일 실행 동안 모드를 Report only로 두거나 Run dry-run을 클릭합니다.
- 보고서 검토. 총 회수 가능 스토리지를 확인하고 건너뜀 이유에서 예상 밖의 것이 없는지 살펴보세요.
source_unavailable와 소유권 관련 이유는 0이 아닌 것이 정상입니다. - Canary. 환경의 Helm 값에서
KB_RETENTION_CANARY_TEAM_IDS또는KB_RETENTION_CANARY_PROJECT_IDS를 하나 또는 두 개의 저위험 팀/프로젝트와 작은KB_RETENTION_BATCH_SIZE(예: 10)로 설정하고 배포한 다음 모드를 Canary로 전환하세요. 테스트 프로젝트에 Archive a knowledge base now를 사용하고 복원하여 왕복을 확인하세요. - 측정된 배치. 적절한 배치 크기와 지연으로 Enforce로 전환하고, 정리 작업과 복원 이력에서 실패를 관찰하며 배치 크기를 점진적으로 늘리세요.
- 정상 상태. 기본 배치 크기로 Enforce를 유지하세요. 문제가 보이면 Pause cleanup을 사용하세요. 일시 중지 중에도 복원은 계속 작동합니다.
일일 실행은 02:30 UTC에 시작됩니다.