API баз знаний

База знаний — это коллекция текстовых файлов, которые индексируются в векторной БД и используются AI оператором для ответов. Одна база знаний может быть привязана к нескольким каналам.

Токен должен иметь scope ai_knowledge_bases.

Базовый URL: https://api.apx.chat/api

Допустимые форматы и лимиты

  • Расширения: .csv, .htm, .html, .md, .txt, .xml, .json
  • Максимальный размер файла: 20 MB
  • Лимит файлов на базу: 20

Базы знаний

Получение списка

GET /api/ai-resources/external/knowledge-bases

Создание

POST /api/ai-resources/external/knowledge-bases

const url = "https://api.apx.chat/api/ai-resources/external/knowledge-bases";

const payload = {
"name": "FAQ и политики"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "X-Api-Token": "tok_xxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});

const data = await response.json();
console.log(data);

Получение / обновление / удаление

  • GET /api/ai-resources/external/knowledge-bases/{id}
  • PATCH /api/ai-resources/external/knowledge-bases/{id}
  • DELETE /api/ai-resources/external/knowledge-bases/{id}?confirmed=true

Каналы, использующие базу

GET /api/ai-resources/external/knowledge-bases/{id}/channels

Файлы в базе знаний

fileId — произвольная строка (например slug статьи). Один fileId соответствует одному файлу: повторная загрузка с тем же fileId перезаписывает содержимое. Если SHA-256 загружаемого файла совпадает с предыдущей версией, переиндексация не выполняется.

Список файлов

GET /api/ai-resources/external/knowledge-bases/{kbId}/files

Загрузка или обновление

PUT /api/ai-resources/external/knowledge-bases/{kbId}/files/{fileId}

Запрос multipart/form-data с полем file.

const url = "https://api.apx.chat/api/ai-resources/external/knowledge-bases/{kbId}/files/{fileId}";

const formData = new FormData();
formData.append("file", fileInput.files[0]); // fileInput: <input type="file" />

const response = await fetch(url, {
  method: "PUT",
  headers: {
    "X-Api-Token": "tok_xxxxx",
  },
  body: formData,
});

const data = await response.json();
console.log(data);

Ответ возвращает объект загрузки и флаг updated.

Удаление файла

DELETE /api/ai-resources/external/knowledge-bases/{kbId}/files/{fileId}

Удаление асинхронное, в ответе возвращается jobId.

Что происходит после загрузки

  • Файл сохраняется в S3.
  • SHA-256 сверяется с предыдущей версией — при совпадении переиндексация пропускается.
  • При изменении контента старая версия удаляется, новые чанки индексируются в Milvus.
  • В ответе ориентируйтесь на status и processedAt.

Привязка к каналу

База знаний привязывается через настройки AI оператора канала — поле knowledgeUuid.