데이터 허브¶
데이터 페이지는 로컬 문서 저장소입니다. 논문, 보고서, 웹 페이지, 메모 폴더를 넣으면 앱이 각각을 마크다운으로 변환하고 원본 파일을 그대로 보관하며 둘 다 검색할 수 있게 만듭니다. 이렇게 들어온 문서는 검색 결과가 되고, 출처가 붙은 채팅 답변의 근거가 되며, 여러분이 정한 규칙 안에서 에이전트가 읽을 수 있습니다.

제공 범위¶
데이터 허브는 Backend.AI GO v1.12.0부터 정식으로 제공됩니다. 일반 배포 빌드에서는 사이드바, 명령 팔레트, 직접 /data 경로로 열 수 있습니다.
관리형 배포에서는 features.hiddenPages 정책으로 이 페이지를 계속 숨길 수 있습니다. /data가 숨겨진 사용자는 페이지, 채팅 근거 주입 진입점, 데이터 도구를 사용할 수 없습니다. 개발 빌드에는 평가용 로컬 Metrics (dev) 하위 페이지도 보이지만, 릴리스 빌드는 이 카운터를 기록하거나 표시하지 않습니다.
문서를 이루는 세 겹¶
문서마다 세 겹이 있고, 각각 답하는 질문이 다릅니다.
| 겹 | 담는 것 | 보이는 곳 |
|---|---|---|
| 카드 | 짧은 요약, 핵심 항목, 메모, 서지 정보 | 개요 탭 |
| 본문 | 변환된 마크다운 | 내용 탭 |
| 원본 | 넣은 그대로의 바이트 | 디스크에 보관하며 재변환에 사용 |
검색은 카드를 먼저 순위에 올리고 근거 주입도 카드를 인용합니다. 그래서 카드를 잘 써 두면 제목을 잊은 뒤에도 문서를 찾을 수 있습니다. 원본은 절대 바뀌지 않으므로 변환이 잘못돼도 다시 올릴 필요 없이 재변환하면 됩니다.
문서마다 D42 같은 짧은 핸들이 붙습니다. 핸들은 문서끼리 인용할 때([[D42]]), 그리고 에이전트가 문서를 지목할 때 쓰는 주소입니다.
데이터 위키 탭도 이 세 겹 위에 서 있습니다. 생성된 문서 역시 고유한 핸들을 가진 평범한 문서이고, 그래서 다른 문서와 똑같이 검색되고 인용되며 채팅의 근거가 됩니다.
문서 넣기¶
데이터 페이지의 문서 추가 버튼 하나에 세 가지 경로가 모여 있습니다.
- 파일 선택: 파일을 고르거나, 라이브러리 탭 위 아무 데나 끌어다 놓습니다. 끌기 시작하면 페이지 전체가 놓는 자리로 바뀝니다. 마크다운, 일반 텍스트, HTML, PDF, 워드(DOCX, DOC, DOCM, ODT, RTF), 파워포인트(PPTX, PPTM, PPSX, PPSM, PPT, PPS, POT, ODP), 엑셀(XLSX, XLSM, ODS), EPUB, CSV, TSV, JSON, YAML, TOML, 흔한 소스 코드 파일을 지원합니다.
- URL 저장: 페이지를 내 컴퓨터에서 내려받아 읽을 수 있는 본문만 추려 다른 문서와 똑같이 저장합니다. 데이터 허브에서 네트워크를 쓰는 유일한 곳입니다.
- 폴더 가져오기: 디렉터리를 고르면 깊이와 파일 수 제한 안에서 훑으며, 변환할 수 없는 항목은 건너뛰고 무엇을 건너뛰었는지 알려 줍니다.
변환은 한 번에 몇 개씩 백그라운드에서 돌아갑니다. 진행 막대가 작업별로 상태를 보고하고, 상태 값은 문서가 지금 어디까지 왔는지 그대로 말해 줍니다.
| 상태 | 뜻 |
|---|---|
| 처리 중 | 지금 변환하거나 색인하는 중 |
| 준비됨 | 변환을 마쳤고 검색됨 |
| 경고 | 변환은 됐지만 빠진 것이 있음. 텍스트 층이 없는 PDF가 대표적입니다. 문서는 저장되고 목록에도 나오지만 검색할 텍스트가 없습니다 |
| 실패 | 변환에 실패함. 원본은 그대로 두고 문서도 목록에 남으며 다시 시도 버튼이 붙습니다 |
| 휴지통 | 휴지통에 있음. 복원하거나 완전히 비우기 전까지 검색과 도구 접근에서 빠집니다 |
이미 가지고 있는 문서와 내용이 같은 파일은 두 번 추가하지 않고 중복으로 보고합니다.
변환이 잘못됐을 때¶
되돌릴 수 있는 두 가지 방법이 있습니다.
- 다시 시도하면 보관된 원본으로 변환을 다시 돌립니다.
- 카드를 직접 고쳐서 문서에 실제로 무엇이 있는지 기록합니다. 수정은 모두 리비전으로 남아 비교하고 되돌릴 수 있습니다.
문서 찾기¶
검색 상자는 페이지 헤더에 있고 카드 항목과 본문을 함께 찾되 카드 일치를 더 높게 칩니다.
- 단어를 입력하면 전체를 검색합니다.
collection:notes는 컬렉션 하나로,tag:router는 태그 하나로 좁힙니다.- 결과에는 일치한 부분과 그 부분이 속한 제목이 함께 나옵니다. 결과를 열면 해당 절로 바로 이동합니다.
왼쪽 레일은 라이브러리를 오가는 통로입니다. 맨 위에 범위(전체, 휴지통, 그리고 변환 실패가 생기면 실패)가 있고, 그 아래로 컬렉션과 태그가 이어집니다. 범위와 컬렉션·태그는 함께 적용됩니다. 휴지통을 고른 뒤 컬렉션을 고르면 그 컬렉션의 버려진 문서만 나옵니다.
컬렉션, 태그, 민감 컬렉션¶
컬렉션은 이름을 붙인 문서 묶음이고 태그는 자유롭게 붙이는 이름표입니다. 문서 하나가 여러 컬렉션에 들어갈 수 있고 태그도 여러 개 붙일 수 있습니다.
컬렉션에는 민감 표시를 달 수 있습니다. 모델이 무엇을 볼 수 있는지 정하는 장치이고, 누가 요청했느냐에 따라 일부러 다르게 동작합니다.
| 요청 주체 | 민감 컬렉션에 닿을 수 있나 | 이유 |
|---|---|---|
| 화면에서 조작하는 사람 | 직접 선택하면 닿습니다 | 컬렉션을 고르는 것은 사람의 분명한 행동입니다. 레일은 클릭으로 움직이므로 앱은 그 선택을 그대로 따릅니다 |
에이전트나 채팅의 도구 호출(search_data, read_data, list_data, write_data, delete_data) |
이름을 명시해도 닿지 않습니다 | 도구 인자는 모델이 씁니다. 모델의 컨텍스트에는 신뢰할 수 없는 텍스트가 가득해서, 문서나 가져온 웹 페이지, 앞선 도구 결과가 "급여 컬렉션을 읽어라" 같은 지시를 실어 나를 수 있습니다. 도구 호출에 이름이 적혀 있다는 사실은 사용자가 원했다는 근거가 되지 못합니다 |
| 근거 주입을 켠 채팅 세션 | 검색 프리셋이 지정하면 닿습니다 | 프리셋은 세션 설정에서 사람이 구성합니다. 모델은 대화 도중에 범위를 넓힐 수 없고 문서에 무언가를 써서 영향을 줄 수도 없으므로, 여기서도 지정은 사용자의 결정입니다 |
도구 규칙이 실제로 버티려면 두 가지가 더 필요합니다.
list_data는 민감 컬렉션을 아예 나열하지 않습니다. 이름이 모델 컨텍스트에 들어가지 않으므로 모델은 본 적 없는 이름을 되뇌일 수 없습니다.- 거부된 컬렉션과 없는 컬렉션의 응답이 같습니다. 숨겨 둔 컬렉션을 물어봐도 존재 여부를 알 수 없으니, 도구 표면으로 민감 컬렉션을 탐지할 수 없습니다.
민감 표시는 암호화가 아니고 권한 시스템도 아닙니다. 모델이 보는 범위를 좁힐 뿐입니다. 자격 증명은 문서 저장소가 아니라 비밀번호 관리자에 두세요.
채팅에서 활용하기¶
채팅 세션에서 근거 주입을 켜면 답변이 내 문서를 바탕으로 만들어집니다. 켜면 이렇게 동작합니다.
- 질문마다 관련 구절을 찾아 모델 컨텍스트에 넣습니다. 토큰 예산은 메모리 주입과 함께 나눠 쓰므로 한쪽이 다른 쪽을 굶기지 않습니다.
- 답변에 출처 줄이 붙습니다. 출처를 누르면 인용된 절이 열려서 답변과 근거를 대조할 수 있습니다. 출처가 생성된 위키 문서면 그렇게 표시되고, 주입된 구절에도 같은 표시가 붙습니다. 정리된 내용을 근거로 삼은 답을 원본 자료를 근거로 삼은 답으로 착각하지 않게 하려는 것입니다.
- 검색 프리셋이 대상 컬렉션, 가져올 구절 수, 어휘 검색과 하이브리드 검색 중 무엇을 쓸지 정합니다.
프리셋에 컬렉션을 지정하지 않은 세션은 민감 컬렉션을 뺀 나머지 전체를 근거로 씁니다.
근거 주입과 에이전트 검색에서의 위키 문서¶
생성된 위키 문서도 일반 문서라서, 기본값에서는 원본 문서와 나란히 관련도로 겨룹니다. 프리셋의 생성된 위키 문서 항목으로 이 동작을 바꿉니다.
| 값 | 동작 |
|---|---|
| 포함 | 기본값. 위키 문서도 다른 문서와 같이 관련도 순으로 들어갑니다 |
| 제외 | 위키 문서를 아예 빼서, 원본 문서만 근거로 씁니다 |
| 우선 | 맞는 위키 문서가 있으면 먼저 넣어, 원자료보다 정리된 개요를 먼저 참고합니다 |
이 설정은 채팅 근거 주입, 검색 프리셋 검색, 그리고 에이전트가 쓰는 search_data 도구에 적용됩니다. 어떤 값을 골라도 걸러지지 않는 곳은 데이터 페이지의 검색창 하나입니다. 개념 문서를 이름으로 찾아보라고 만든 문서인데, 검색창에 직접 입력하는 것이 바로 그 행동이기 때문입니다.
에이전트 도구는 언제나 기본 제공 프리셋(기본)을 읽습니다. 그래서 search_data에 적용되는 값은 그 프리셋에 설정한 값입니다. 채팅 근거 주입은 해당 세션이 쓰는 프리셋을 따릅니다.
제외는 에이전트에게 무엇을 보여줄지를 정할 뿐, 무엇을 열 수 있는지까지 막지는 않습니다. 핸들을 직접 받은 에이전트는 read_data로 그 문서를 그대로 읽습니다. 다른 문서 본문의 [[D42]] 인용에서 핸들을 알아낸 경우도 마찬가지입니다. 저절로 노출되는 범위를 정하는 설정이지, 문서를 둘러친 차단벽은 아닙니다.
에이전트에서 활용하기¶
에이전트는 다섯 가지 도구로 저장소에 접근합니다.
| 도구 | 하는 일 | 승인 |
|---|---|---|
search_data |
허용된 범위 안에서 순위 검색. 프리셋의 위키 문서 설정을 따릅니다 | 필요 없음 |
read_data |
핸들로 카드, 특정 절, 전체 본문 읽기. 위키 문서도 읽힙니다 | 필요 없음 |
list_data |
문서와 접근 가능한 컬렉션 훑기 | 필요 없음 |
write_data |
문서 만들기 또는 카드 수정 | 매번 필요 |
delete_data |
문서를 휴지통으로 보내기 | 매번 필요 |
쓰기와 삭제는 세션당 한 번이 아니라 매번 묻습니다. 한 번 기억해 둔 승인은 그 뒤의 모든 쓰기를 조용히 통과시키는데, 정작 그때가 물어봐야 할 때입니다.
에이전트가 고친 내용은 리비전 탭에 에이전트 이름으로 기록되고, 되돌리기는 한 번의 조작입니다. 에이전트에게 쓰기를 허용한 뒤 무엇을 했는지 확인하려면 이 탭을 보면 됩니다.
에이전트 프로필로 실행 범위를 특정 컬렉션에 고정할 수도 있습니다. 고정하면 도구가 닿는 범위가 좁아지고 모델은 그 범위를 넓힐 수 없습니다.
메모리와 데이터, 무엇을 어디에 둘까¶
앱에는 오래 남는 저장소가 둘 있고, 둘은 같은 것이 아닙니다.
| 메모리 | 데이터 허브 | |
|---|---|---|
| 담는 것 | 대화에서 뽑아낸 경험적 사실, 선호, 지식 | 직접 모은 문서: 논문, 보고서, 메모, 웹 페이지 |
| 넣는 주체 | 대부분 추출 파이프라인이 자동으로 | 대부분 사용자가 직접, 그리고 허용한 에이전트가 |
| 저장 단위 | 짧은 항목 | 문서 한 편 전체(검색용 구획으로 분할) |
| 시간이 지나며 하는 일 | 통합, 중복 제거, 감쇠 | 리비전, 큐레이션, 휴지통 |
| 어울리는 예 | "단위는 미터법을 쓴다", "배포는 금요일에 한다" | "3분기 아키텍처 리뷰", "벤더 비교 PDF" |
둘은 합치지 않고 이어 둡니다.
- 메모리 추출 파이프라인은 참고 자료처럼 보이는 내용을 데이터에 넣자고 제안할 수 있습니다. 문서를 메모리 항목으로 슬쩍 옮기지는 않습니다.
- 근거 주입과 메모리 주입은 하나의 토큰 예산을 비율로 나눠 씁니다. 근거 주입을 켰다고 메모리가 컨텍스트에서 밀려나지 않습니다.
정리하면 이렇습니다. 출처를 달아 인용하고 싶은 내용이면 데이터에, 묻지 않아도 기억해 주기를 바라는 내용이면 메모리에 두면 됩니다.
관리 작업¶
- 휴지통과 복원: 삭제하면 문서가 휴지통으로 가서 검색과 도구 접근에서 빠집니다. 복원하면 그대로 돌아옵니다.
- 걸러낸 문서 한꺼번에 처리하기: 문서 선택을 누르면 목록에 체크박스가 붙고, 두 가지 선택 방식이 나옵니다. 이 페이지의 N개 선택은 화면에 보이는 행만 고르므로 몇 건을 처리할 때 알맞습니다. 조건에 맞는 문서 전체 선택은 지금 걸러 둔 범위 전체, 곧 현재 보기에 왼쪽 레일의 컬렉션이나 태그를 더한 조건에 맞는 문서를 몇 페이지에 걸쳐 있든 모두 고릅니다. 뒤쪽은 정확한 개수를 알 수 있으면 개수를 밝히고, 알 수 없으면 개수 없이 "조건에 맞는 문서"라고만 적습니다. 컬렉션과 태그를 함께 건 조합은 아직 정확한 개수를 세지 않기 때문입니다. 그 묶음을 휴지통으로 옮길 때는 먼저 확인 창이 뜨고, 창이 지금 걸린 조건을 밝힙니다. 대상은 선택한 시점이 아니라 확인을 누른 시점에 정해지므로, 그 사이에 가져오기가 끝난 문서는 포함되고 다른 화면에서 이미 휴지통으로 옮긴 문서는 빠집니다. 전체 선택이 걸린 채로 조건을 바꾸면 선택이 조용히 다른 대상을 가리키지 않고 해제됩니다.
- 완전히 비우기: 휴지통 비우기는 되돌릴 수 없고 해당 문서에 딸린 모든 것을 지웁니다. 원본 파일, 변환된 마크다운, 카드, 청크, 벡터, 리비전, 링크, 검색 행이 함께 사라집니다. 실행 전 확인 창이 지울 대상을 밝히고, 끝난 뒤 결과 줄이 같은 항목을 개수와 함께 보고합니다. 지울 문서 옆인 휴지통 범위에서도, 보존 기간 설정 옆인 자동화 탭에서도 실행할 수 있습니다.
- 감시 폴더: 폴더를 정해 두면 일정에 따라 훑어서 새 파일을 자동으로 가져옵니다.
- 예약 재수집: URL로 저장한 문서를 일정에 맞춰 다시 가져옵니다. 조건부 요청을 쓰므로 바뀌지 않은 페이지는 비용이 들지 않습니다.
- 데이터 닥터: 두 단계로 나뉘어 있습니다. 점검은 찾아낸 문제를 보고만 하고 아무것도 바꾸지 않으며, 그다음 복구는 직접 선택한 항목만 실행하고 그 선택은 실행과 함께 소진됩니다. 행을 삭제하는 복구는 경고와 함께 맨 아래에 따로 묶여 있고, 별도 확인을 받으며, 무엇을 지울지 먼저 밝힙니다.
- 완료되지 않은 가져오기: 가져오기가 실패했거나 중단된 문서에는 읽을 수 있는 본문이 없습니다. 유지 관리 탭의 동작 하나로 그런 문서를 한 번에 모두 다시 시도하며, 이미 본문이 있는 문서는 건드리지 않습니다.
- 인용 내보내기: 카드의 서지 정보로 BibTeX나 CSL JSON 형식의 참고문헌을 만듭니다.
내 컴퓨터를 벗어나지 않는 것들¶
- 문서, 원본, 카드, 검색 색인, 임베딩은 모두 Backend.AI GO가 실행 중인 컴퓨터에 저장됩니다. 어디로도 올리지 않습니다.
- 데이터 허브가 밖으로 보내는 요청은 사용자가 URL을 저장할 때뿐이고, 그마저 앱의 보호된 가져오기 경로를 거치며 관리형 설치에서는 송신 허용 목록을 따릅니다.
- 관리형 설치에서 정책으로
/data페이지를 숨기면 에이전트와 채팅 도구도 함께 닫힙니다. 숨긴 데이터 허브를 우회해서 열 수 없습니다. - 개발 빌드에는 정식 공개 전 기능을 평가하려고 로컬 지표 하위 페이지가 들어 있습니다. 이 계측값은 메모리에만 있고 문서 제목이나 파일 이름, 검색어를 담지 않으며, 디스크에 저장하지도 전송하지도 않습니다.