Перейти к документации
API

Как работает база знаний

Заметки, файлы и веб-страницы, которые ИИ использует, когда предлагает ответы, пишет черновики писем и отвечает в ассистенте, хранящиеся для всего рабочего пространства, одного домена или одного адреса.

Что это

База знаний хранит то, что ИИ должен знать о вашем бизнесе и не может узнать из самой почты: цены, правила, часы работы, сведения о продуктах и то, как отвечает ваша команда. Вы добавляете заметки, файлы и веб-страницы, а ИИ читает нужные части каждый раз, когда пишет за вас.

На каждое рабочее пространство одно хранилище с тремя уровнями, так что ответ, верный только для одного бренда или одной команды, остаётся с ними. Её читают и меняют в приложении в разделе Рабочее пространство → База знаний, через REST API, из SDK и CLI, а также ассистент и MCP-клиенты.

Три уровня

Каждый элемент находится на одном уровне, своём scope. ИИ, который пишет от имени адреса, читает этот адрес, потом его домен, потом всё рабочее пространство, а когда два элемента расходятся, побеждает более конкретный.

Уровень`scope`Читается для
Всё рабочее пространствопустоКаждый адрес в рабочем пространстве
Домен@acme.comКаждый адрес на этом домене, включая адреса, добавленные позже
Адрес[email protected]Только этот адрес
  • Адрес с плюсом читает и свой базовый адрес, поэтому [email protected] использует то, что хранится для [email protected].
  • GET /knowledge/levels перечисляет все уровни, которые вы видите, сколько элементов на каждом и можно ли вам менять там элементы.
  • Перенос домена в другое рабочее пространство переносит вместе с ним элементы, хранящиеся для него и его адресов.

Заметки, файлы и веб-страницы

  • Заметка это текст, который вы пишете прямо на месте, до 20 000 символов, при желании в Markdown. Обычно она готова для ИИ за секунду-другую.
  • Файл читается в текст в фоне: PDF, документы Word, таблицы (Excel, OpenDocument, Numbers и CSV), текст OpenDocument, HTML, XML, Markdown, простой текст, JSON и изображения (JPEG, PNG, WebP и SVG). Документ может весить до 20 МБ, а изображение до 10 МБ.
  • Веб-страница загружается с публичного адреса http или https и читается в фоне, до 5 МБ. Уровень хранит страницу один раз, а обновление загружает её снова после изменений.
  • Из одного элемента сохраняется до 1 000 000 символов текста, и для поиска текст делится на фрагменты под его заголовками.

Элемент находится в queued, а затем в processing, пока его читают, в ready, когда ИИ может его использовать, и в failed с failure, где сказано почему, если прочитать его не удалось. Изменённый элемент возвращается в queued, и ИИ продолжает использовать его прежний текст, пока новый не будет готов. Обновление читает элемент заново и сбрасывает ошибку.

ТарифЭлементыСимволы текста
Free501,000,000
Starter50010,000,000
Business2,00050,000,000
Enterprise10,000200,000,000

Элемент учитывается в лимите сразу после добавления, а его символы после того, как прочитан текст. Добавление сверх лимита отклоняется, а файл или страница, чей текст превысил бы его, сохраняется как неудачный. GET /knowledge/usage читает оба числа.

Как её использует ИИ

  • Предложения ответа под последним сообщением цепочки читают уровни адреса, на который пришло сообщение.
  • Черновик, написанный по описанию, в редакторе или через POST /emails/compose, читает уровни адреса, с которого он уходит. Ответ перечисляет в sources элементы, на которые он опирался.
  • Ассистент читает уровни открытой у вас цепочки или все уровни, которые вы видите, если ни одна не открыта, и может сам искать по базе знаний своим инструментом searchKnowledge.
  • Ответ GET /threads/{id}/reply-suggestions перечисляет в sources элементы, на которые опирались предложенные ответы.

Закреплённые заметки попадают в каждый промпт на своём уровне, до 2 000 символов с каждого уровня, подходят они к тому, что пишется, или нет. Остальное место, всего около 6 000 символов, отводится фрагментам, которые лучше всего подходят к запросу, найденным по смыслу и по словам. Если индекс не отвечает за мгновение, ИИ пишет без него, а не заставляет вас ждать.

ИИ указано считать то, что говорит база знаний, справочными данными, а не инструкциями, опускать то, что не относится к делу, и не упоминать базу знаний в том, что он пишет.

Как она растёт

Добавляйте элементы в приложении в разделе Рабочее пространство → База знаний или из кода через API, SDK и CLI. Ассистент и MCP-клиенты могут сохранить заметку или добавить ссылку, когда вы просите их что-то запомнить, а также менять, обновлять и удалять элементы. В чате приложения добавление, изменение и обновление элемента сначала спрашивают, если вы сами об этом не просили, а удаление всегда спрашивает.

