Использование метаданных даты из файлов docx и pdf для когнитивного поиска Azure

Я загружаю множество файлов 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
}```

почему бы хотелось, чтобы это было добавлено как навык? По умолчанию индексатор уже извлекает эту информацию, все, что вам нужно сделать, это пометить эти поля как фильтруемые/сортируемые/фасетные во время процесса создания индекса.

Thiago Custodio 24.06.2024 16:34

@ThiagoCustodio, может быть, я слишком нуб в этом, где я могу получить дату создания каждого файла в индексаторе? ... Я пытался узнать дату файла, потому что хочу добавить профили оценки на основе свежести...

Cheoncio 24.06.2024 17:03

индексатор по умолчанию будет извлекать метаданные_storage_last_modified. Метаданные о том, когда был создан файл, отсутствуют. Боюсь, вам придется заполнить его вручную.

Thiago Custodio 24.06.2024 17:30

@ThiagoCustodio, возможно, подойдет последнее изменение, в настоящее время я могу извлечь дату последнего изменения с помощью #Microsoft.Skills.Util.ShaperSkill, и он дает мне этот ответ в виде строки ""date": "{\"metadata_creation_date\ ":\"2024-06-07T14:51:00\"}"" но мне не нужна строка, я хочу, чтобы она была типа Edm.DateTimeOffset.

Cheoncio 24.06.2024 18:53

нет готового способа. Вам нужно будет взаимодействовать с API индекса, чтобы создать еще одно поле, затем просмотреть свои документы и установить значение для нового поля.

Thiago Custodio 24.06.2024 20:11
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
5
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас уже есть индекс, вы можете создать новое поле типа 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, как показано на изображении.

Выход:

Другие вопросы по теме

API Azure Создать бессерверную конечную точку не работает
Ошибка развертывания Flask службы приложений Azure: «Не удалось ответить на HTTP-запросы связи на порту 8000; не удалось запустить сайт. Проверьте журналы контейнера на наличие отладки»
Как прочитать исходный PDF-файл в источнике данных индексатора в пользовательском WebApiSkill после включения «Разрешить набору навыков читать данные файла»
Ошибка в службе когнитивного поиска Azure при сохранении страницы документа, связанной с каждым фрагментом, извлеченным из PDF-файла, в пользовательском WebApiSkill
Потоковая передача звука обратно в Twilio из текста Azure в речь
Предоставляет ли API перевода речи Azure ключ обнаруженного языка?
Как изменить громкость преобразования текста в речь для объектов SpeechSynthesizer в Azure CognitiveServices SDK без изменения громкости системы в С#
Можно ли использовать PhraseListGrammar с IntentRecouncer в Microsoft Speech SDK для Java?
Как создать навык TEXTSPLIT в когнитивном поиске и как ссылаться на него в индексаторе
Поддержание ключей метаданных Markdown на исходном языке