Чанк — небольшая, логически цельная часть исходного документа, загруженного в базу знаний. Используются для облегчения индексации и поиска релевантных фрагментов в большом объеме информации. Чанки создаются при помощи экстракторов.
Преимущества использования чанков:
Ограничение контекста — размер чанков состоит из меньшего числа токенов, чем доступно в ответе LLM-модели, что позволяет получать полный ответ без необходимости дополнительных запросов.
Релевантность — документы делятся на чанки согласно общему контексту, что позволяет возвращать пользователю только релевантный текст.
Скорость поиска — из-за небольшого количества токенов в каждом чанке поиск по ним быстрее.
Для каждого из чанков доступны два типа метаданных — системные и пользовательские.
К системным относятся:
datasource_type — тип источника данных;
filetype — тип файла;
filename — название файла;
s3_bucket — бакет S3;
s3_object_key — ключ объекта в S3;
ingestion_job_id — идентификатор задачи индексации;
knowledgebase_id — идентификатор базы знаний;
knowledgebase_version_id — идентификатор версии базы знаний;
project_id — идентификатор проекта;
size_in_tokens — количество токенов в чанке.
Пользовательские метаданные вы можете создавать самостоятельно. Создание доступно:
Для текстовых чанков, добавляемых с помощью API Managed RAG.
Для JSON-файлов, при заполнении поля JQ-схема для метаданных в JSON экстракторе при создании версии базы знаний. Пример добавления пользовательских метаданных из JSON-файла.
Для фильтрации результатов поисковой выдачи можно использовать системные и пользовательские метаданные чанка
Параметры фильтрации состоят из следующих компонентов:
filter — содержит все условия фильтрации.
metadata — содержит настройки фильтрации по метаданным.
логические условия фильтрации:
equals — объект с условием фильтрации из пары «ключ»: «значение». Может быть как самостоятельным, так и быть вложено в условия andAll и OrAll.
andAll — отбирает чанки, соответствующие всем перечисленным условиям.
OrAll — отбирает чанки, соответствующие любому из перечисленных условий.
Если используются параметры andAll или OrAll, перечислите условия фильтрации внутри них с помощью параметра expressions.
Итоговая конструкция фильтра выглядит так:
"filter": {"metadata": {"equals": {"key": "string","value": "string"},"andAll": {"expressions": ["equals": {"key": "string","value": "string"},"equals": {"key": "string","value": "string"}]"orAll": {"expressions": ["equals": {"key": "string","value": "string"},"equals": {"key": "string","value": "string"}]
Подробнее с параметрами фильтрации можно ознакомиться в спецификации Search API.
Вы также можете просмотреть примеры использования фильтров.