Как стать автором
Обновить

Интеграция LLM в корпоративные чат-боты: RAG-подход и эксперименты

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров8K
Всего голосов 15: ↑15 и ↓0+17
Комментарии6

Комментарии 6

Спасибо, что поделились опытом. Было интересно. еще интересно узнать, по какому принципу разбиваете документ на чанки перед енкодингом. От этого многое зависит в поиске

Да, мне как начинающему тоже интересно знать методики разбиения текста. Размышлял о семантическом разборе. Скажем, каждому предложению — свой эмбеддинг. Плюс, можно добавить общие эмбеддинги для каждого абзаца, наверное.

По предложениям и абзацам не вышло, так же как и для МД-разметки. Пробовали Parent-Document Retriever и добавлять суммаризацию чанка к самому чанку, но не особо помогло. Но всё сильно зависит от данных, поэтому может на ваших данных лучше заработать то, что не вышло у нас.

Семантическое разбиение пробовали, ощутимого прироста не дало, поэтому просто делим на фиксированное количество токенов (в одной из задач 512). Пробовали также разбивать по md-разметке, но тоже особо ничего хорошего не дало. Возможно, нам просто пока не попадались данные, на которых бы другое разбиение (не по токенам) работало бы лучше.

И в каком виде документ кладете в базу? Кроме текста и его вектора что-то дополнительное пишете?

Зависит от задачи: в некоторых задачах, особенно когда используем симметричный поиск, кладём сам вопрос как документ, а в metadata дополнительно храним ответ, который предполагается на этот вопрос. Где-то храним ещё и категории того, к чему относится ответ/документ.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий