Я загружаю множество файлов DocX и PDF в хранилище BLOB-объектов для использования в когнитивном поиске Azure. Я уже использую его для экспериментов с некоторыми возможностями ИИ, и он работает хорошо, но я хотел бы попробовать фильтруемую свежесть. Я не уверен, как можно добавить метаданные для этих PDF-файлов (например, «автор», «дата», «название») с помощью навыка. Любой совет будет принят во внимание. Спасибо
{
"@odata.context": ... ,
"@odata.etag": ... ,
"name": "freshness",
"description": "Skillset to chunk documents and generate embeddings",
"skills": [
{
...
},
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#3",
"description": "Extracts metadata from the document",
"context": "/document",
"inputs": [
{
"name": "metadata_creation_date",
"source": "/document/metadata_creation_date"
}
],
"outputs": [
{
"name": "output",
"targetName": "creationDate"
}
]
}
],
"cognitiveServices": null,
"knowledgeStore": null,
"indexProjections": {
"selectors": [
{
"targetIndexName": "freshness",
"parentKeyFieldName": "parent_id",
"sourceContext": "/document/pages/*",
"mappings": [
{
"name": "creationDate",
"source": "/document/creationDate",
"sourceContext": null,
"inputs": []
}
]
}
],
"parameters": {
"projectionMode": "skipIndexingParentDocuments"
}
},
"encryptionKey": null
}```
@ThiagoCustodio, может быть, я слишком нуб в этом, где я могу получить дату создания каждого файла в индексаторе? ... Я пытался узнать дату файла, потому что хочу добавить профили оценки на основе свежести...
индексатор по умолчанию будет извлекать метаданные_storage_last_modified. Метаданные о том, когда был создан файл, отсутствуют. Боюсь, вам придется заполнить его вручную.
@ThiagoCustodio, возможно, подойдет последнее изменение, в настоящее время я могу извлечь дату последнего изменения с помощью #Microsoft.Skills.Util.ShaperSkill, и он дает мне этот ответ в виде строки ""date": "{\"metadata_creation_date\ ":\"2024-06-07T14:51:00\"}"" но мне не нужна строка, я хочу, чтобы она была типа Edm.DateTimeOffset.
нет готового способа. Вам нужно будет взаимодействовать с API индекса, чтобы создать еще одно поле, затем просмотреть свои документы и установить значение для нового поля.
Если у вас уже есть индекс, вы можете создать новое поле типа Edm.DateTimeOffset
После создания сопоставьте индексатор полей с fieldMappings
.
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode",
"parameters": null
}
},
{
"sourceFieldName":"metadata_storage_last_modified",
"targetFieldName":"last_modified"
}
]
или
при импорте данных в Customize target index
вы можете сделать его фильтруемым.
Проверьте Filterable
, как показано на изображении.
Выход:
почему бы хотелось, чтобы это было добавлено как навык? По умолчанию индексатор уже извлекает эту информацию, все, что вам нужно сделать, это пометить эти поля как фильтруемые/сортируемые/фасетные во время процесса создания индекса.