Лого на 91. НЕГ „Проф. Константин Гълъбов“

Избираем модул · Урок 12

RAG върху собствената база

Отговори по документи и по структурирани данни: кога се търси текст, кога се изпълнява заявка и как двете се комбинират в един отговор.

Два вида въпроси, два различни пътя

В 11. клас RAG отговаряше по текстови документи. В реална система въпросите са смесени: едни искат текст („какво пише в правилника за…“), други искат сметка („колко поръчки има този клиент“).

въпрос„какво пише…“„колко / кой е най-…“търсене в парчетатекст → контекст за моделаSQL заявкачисла → таблица за моделаотговор с източник
Смисловото търсене не може да брои. Заявката не може да чете правилник. Системата има нужда и от двете.

Класическа грешка

Да се качат числовите данни като текст в парчетата и после да се очаква моделът да ги сумира. Работи за пет реда и се проваля за петстотин — а грешката е невидима, защото отговорът звучи уверено.

Пътят на текстовите въпроси

Точно веригата от урок 26 в 11. клас, но с базата от урок 9 тук: хибридно търсене, филтър по действащи документи, вмъкване на намереното в промпта, отговор с цитат.

  1. Заявката се превръща във вектор.
  2. Хибридно търсене връща 20 кандидата.
  3. Филтър: само действащи документи, само разрешени за този потребител.
  4. Пренареждане и избор на първите 3–5.
  5. Промпт с текста и изричното указание да не се излиза извън него.
  6. Отговор с посочен източник и връзка към документа.

Пътят на числовите въпроси

Заявка, генерирана от модела

Моделът получава схемата на базата и въпроса и връща SELECT. Приложението го изпълнява и подава резултата обратно за формулиране на отговора.

Текст към SQL (text-to-SQL)

Превръщане на въпрос на естествен език в заявка към базата.

Задължителните предпазни мерки

  • Само за четене: отделен потребител на базата с права само SELECT.
  • Само върху изгледи, не върху сурови таблици — така се скриват и лични колони.
  • Проверка на генерираната заявка: забранени ключови думи, задължителен LIMIT.
  • Таймаут — генерирана заявка може да е много скъпа.
  • Показвайте заявката на потребителя. Прозрачността е и защита, и полза.

Правилото

Генерираният SQL е вход от чужд източник. Отнасяйте се към него както към данни от уеб формуляр — с валидиране и с минимални права.

По-безопасната алтернатива

Вместо свободен SQL — готови параметризирани заявки. Моделът избира коя от няколко предварително написани справки да се изпълни и с какви параметри. Губи се гъвкавост, печели се предвидимост. За училищен проект това често е по-добрият избор.

Насочването

Кой път да поеме въпросът решава отделна стъпка — най-често самият модел, с кратък промпт за класификация, или инструменти (урок 29 от 11. клас): единият инструмент търси в документи, другият изпълнява справка.

  • Класификация: по-просто и по-евтино, но с грешки при смесени въпроси.
  • Инструменти: моделът сам решава кое да извика и може да ги съчетае.
  • Винаги предвиждайте трети изход: „това не мога да го отговоря“.

Правата на потребителя

Най-опасната дупка

Ако търсенето обхожда всички парчета, потребител може да получи откъс от документ, до който няма достъп. Филтърът по права влиза в самата заявка, а не в промпта — на модела не се разчита да пази тайни.