При работе с Search API вы можете фильтровать чанки, которые попадут в ответ на запрос или в контекст LLM-модели. Фильтрация происходит с помощью метаданных чанка. Вы можете использовать несколько условий фильтрации в ваших запросах.
Ниже приведены несколько примеров фильтров, которые вы можете использовать в поисковых запросах.
В примере рассмотрен базовый фильтр для чанков, контент которых сформирован из документов с расширением .txt. Для этого используется объект equals.
Аутентифицируйтесь в API Managed RAG.
Отправьте поисковый запрос с фильтром:
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. В итоговую выдачу попадут только чанки, которые соответствуют обоим условиям, указанным в объекте expressions.
Аутентифицируйтесь в API Managed RAG.
Отправьте поисковый запрос с фильтром:
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. В итоговую выдачу попадут чанки, которые относятся к документам, указанным в объекте expressions.
Аутентифицируйтесь в API Managed RAG.
Отправьте поисковый запрос с фильтром:
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> — название файла.