Короткий вопрос: какая структура будет «лучше» для нашего сценария?
У нас есть набор экспортированных логов чатов из каналов Slack, содержащих много знаний, упомянутых проблем и решений и т. д. Очевидно, что в этих чатах много бесполезного «шума», который экономически невыгодно просто выгружать в темы/посты и заставлять использовать это AI-боту.
У нас около 10 файлов размером примерно 1–2 МБ каждый. Что касается использования AI-персоны, у нас будет около 30 человек, выполняющих примерно 10 чатов в день (объём токенов здесь сложно оценить).
На данный момент я думаю, какой будет разумный подход 80/20, чтобы использовать эти логи чатов, сохраняя при этом экономическую эффективность. Сводка свелась к двум вариантам:
Копирование и вставка логов в темы/посты Discourse: Быстро и грязно, не требуется кастомная разработка, но может привести к значительным затратам на API.
Предварительная обработка логов чатов каким-либо образом, приведение их к правильному формату или структуре и загрузка в персону.
Или, возможно, гибридный вариант: При каждом запросе к AI-боту оценивать и сохранять вывод в текстовый файл, а затем загружать его в персону.
Какой вариант вы бы порекомендовали? Или, может быть, что-то совершенно другое?
Обработайте 10 файлов, используя «креативный» персонаж с большой контекстной областью и большим объемом вывода, например, Sonnet 4 thinking. Цель этой обработки — «привести в порядок» информацию и подготовить её для RAG.
Затем с помощью встроенной функции загрузки загрузите 10 обработанных файлов в персонаж, чтобы RAG мог осуществлять поиск по содержимому.
Учитывая огромный объем данных, я не рекомендую перегружать системный промпт. В качестве ориентира: системный промпт не должен быть слишком длинным, так как это становится затратным. 10 тысяч токенов — это приемлемо, но 100 тысяч токенов не подходят для современных передовых LLM. Каждое взаимодействие будет стоить вам слишком дорого, а модели станут еще более запутанными.
Дайте нам знать, как у вас получится!
Пожалуйста, поделитесь промптами, которые вы использовали для сокращения и приведения в порядок чат-логов.
Уточните, пожалуйста: все ли загруженные файлы внедряются в системный промпт? Или они сначала обрабатываются через настроенную модель ai_embeddings_model, а затем внедряются?
Я немного запутался в вашей рекомендации по лимиту в 10 тыс. токенов, особенно в части, указанной ниже:
Файлы по ссылке Discourse AI Persona, upload support ограничены только вашим лимитом загрузки — они могут быть очень большими. Они обрабатываются через эмбеддинги: в зависимости от конфигурации мы внедряем фрагменты текста в промпт.
О чём я говорил, так это о попытке уместить всю информацию в один системный промпт здесь:
Так что, по сути, мои следующие шаги — провести несколько тестов с разными моделями эмбеддингов и посмотреть, какой размер токена в итоге попадёт в системный промпт, верно?
И при создании этих txt-файлов с чанками я должен убедиться, что они остаются в разумном лимите около 10 тысяч?
Модель эмбеддингов отвечает за качество, а не за количество.
Вы можете объединить все свои данные в один файл; мы разобьём его на части в фоновом режиме, извлечём наиболее релевантные фрагменты и добавим их в ваш промпт.
Эксперименты здесь направлены на улучшение результатов: некоторые способы очистки могут работать лучше других, а некоторые модели эмбеддингов будут эффективнее находить более релевантные фрагменты.
Если у тебя есть какие-либо дополнительные полезные материалы, не стесняйся поделиться ими здесь. Как только я добьюсь прогресса, я постараюсь опубликовать свой опыт здесь, на Meta.
[[metadata about cats]]
a long story about cats
[[metadata about dogs]]
a long story about dogs
Теперь, если мы хотим добавить к ним номера версий или конкретные номера моделей, нужно ли мне использовать тот же формат или структуру, которые использовали бы люди при вводе?
Например:
[[metadata about cats v1.0]]
a long story about cats
[[metadata about dogs]]
a long story about dogs
[[metadata about cats xxl v2.1]]
a long story about cats
[[metadata about dogs v 1.1beta]]
a long story about dogs
Также, если в метаданных отсутствуют номера версий (см. metadata about dogs), будет ли этот фрагмент использоваться в ответе на все запросы, связанные с собаками, независимо от «версии собаки»?