llama_index получает документ, на который ссылается node_sources
Я получаю хорошие результаты, когда llama_index индексирует PDF-файлы, однако мне не удается определить, в каком PDF-файле он нашел результаты, чтобы основывать свои ответы. result.node_sources использует идентификатор документа, который, по-видимому, генерируется внутри него. Как я могу получить ссылку на документ?
2 ответа
Получил этот ответ непосредственно от команды Llama -
Спасибо за вопросы и за вашу поддержку LlamaIndex. Есть несколько общих подходов, которые вы можете использовать:
- Вставляйте метаданные в каждый документ, например имя файла, ссылку и т. д. Многие загрузчики LlamaHub уже должны автоматически добавлять метаданные в extra_info, но вы можете добавить/удалить extra_info самостоятельно, если хотите. Эта extra_info вводится в каждый Node. Когда вы получаете ответ от механизма запросов, вы можете сделать
response.source_nodes
чтобы получить соответствующие источники.
Эти источники будут содержать как исходный текст, так и метаданные. Взгляните на этот документ:https://gpt-index.readthedocs.io/en/latest/how_to/customization/custom_documents.html#customizing-documents .
- Предполагая, что вы добавите соответствующие метаданные в файл
extra_info
поле, вы можете либо изменить строку запроса, либо подсказки по обеспечению качества/уточнения и сказать что-то вроде «Пожалуйста, укажите источники вместе с вашим ответом» в любом из них.
Строку запроса, к которой вы можете просто добавить, для настройки подсказок см. на https://gpt-index.readthedocs.io/en/latest/how_to/customization/custom_prompts.html .
Кажется, они изменили «extra_info» на «метаданные».
Я использовал этот код, и он работает отлично:
if hasattr(response, 'metadata'):
document_info = str(response.metadata)
find = re.findall(r"'page_label': '[^']*', 'file_name': '[^']*'", document_info)
print('\n'+'=' * 60+'\n')
print('Context Information')
print(str(find))
print('\n'+'=' * 60+'\n')