Облачная платформаEvolution

Отфильтровать чанки в поисковом запросе


При работе с Search API вы можете фильтровать чанки, которые попадут в ответ на запрос или в контекст LLM-модели. Фильтрация происходит с помощью метаданных чанка. Вы можете использовать несколько условий фильтрации в ваших запросах.

Ниже приведены несколько примеров фильтров, которые вы можете использовать в поисковых запросах.

Отфильтровать с помощью equals

В примере рассмотрен базовый фильтр для чанков, контент которых сформирован из документов с расширением .txt. Для этого используется объект equals.

  1. Аутентифицируйтесь в API Managed RAG.

  2. Отправьте поисковый запрос с фильтром:

    curl -X POST "<knowledge_base_public_url>/api/v2/retrieve" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <access_token>" \
    -d '{
    "knowledge_base_version": "<knowledge_base_version_id>",
    "query": "Что такое сервис Evolution Managed Kubernetes?",
    "retrieval_configuration": {
    "number_of_results": 3,
    "retrieval_type": "SEMANTIC"
    "filter": {
    "metadata": {
    "equals": {
    "key": "filetype",
    "value": "text"
    }
    }
    }
    }
    }'

    Где:

    • <knowledge_base_public_url> — публичный URL базы знаний.

    • <access_token> — полученный токен доступа с помощью Public API Cloud.ru.

    • <knowledge_base_version_id> — идентификатор версии базы знаний. Его можно получить на вкладке Версии базы знаний или использовать тег latest, если запрос отправляется к последней версии.

    • equals — объект с условием фильтрации. Состоит из:

    • key — ключ метаданных. В примере используются системные метаданные для расширения файла filetype.

    • value — значение метаданных. В примере фильтр применяется к чанкам, сформированным из .txt файлов.

Отфильтровать с помощью andAll

В примере рассмотрена фильтрация по проекту и базе знаний с помощью условия andAll. В итоговую выдачу попадут только чанки, которые соответствуют обоим условиям, указанным в объекте expressions.

  1. Аутентифицируйтесь в API Managed RAG.

  2. Отправьте поисковый запрос с фильтром:

    curl -X POST "<knowledge_base_public_url>/api/v2/retrieve" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <access_token>" \
    -d '{
    "knowledge_base_version": "<knowledge_base_version_id>",
    "query": "Что такое сервис Evolution Managed Kubernetes?",
    "retrieval_configuration": {
    "number_of_results": 3,
    "retrieval_type": "SEMANTIC"
    "filter": {
    "metadata": {
    "andAll": {
    "expressions": [
    "equals": {
    "key": "project_id",
    "value": "<project_id>"
    },
    "equals": {
    "key": "knowledgebase_id",
    "value": "<knowledgebase_id>"
    }
    ]
    }
    }
    }
    }
    }'

    Где:

    • <knowledge_base_public_url> — публичный URL базы знаний.

    • <access_token> — полученный токен доступа с помощью Public API Cloud.ru.

    • <knowledge_base_version_id> — идентификатор версии базы знаний. Его можно получить на вкладке Версии базы знаний или использовать тег latest, если запрос отправляется к последней версии.

    • andAll — логическое условие фильтрации. Фильтр вернет результат, если выполняются все условия.

    • expressions — контейнер с набором условий фильтрации.

    • <project_id> — идентификатор проекта.

    • <knowledgebase_id> — идентификатор базы знаний.

Отфильтровать с помощью orAll

В примере рассмотрена фильтрация по двум документам из базы знаний с помощью параметра orAll. В итоговую выдачу попадут чанки, которые относятся к документам, указанным в объекте expressions.

  1. Аутентифицируйтесь в API Managed RAG.

  2. Отправьте поисковый запрос с фильтром:

    curl -X POST "<knowledge_base_public_url>/api/v2/retrieve" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <access_token>" \
    -d '{
    "knowledge_base_version": "<knowledge_base_version_id>",
    "query": "Что такое сервис Evolution Managed Kubernetes?",
    "retrieval_configuration": {
    "number_of_results": 3,
    "retrieval_type": "SEMANTIC"
    "filter": {
    "metadata": {
    "OrAll": {
    "expressions": [
    "equals": {
    "key": "filename",
    "value": "<filename>"
    },
    "equals": {
    "key": "filename",
    "value": "<filename>"
    }
    ]
    }
    }
    }
    }
    }'

    Где:

    • <knowledge_base_public_url> — публичный URL базы знаний.

    • <access_token> — полученный токен доступа с помощью Public API Cloud.ru.

    • <knowledge_base_version_id> — идентификатор версии базы знаний. Его можно получить на вкладке Версии базы знаний или использовать тег latest, если запрос отправляется к последней версии.

    • OrAll — логическое условие фильтрации. Фильтр вернет результат, если выполняется хотя бы одно из условий.

    • expressions — контейнер с набором условий фильтрации.

    • <filename> — название файла.