Каждый элемент записывает в origin, откуда он пришёл: app, api, assistant или mcp, а в createdBy, кто его добавил.

Она растёт и сама. ИИ предлагает заметки из ответов, которые отправляет ваша команда, и отмечает вопросы, на которые пока ничто не отвечает, коннекторы поддерживают в актуальном виде целые сайты, карты сайтов, ленты и справочные центры, а ссылки можно перечитывать по расписанию. Ниже каждый из этих способов описан подробно.

Предложения из ваших ответов

Когда кто-то в рабочем пространстве отвечает в переписке, ИИ читает ответ и сообщение, на которое он отвечает, и предлагает из него до трёх фактов, которые подошли бы и для других людей, например цену, правило или срок доставки. Каждое предложение становится заметкой, которая ждёт проверки, на уровне домена, с которого отправлен ответ, или всего рабочего пространства, если этот домен ему не принадлежит. Факты, которые уже есть в базе знаний, пропускаются, и в день читается до 100 ответов.

Проверяйте их в приложении или через GET /knowledge/suggestions. Примите предложение, чтобы сохранить его как заметку, по пути изменив заголовок, текст, уровень или закрепление, или отклоните его. Тот же факт, предложенный снова, увеличивает occurrences, а не добавляет второе предложение, и отклонённое предложение больше не появляется.

Вопросы, на которые пока ничто не отвечает

Когда ИИ предлагает ответы на входящее сообщение, он также отмечает до трёх вещей, о которых отправитель спросил про бизнес и на которые не отвечают ни переписка, ни база знаний, например доставляете ли вы в его страну. Каждая становится вопросом на уровне домена, на который пришло сообщение, или всего рабочего пространства, если этот домен ему не принадлежит, а тот же вопрос, заданный снова, увеличивает occurrences, так что видно, какие задают чаще всего.

Ответьте на вопрос, и он станет заметкой: примите его с ответом в качестве текста, и его заголовком останется вопрос, если вы его не измените. С этого момента ИИ использует ответ всякий раз, когда возникает этот вопрос. Отклоните вопрос, на который не нужно отвечать, и он больше не будет отмечаться.

Дубликаты и противоречия

Каждый элемент при индексации сравнивается с самыми близкими элементами на всех уровнях и снова при каждом изменении. Два элемента, которые говорят почти одно и то же, отмечаются как duplicate. Два тесно связанных элемента, которые расходятся в факте, например в цене или сроке, отмечаются как conflict, с одной фразой о том, в чём расхождение. ИИ проверяет противоречия до 200 раз в день.

  • Каждый элемент считает в flags открытые отметки, где он упомянут, а GET /knowledge/flags перечисляет их, начиная с новых.
  • Чтобы снять отметку, измените или удалите один из двух элементов. Изменённый элемент сравнивается снова, как только проиндексирован.
  • Отклоните отметку, если оба элемента в порядке как есть, и та же пара больше не будет отмечена по той же причине.
  • Отметку видит только тот, кто может видеть оба элемента.

Коннекторы

Коннектор хранит в базе знаний много страниц из одного источника, каждую как элемент-ссылку на уровне коннектора, и поддерживает их в актуальном виде, когда источник меняется.

ВидЧто читает
siteУказанную страницу и страницы, на которые она ссылается, на том же хосте и по тому же пути, без того, что запрещает robots.txt сайта
sitemapКаждую страницу из карты сайта или индекс карт сайта и до 5 его карт
feedЗаписи ленты RSS или Atom
zendeskОпубликованные статьи справочного центра Zendesk по его адресу, например https://example.zendesk.com
  • Первая синхронизация начинается в течение минуты. Затем он синхронизируется снова каждые 7 дней, или каждые 1 или 30 дней, или только когда вы запрашиваете синхронизацию, которая тоже начинается в течение минуты.
  • Он хранит до 25 страниц или столько, сколько вы укажете, до 200, а его элементы учитываются в квоте тарифа. Синхронизация перестаёт добавлять страницы, как только квота исчерпана.
  • Каждая синхронизация добавляет новые страницы, перечитывает изменившиеся и удаляет элементы страниц, которых больше нет в источнике.
  • Страница, которую вы сами добавили как ссылку на том же уровне, остаётся за этим элементом, а удаление коннектора убирает только те элементы, которые добавил он.
  • Если перенести коннектор на другой уровень, его элементы переедут вместе с ним.

Сохранение заметки из переписки

