Как улучшить/предварительно обработать текст (в особых случаях), чтобы встраивания и LLM имели лучший контекст?

Я работал над настройкой локальных документов для загрузки в векторную базу данных, а затем для использования (встраивания) в качестве контекста для LLM.

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

  • При задании вопроса, связанного с заголовком, возвращаются первые несколько фрагментов текста (например: заголовок_1: список элементов --- при запросе векторной базы данных о заголовке_1 он возвращает только несколько фрагментов вложений, где находится заголовок_1).
  • Некоторые вопросы содержат данные предыдущего пункта (утверждения/пункт списка), а также ответы на них (например: 1. элемент 1: бла-бла \n элемент 2: foo foo ---- и когда его спрашивают об элементе 2, векторная база данных возвращает элемент 1 "бла-бла" тоже)

В большинстве случаев частичные вложения возвращаются, а иногда вложения не возвращаются, хотя информация есть...

дополнительная информация -

Местные документы - очень на высоком уровне. В основном содержит маркированный или нумерованный список пунктов/обновлений/утверждений по теме. (Файлы PDF) Программа чтения PDF — PyMuPdf vecordb — Chroma LLM — GPT4ALL Преобразователь предложений — all-MiniLM-L6-v2(кстати, я инженер по данным и учусь, делая это...)

Я думаю, это из-за отсутствия контекста (модель не знает об этом, а также о встраиваниях). Поэтому я планировал добавить в документ больше контекста,

  • Определите заголовок и список элементов и добавьте контекст, например «ниже/выше список элементов...»
  • (просто идея) создать вложенный словарь неструктурированных данных (как - используя PyMuPdf, иметь доступ к размеру текста, поэтому использовать его для создания вложенного словаря, в то время как заголовок является ключом, а значение - содержимым или дочерним элементом)
  • или просто разбить его по (заголовку, содержимому) и отправить как отдельный источник в векторную базу данных с некоторыми метаданными.

Будут ли эти подходы работать или есть лучшее решение? (модель обучения на данном этапе будет последним средством)

1 ответ

Задумывались ли вы о:

Увеличенный размер фрагмента, чтобы получить более целостный контекст?

Трансформеры из доктрана? Может быть, допрос может быть полезен в вашем случае?

Кроме того, довольно сложно ответить на ваш вопрос без хорошего примера документа.

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