지식 베이스의 작동 방식
AI가 답장을 제안하고, 이메일 초안을 쓰고, 어시스턴트에서 답할 때 쓰는 메모, 파일, 웹 페이지로, 워크스페이스 전체, 도메인 하나 또는 주소 하나를 위해 보관됩니다.
설명
지식 베이스에는 AI가 여러분의 사업에 대해 알아야 하지만 메일 자체에서는 배울 수 없는 것을 담습니다. 가격, 정책, 영업 시간, 제품 정보, 그리고 팀이 답하는 방식 같은 것입니다. 메모, 파일, 웹 페이지를 추가하면 AI는 여러분을 대신해 글을 쓸 때마다 중요한 부분을 읽습니다.
워크스페이스마다 수준이 세 개인 저장소가 하나 있어, 한 브랜드나 한 팀에만 해당하는 답은 그곳에 머뭅니다. 앱의 워크스페이스 → 지식 베이스, REST API, SDK와 CLI, 그리고 어시스턴트와 MCP 클라이언트에서 읽고 바꿀 수 있습니다.
세 가지 수준
모든 항목은 한 수준, 즉 scope에 있습니다. 주소를 위해 쓰는 AI는 그 주소, 그다음 그 도메인, 그다음 워크스페이스 전체를 읽으며, 두 항목이 엇갈리면 더 구체적인 쪽이 이깁니다.
| 수준 | `scope` | 읽히는 대상 |
|---|---|---|
| 워크스페이스 전체 | 빈 값 | 워크스페이스의 모든 주소 |
| 도메인 | @acme.com | 그 도메인의 모든 주소(나중에 추가한 주소 포함) |
| 주소 | [email protected] | 그 주소 하나 |
- 플러스 주소는 기본 주소도 읽으므로,
[email protected]은[email protected]을 위해 보관된 내용을 씁니다. GET /knowledge/levels는 볼 수 있는 모든 수준과 각 수준의 항목 수, 그곳에서 항목을 바꿀 수 있는지를 보여 줍니다.- 도메인을 다른 워크스페이스로 옮기면 그 도메인과 그 주소들을 위해 보관된 항목도 함께 옮겨집니다.
메모, 파일, 웹 페이지
- 메모는 그 자리에서 쓰는 텍스트로, 최대 20,000자이며 원하면 Markdown으로 쓸 수 있습니다. 보통 1~2초 안에 AI가 쓸 수 있게 됩니다.
- 파일은 백그라운드에서 텍스트로 읽힙니다. PDF, Word 문서, 스프레드시트(Excel, OpenDocument, Numbers, CSV), OpenDocument 텍스트, HTML, XML, Markdown, 일반 텍스트, JSON, 이미지(JPEG, PNG, WebP, SVG)를 읽을 수 있습니다. 문서는 최대 20MB, 이미지는 최대 10MB입니다.
- 웹 페이지는 공개
http또는https주소에서 가져와 백그라운드에서 최대 5MB까지 읽습니다. 한 수준에는 같은 페이지가 한 번만 들어가며, 새로 고치면 바뀐 페이지를 다시 가져옵니다. - 한 항목에서 텍스트를 최대 1,000,000자까지 보관하며, 검색을 위해 텍스트를 제목 아래의 구절로 나눕니다.
항목은 읽는 동안 queued, 이어서 processing이 되고, AI가 쓸 수 있으면 ready, 읽지 못하면 이유를 알려 주는 failure와 함께 failed가 됩니다. 바뀐 항목은 queued로 돌아가며, 새 텍스트가 준비될 때까지 AI는 이전 텍스트를 계속 씁니다. 항목을 새로 고치면 다시 읽고 실패를 지웁니다.
| 요금제 | 항목 | 텍스트 글자 수 |
|---|---|---|
| Free | 50 | 1,000,000 |
| Starter | 500 | 10,000,000 |
| Business | 2,000 | 50,000,000 |
| Enterprise | 10,000 | 200,000,000 |
항목은 추가되는 순간, 그 글자 수는 텍스트를 읽은 순간 허용량에 포함됩니다. 허용량을 넘는 추가는 거부되며, 텍스트가 허용량을 넘게 될 파일이나 페이지는 실패로 남습니다. GET /knowledge/usage로 두 숫자를 모두 확인할 수 있습니다.
AI가 사용하는 방식
- 스레드의 최신 메시지 아래에 뜨는 답장 제안은 메시지가 도착한 주소의 수준을 읽습니다.
- 설명으로 쓰는 초안은 편집기에서든
POST /emails/compose로든 보내는 주소의 수준을 읽습니다. 응답의sources에는 참고한 항목이 나옵니다. - 어시스턴트는 열려 있는 스레드의 수준을, 열린 스레드가 없으면 볼 수 있는 모든 수준을 읽으며,
searchKnowledge도구로 지식 베이스를 직접 검색할 수 있습니다. GET /threads/{id}/reply-suggestions의 응답은 제안이 근거로 삼은 항목을sources에 나열합니다.
고정된 메모는 쓰고 있는 내용과 맞든 안 맞든 그 수준의 모든 프롬프트에 들어갑니다(수준마다 최대 2,000자). 나머지 자리, 전체 약 6,000자는 의미와 단어로 찾은, 요청에 가장 잘 맞는 구절에 쓰입니다. 색인이 곧바로 응답하지 않으면 AI는 기다리게 하지 않고 색인 없이 씁니다.
AI는 지식 베이스의 내용을 지시가 아닌 참고 자료로 다루고, 해당하지 않는 것은 빼며, 쓰는 글에서 지식 베이스를 언급하지 않도록 지시받습니다.
늘려 가는 방법
항목은 앱의 워크스페이스 → 지식 베이스에서, 또는 코드에서 API, SDK, CLI로 추가하세요. 어시스턴트와 MCP 클라이언트는 무언가를 기억해 달라고 하면 메모를 저장하거나 링크를 추가할 수 있고, 항목을 바꾸고, 새로 고치고, 삭제할 수도 있습니다. 앱의 채팅에서 항목 추가, 변경, 새로 고침은 직접 요청하지 않았다면 먼저 묻고, 삭제는 항상 먼저 묻습니다.
각 항목은 어디서 왔는지를 origin(app, api, assistant, mcp)에, 누가 추가했는지를 createdBy에 기록합니다.
지식 베이스는 스스로도 자랍니다. AI는 팀이 보낸 답장에서 메모를 제안하고 아직 아무것도 답하지 않는 질문을 적어 두며, 커넥터는 사이트 전체, 사이트맵, 피드, 헬프 센터를 최신으로 유지하고, 링크는 정해진 주기로 다시 읽을 수 있습니다. 아래 각 절에서 하나씩 설명합니다.
답장에서 배운 제안
워크스페이스의 누군가가 대화에서 답장하면 AI는 그 답장과 답장이 응답하는 메시지를 읽고, 다른 사람에게도 통할 사실을 최대 세 가지 제안합니다. 예를 들어 가격, 정책, 배송 기간 같은 것입니다. 각 제안은 검토를 기다리는 메모이며, 답장을 보낸 도메인의 수준에 놓이고, 그 도메인이 워크스페이스의 도메인이 아니면 워크스페이스 전체 수준에 놓입니다. 지식 베이스에 이미 있는 사실은 빠지며, 하루에 최대 100개의 답장을 읽습니다.
앱이나 GET /knowledge/suggestions로 검토하세요. 제안을 수락하면 메모로 저장되며, 그때 제목, 텍스트, 수준, 고정 여부를 바꿀 수 있습니다. 필요 없으면 거절하세요. 같은 사실이 다시 제안되면 두 번째 제안이 생기지 않고 occurrences가 올라가며, 거절한 제안은 다시 나오지 않습니다.
아직 아무것도 답하지 않는 질문
AI가 받은 메시지에 대한 답장을 제안할 때, 보낸 사람이 사업에 관해 물었지만 대화도 지식 베이스도 답하지 않는 것을 최대 세 가지 적어 둡니다. 예를 들어 그 나라로 배송하는지 같은 것입니다. 각각은 메시지가 도착한 도메인의 수준에서, 그 도메인이 워크스페이스의 도메인이 아니면 워크스페이스 전체 수준에서 질문이 되며, 같은 질문이 다시 오면 occurrences가 올라가므로 어떤 질문이 가장 자주 나오는지 알 수 있습니다.
질문에 답하면 메모가 됩니다. 답을 텍스트로 넣어 수락하면, 바꾸지 않는 한 제목은 질문 그대로입니다. 그때부터 AI는 그 질문이 나올 때마다 그 답을 씁니다. 답이 필요 없는 질문은 거절하면 다시 적히지 않습니다.
중복과 충돌
각 항목은 색인될 때 모든 수준에서 가장 가까운 항목과 비교되고, 바뀔 때마다 다시 비교됩니다. 거의 같은 말을 하는 두 항목에는 duplicate 플래그가 붙습니다. 가격이나 마감일 같은 사실에서 서로 어긋나는, 밀접한 두 항목에는 conflict 플래그가 붙고, 무엇이 어긋나는지 한 문장으로 알려 줍니다. AI는 하루에 최대 200번 충돌을 확인합니다.
- 각 항목은 자신을 가리키는 열린 플래그의 수를
flags에 가지며,GET /knowledge/flags는 이를 최신순으로 나열합니다. - 플래그를 해결하려면 두 항목 중 하나를 바꾸거나 삭제하세요. 바뀐 항목은 색인이 끝나면 다시 비교됩니다.
- 두 항목이 지금 그대로 괜찮다면 플래그를 거절하세요. 같은 쌍은 같은 이유로 다시 플래그가 붙지 않습니다.
- 플래그는 두 항목을 모두 볼 수 있는 사람에게만 보입니다.
커넥터
커넥터는 한 소스의 여러 페이지를 지식 베이스에 두며, 각 페이지를 커넥터 수준의 링크 항목으로 두고, 소스가 바뀌면 최신으로 유지합니다.
| 종류 | 읽는 내용 |
|---|---|
| site | 지정한 페이지와, 같은 호스트의 같은 경로 아래에서 그 페이지가 링크하는 페이지. 사이트의 robots.txt가 막은 것은 제외 |
| sitemap | 사이트맵에 있는 모든 페이지, 또는 사이트맵 인덱스와 그 사이트맵 최대 5개 |
| feed | RSS 또는 Atom 피드의 항목 |
| zendesk | Zendesk 헬프 센터에 게시된 문서. https://example.zendesk.com 같은 주소에서 읽음 |
- 첫 동기화는 1분 안에 시작됩니다. 그 뒤에는 7일마다, 또는 1일이나 30일마다 다시 동기화하거나, 요청할 때만 동기화하며, 요청한 동기화도 1분 안에 시작됩니다.
- 최대 25페이지, 또는 지정한 수만큼 최대 200페이지를 유지하며, 그 항목은 요금제 한도에 포함됩니다. 한도에 이르면 동기화는 페이지 추가를 멈춥니다.
- 동기화할 때마다 새 페이지를 추가하고, 바뀐 페이지를 다시 읽고, 소스에서 사라진 페이지의 항목을 지웁니다.
- 같은 수준에 직접 링크로 추가한 페이지는 그 항목에 그대로 남으며, 커넥터를 삭제해도 그 커넥터가 추가한 항목만 지워집니다.
- 커넥터를 다른 수준으로 옮기면 그 항목도 함께 옮겨집니다.
최신으로 유지되는 링크
링크는 1일, 7일, 30일마다 저절로 다시 읽을 수 있습니다. 추가할 때나 나중에 refreshDays를 설정하세요. 페이지가 바뀌었으면 읽는 즉시 새 텍스트가 이전 텍스트를 대신하고, 그때까지 AI는 이전 텍스트를 계속 씁니다. 다음에 읽는 시점은 nextRefreshAt에서 알 수 있으며, 가져오지 못한 페이지는 다음 날 다시 시도합니다.
대화에서 메모 저장하기
AI는 대화를 읽고, 팀이 다시 필요로 할 사실로 메모 하나를 초안으로 작성할 수 있습니다. 개인 정보와 그 대화에만 해당하는 내용은 뺍니다. 보관하기 전까지는 아무것도 저장되지 않습니다. 초안을 읽고 원하는 대로 고친 뒤 메모로 저장하면, 원래 대화가 threadId에 기록됩니다.
초안은 수준을 제안합니다. 대화가 도착한 도메인에 항목을 추가할 수 있으면 그 도메인, 아니면 워크스페이스 전체나 그 주소입니다. 초안 하나마다 AI 작업을 한 번 씁니다. 코드에서는 knowledge:write에 더해 threads:read가 필요한 POST /knowledge/drafts로 초안을 만들고, 같은 threadId를 넣어 POST /knowledge/notes로 저장하세요.
검색 결과 다시 정렬하기
검색은 의미와 단어로 구절을 찾습니다. POST /knowledge/search에 rerank: true를 함께 보내면 AI가 상위 25개 구절도 읽고 질문에 가장 잘 답하는 순서로 정렬하며, 도움이 안 되는 구절은 뺍니다. 1~2초가 더 걸리고 AI 작업을 한 번 쓰므로 요청할 때만 실행됩니다. 실행되었는지는 응답의 reranked로 알 수 있으며, 제시간에 끝나지 않으면 구절은 평소 순서를 유지합니다.
사용 통계
GET /knowledge/stats는 AI가 지난 30일 동안, 요청하면 최대 90일 동안 지식 베이스를 어떻게 썼는지 보여 줍니다.
- 답장 제안, 초안, 어시스턴트, 검색이 무언가를 찾은 횟수, 찾아보고도 아무것도 못 찾은 횟수, 무언가를 찾은 비율을 날짜별로 보여 줍니다.
- 그 사용이 일어난 곳:
compose,reply,chat,tool,search. - 가장 많이 쓰인 항목과, 준비되었지만 한 번도 쓰이지 않은 항목의 수. 각 항목은 자기 횟수를
uses에, 마지막 사용 시점을lastUsedAt에 가집니다. - 검토를 기다리는 제안과 질문의 수, 열린 플래그의 수.
학습 끄기
워크스페이스 설정 knowledgeLearning은 기본으로 켜져 있습니다. PATCH /settings와 { "knowledgeLearning": false }로 끄면 AI는 제안할 사실을 찾으려 보낸 답장을 읽는 일, 받은 메일에서 질문을 적어 두는 일, 항목의 충돌을 확인하는 일을 멈춥니다. 중복에는 계속 플래그가 붙고, 이미 나온 제안은 수락하거나 거절할 수 있도록 남습니다.
읽고 바꿀 수 있는 사람
- 읽기에는
knowledge:read, 변경에는 읽기를 포함하는knowledge:write가 필요합니다. 기본 제공 역할 중 Admin, Member, Developer는 항목을 바꿀 수 있고, Viewer는 읽을 수 있으며, Billing은 닿지 않습니다. - 항목을 바꾸려면 그 수준이 덮는 모든 주소에 닿아야 합니다. 워크스페이스 전체에는 모든 주소가, 도메인에는 도메인 전체가, 주소에는 그 주소가 필요합니다. 특정 주소로 제한된 키나 앱은 그 주소, 또는 통째로 가진 도메인에서만 항목을 바꿀 수 있습니다.
- 특정 주소로 제한된 사람은 워크스페이스 전체의 항목과 자신의 주소 및 그 주소 도메인의 항목을 읽습니다. 그 사람을 대신하는 어시스턴트와 MCP 도구는 그 사람이 보낼 수 있는 주소에서만 항목을 추가하고 바꿉니다.
개인정보
- 모든 항목의 텍스트는 저장 시 암호화됩니다. 메모의 본문, 파일이나 페이지에서 읽은 텍스트, 그리고 모든 구절입니다. 단어 검색이 비교하는 단어는 단어 그대로가 아니라 키가 있는 해시로 저장됩니다.
- 파일은 텍스트로 변환되고 웹 페이지는 OpenEmail이 읽습니다. 데이터를 처리하는 모든 서비스는 개인정보 처리방침에 나와 있습니다.
- 의미로 검색하기 위해 각 구절과 각 질문은 무엇에 관한 것인지 나타내는 숫자 목록인 벡터로 바뀝니다. 벡터는 메일의 의미 검색과 마찬가지로 암호화된 텍스트 옆에 암호화되지 않은 채 저장됩니다.
- 프롬프트가 쓰는 구절은 프롬프트의 나머지와 마찬가지로 답장, 초안, 답변을 쓰는 AI 모델로 갑니다.
- 항목을 삭제하면 그 파일, 텍스트, 구절이 한꺼번에 사라집니다. 지식 베이스는 워크스페이스 내보내기에 포함되며, 워크스페이스를 삭제하면 지식 베이스도 삭제됩니다.
- 학습이 켜져 있는 동안 AI 모델은 메모를 제안하려고 대화에서 보낸 각 답장을 그 답장이 응답하는 메시지와 함께 읽고, 충돌을 확인하려고 밀접한 두 항목을 읽습니다. 설정
knowledgeLearning으로 둘 다 끌 수 있습니다.
코드, 터미널, 에이전트에서
위의 모든 것은 REST API의 /knowledge, SDK의 openemail.knowledge(TypeScript)와 client.knowledge(Python, Ruby, PHP), CLI의 openemail knowledge, 그리고 MCP 도구에 있습니다. 키에는 읽기 위해 knowledge:read, 항목을 바꾸기 위해 knowledge:write가 필요합니다.