Как заставить ллм отвечать по методичке?
Есть много ситуаций, когда вы хотите, чтобы ллм опиралась на что-то конкретное в своих ответах, а не пыталась "думать" на основе всего того бардака, на котором её предобучили.
Самый частый кейс – когда вы делаете бота на первую линию поддержки. Бот должен отвечать по готовым скриптам, а перед ответом лезть в базу данных компании и в ответе опираться на них, а не на те галлюцинации, которые могут у ллм возникнуть, когда она видит этот вопрос.
RAG – ллм с внешней базой данных. Вы говорите ллм: "чувак, не надо тебе лишний раз пыжиться в попытках понять, на основе чего мне ответить. Вот тебе всё что тебе нужно знать, просто синтезируй ответ из этого." Это способ минимизировать галлюцинации, увеличить предсказуемость ответов. Соблазнительно, да?
🫥 Флоу работы RAG такой:
Вместо того, чтобы сразу забить вопрос пользователя в ллм и получить ответ, сначала вы пробиваете вопрос пользователя во внешней базе данных, получаете из неё наиболее релевантные блоки, пихаете эти блоки в промпт как контекст вашего вопроса, на который ллм должна опираться при ответе, и только после этого отправляете в ллм всю эту простыню.
🎯 И на бумаге это звучит идеально. Но на практике в базе данных у вас будет куча дерьма, в котором чёрт ногу сломит. И когда вы эту кучу дерьма пихнёте в промпт как контекст, что вы получите на выходе из ллм? Правильно, кучу дерьма в квадрате. Но завёрнутую в красивую конфетку, а ллм это очень хорошо умеют делать.
0️⃣ При этом ллм будет убеждён, что всё делает правильно, вы же ему этот контекст дали, он ему верит, и вы будете убеждены, что ответ верен, он же на основе вашей бд сделан. А в реальности всё это полная херня, потому что из бд достали не то, а ллм в процессе докрутил до ещё большей чуши.
🌟 И тут мы переходим к тем кракенам, которые очень быстро утащат ваш RAG-корабль на дно. Но это будет в следующей серии.
Post #197
682
- 🔥 3
- ❤ 2
- 👍 2
- 👏 2