메인 콘텐츠로 건너뛰기

KB 보존

모든 프로젝트 지식 베이스와 파일이 업로드된 모든 채팅은 데이터베이스에 벡터 테이블을 소유합니다. 시간이 지나면 대부분 사용이 중단되지만 테이블은 남아 있어 데이터베이스를 더 크고 유지 관리하기 느리게 만듭니다.

**KB 보존(KB Retention)**은 설정 가능한 기간 동안 비활성 상태였던 지식 베이스의 벡터 테이블을 보관합니다. 보관은 검색 색인만 제거합니다. 문서 자체, 그 텍스트, 메타데이터, 폴더, 태그, 업로드된 파일은 유지되므로 Restore KB로 언제든지 지식 베이스를 재구성할 수 있습니다. 보관된 지식 베이스 및 복원을 참고하세요.

Super Admin → Platform Settings → KB Retention에서 엽니다. Platform 권한이 필요합니다.

제거되는 것과 제거되지 않는 것​

유지제거
프로젝트, 채팅 및 메시지해당 프로젝트 또는 채팅의 벡터 테이블
모든 문서 행, 그 텍스트, 메타데이터, 태그 및 폴더해당 벡터 테이블의 색인
스토리지의 업로드된 파일
커넥터 링크(Confluence, Google Drive, SharePoint) 및 크롤링된 URL
저장된 쿼리

테이블이 삭제되기 전에 **불변 매니페스트(manifest)**가 해당 테이블, 색인, 보유한 청크 수, 포함된 모든 문서와 각각의 재구성 방법, 지식 베이스의 마지막 활성 시각, 실행에 사용된 설정을 기록합니다. 매니페스트는 편집하거나 삭제할 수 없습니다. 매니페스트가 작성된 후 테이블이 변경되면 다음 실행이 새 매니페스트를 작성하며, 이전 매니페스트는 이력으로 남습니다.

설정​

KB 보존 탭에서 변경하며 다음 실행부터 적용됩니다:

설정기본값동작
ModeReport onlyOff: 아무것도 실행되지 않습니다. 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_SIZE100실행당 최대 보관 지식 베이스 수 (1-5000).
KB_RETENTION_DROP_DELAY_MS1000실행 내 두 테이블 삭제 사이의 대기 시간, 밀리초 (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는 하나의 프로젝트 또는 채팅 지식 베이스를 즉시 보관하며, 비활성 기간과 카나리 목록을 무시합니다. 재구성 가능성, 면제, 진행 중인 작업을 포함한 다른 모든 규칙은 여전히 적용되며 이 동작은 감사됩니다. 카나리 롤아웃 중 복원을 검증하는 데 사용하세요.

롤아웃 런북​

  1. 프로덕션에서는 Report only. 최소 하루치의 일일 실행 동안 모드를 Report only로 두거나 Run dry-run을 클릭합니다.
  2. 보고서 검토. 총 회수 가능 스토리지를 확인하고 건너뜀 이유에서 예상 밖의 것이 없는지 살펴보세요. source_unavailable와 소유권 관련 이유는 0이 아닌 것이 정상입니다.
  3. Canary. 환경의 Helm 값에서 KB_RETENTION_CANARY_TEAM_IDS 또는 KB_RETENTION_CANARY_PROJECT_IDS를 하나 또는 두 개의 저위험 팀/프로젝트와 작은 KB_RETENTION_BATCH_SIZE(예: 10)로 설정하고 배포한 다음 모드를 Canary로 전환하세요. 테스트 프로젝트에 Archive a knowledge base now를 사용하고 복원하여 왕복을 확인하세요.
  4. 측정된 배치. 적절한 배치 크기와 지연으로 Enforce로 전환하고, 정리 작업과 복원 이력에서 실패를 관찰하며 배치 크기를 점진적으로 늘리세요.
  5. 정상 상태. 기본 배치 크기로 Enforce를 유지하세요. 문제가 보이면 Pause cleanup을 사용하세요. 일시 중지 중에도 복원은 계속 작동합니다.

일일 실행은 02:30 UTC에 시작됩니다.