ИИ может прочитать переписку и составить одну заметку из фактов, которые снова понадобятся команде, без личных данных и того, что важно только для этой переписки. Ничего не сохраняется, пока вы этого не захотите: прочитайте черновик, измените его как угодно и сохраните как заметку, которая записывает в threadId переписку, из которой она взята.

Черновик предлагает уровень: домен, на который пришла переписка, если вы можете добавлять туда элементы, иначе всё рабочее пространство или адрес. Каждый черновик стоит одно действие ИИ. Из кода составляйте черновик через POST /knowledge/drafts, которому нужен threads:read в дополнение к knowledge:write, и сохраняйте через POST /knowledge/notes с тем же threadId.

Переупорядочивание результатов поиска

Поиск находит фрагменты по смыслу и по словам. Отправьте rerank: true с POST /knowledge/search, и ИИ дополнительно прочитает 25 лучших фрагментов и расставит их в том порядке, который лучше всего отвечает на вопрос, отбросив бесполезные. Это добавляет секунду-другую и стоит одно действие ИИ, поэтому выполняется только по вашему запросу. reranked в ответе показывает, произошло ли это, а если не успевает вовремя, фрагменты сохраняют обычный порядок.

Статистика использования

GET /knowledge/stats показывает, как ИИ использовал базу знаний за последние 30 дней или, по вашему запросу, до 90.

  • Сколько раз предложенный ответ, черновик, ассистент или поиск что-то нашли, сколько раз искали и ничего не нашли, и долю удачных поисков, по дням.
  • Где происходили эти использования: compose, reply, chat, tool и search.
  • Самые используемые элементы и сколько готовых элементов не использовалось ни разу. У каждого элемента есть свой счётчик uses и lastUsedAt с последним использованием.
  • Сколько предложений и вопросов ждут проверки и сколько отметок открыто.

Как выключить обучение

Настройка рабочего пространства knowledgeLearning по умолчанию включена. Выключите её через PATCH /settings и { "knowledgeLearning": false }, и ИИ перестанет читать отправленные ответы в поисках фактов для предложений, перестанет отмечать вопросы из входящей почты и перестанет проверять элементы на противоречия. Дубликаты по-прежнему отмечаются, а то, что уже предложено, остаётся, чтобы вы приняли или отклонили это.

Кто может её читать и менять

  • Чтение требует knowledge:read, а изменение knowledge:write, которое включает чтение. Встроенные роли Admin, Member и Developer могут менять элементы, Viewer может их читать, а Billing до них не достаёт.
  • Чтобы изменить элемент, нужен доступ к каждому адресу, который охватывает его уровень: всё рабочее пространство требует всех адресов, домен весь домен, а адрес этот адрес. Ключ или приложение, ограниченные определёнными адресами, могут менять элементы только на этих адресах или на доменах, которые они держат целиком.
  • Тот, кто ограничен определёнными адресами, читает элементы всего рабочего пространства и элементы своих адресов и их доменов. Ассистент и инструменты MCP, действующие от его имени, добавляют и меняют элементы только на адресах, с которых он может отправлять.

Конфиденциальность

  • Текст каждого элемента зашифрован при хранении: содержимое заметки, текст, прочитанный из файла или страницы, и каждый фрагмент. Слова, которые сравнивает поиск по словам, хранятся как хеши с ключом, а не как слова.
  • Файлы превращаются в текст, а веб-страницы читает OpenEmail. В политике конфиденциальности перечислены все службы, которые обрабатывают ваши данные.
  • Для поиска по смыслу каждый фрагмент и каждый вопрос превращаются в вектор: список чисел, описывающий, о чём они. Векторы хранятся незашифрованными рядом с зашифрованным текстом, как и при поиске по смыслу в почте.
  • Фрагменты, которые использует промпт, уходят в модель ИИ, которая пишет ответ, черновик или реплику, как и остальная часть промпта.
  • Удаление элемента сразу убирает его файл, текст и фрагменты. База знаний входит в экспорт рабочего пространства, а удаление рабочего пространства удаляет и её.
  • Пока обучение включено, модель ИИ читает каждый ответ, отправленный в переписке, вместе с сообщением, на которое он отвечает, чтобы предлагать заметки, и читает два тесно связанных элемента, чтобы проверить их на противоречие. Настройка knowledgeLearning выключает и то и другое.

Из кода, терминала и агентов

Всё перечисленное есть в REST API под /knowledge, в SDK как openemail.knowledge (TypeScript) и client.knowledge (Python, Ruby и PHP), в CLI как openemail knowledge и в инструментах MCP. Ключу нужен knowledge:read, чтобы читать, и knowledge:write, чтобы менять элементы.