Комментарии 4
Хорошо структурированные документы - важная составляющая любой RAG-системы, это нужно донести бизнесу.
К какой наиболее оптимальной структуре входных документов вы в итоге пришли?
Проводились ли эксперименты с сохранением контекста между запросами одного пользователя? Если да, то каковы результаты?
К какой наиболее оптимальной структуре входных документов вы в итоге пришли?
У клиента 4 сущности разные, на каждую из них в CMS добавили шаблон, как должен выглядеть текст. Сводится к тому, что пользователь должен бить текст на заголовки и абзацы по 3-6 предложений. Во всех документах нет какой-то конфиденциальной информации, поэтому также советуем использовать LLM, который поможет разбить текст под формат, который нас устроит.
Проводились ли эксперименты с сохранением контекста между запросами одного пользователя? Если да, то каковы результаты?
Отличный вопрос, действительно на тестах был кейс, не стал упоминать об этом в статье, так как показалось, что перегружу. Сам кейс - первый вопрос "Расскажи о мероприятии Туризм в России", чанки релеватные находились и LLM получала верный контекст для ответа, но на следующий вопрос "Какая программа мероприятия" уже мы не могли качественно найти чанки. Решили в первой версии ничего не будем делать с этим и займемся в следующей. Сейчас у нас только идеи как реализовать, полный ресерч еще не закончили.
Идеи пока такие:
1. Хранить ранее найденные чанки и далее передавать их в качестве истории диалога
2. Хранить id документов, на основе которых LLM дала ответ и далее передавать полный текст документа в качестве контекста (правда тут видится проблема ограничености контекста, будем тестировать этот вариарнт)
3. Хранить id документов, на основе которых LLM дала ответ и далее при поиске в Qdrant с помощью фильтрации оставить только нужные документы
4. Формировать embedding не из одного вопроса пользователя, а из последних пяти (тут тестировать нужно конечно, насколько хорошо поиск будет работать)
Почему для сохранения контекста не передавать в виде истории целиком диалог в формате «вопрос пользователя - ответ LLM» на ограниченную глубину - 5-10 последних? Плюс, возможно, ранее найденные чанки.
Мне кажется, что при таком подходе будет сложно упереться в ограничение контекстного окна LLM.

RAG на PHP + Qdrant: быстрый MVP для внутренней базы знаний