Какво е RAG? Retrieval-Augmented Generation на прост език
RAG (retrieval-augmented generation) е начин AI моделът да отговаря на въпроси, като използва твоята собствена информация. Когато някой зададе въпрос, приложението ти първо търси в документите най-подходящите пасажи, след това ги предава на модела заедно с въпроса. Моделът написва отговора си от този текст, вместо да разчита само на онова, което е научил по време на обучението.
Защо RAG има значение, когато строиш с AI
Голям езиков модел знае много за света като цяло, но нищо за твоя бизнес: цените ти, политиките, продуктовото ръководство, вчерашните сигнали от поддръжката. Освен това има дата на обучение, затова не знае нищо скорошно. Ако го попиташ въпреки това, може да ти даде уверен, правдоподобен и погрешен отговор.
За това има три широки опции:
| Подход | Какво прави | Подходящ за |
|---|---|---|
| Поставяне на всичко в промпта | Изпращане на всички документи с всеки въпрос | Малко текст — няколко страници |
| RAG | Търсене в документите и изпращане само на релевантните части | По-големи или променящи се колекции: help центрове, ръководства, бележки |
| Fine-tuning | Допълнително обучение на модела с примери | Тон, формат и повтарящи се задачи — не факти, които се променят |
Съвременните модели приемат дълги промпти, затова при кратък FAQ първата опция често е достатъчна. RAG си заслужава, когато имаш повече текст, отколкото искаш да изпращаш всеки път — защото всяка дума, която изпращаш, струва пари и време (виж как се таксуват LLM API-тата).
Ако строиш функция „чат с нашите документи“, асистент за поддръжка или вътрешен инструмент за знания, почти сигурно строиш някаква форма на RAG.
Ежедневна аналогия
Представи си изпит с отворена книга. Ученик, който трябва да отговаря от памет, може да сбърка или да блъфира. Ученик, на когото е позволено първо да разгърне правилните страници, да ги прочете и после да отговори, е много по-надежден — при условие че намери правилните страници.
- Ученикът е езиковият модел.
- Учебникът са твоите документи.
- Разгръщането на правилните страници е търсенето (retrieval).
- Писането на отговора от тези страници е генерирането.
RAG е версията с отворена книга. И както на изпита, качеството на отговора зависи силно от това дали са намерени правилните страници.
Как работи RAG, стъпка по стъпка
Типичната RAG настройка има две фази.
Подготовка на документите (правена предварително):
- Събери изходния материал — статии от помощта, PDF файлове, политики, продуктови данни.
- Раздели на части (chunk): разбий дългите документи на по-малки парчета, често по няколко параграфа, за да може търсенето да върне само релевантната част.
- Превърни в embedding: изпрати всяко парче към embedding модел, който превръща текста в embedding — дълъг списък от числа, който улавя значението му. Текстове за подобни неща получават подобни числа.
- Съхрани парчетата и техните embeddings в база данни, която може да търси по сходство (често наричана векторна база данни или векторен индекс).
Отговор на въпрос (правен всеки път):
- Превърни въпроса в embedding със същия embedding модел.
- Извлечи парчетата, чиито embeddings са най-близо до този на въпроса — например топ пет.
- Построй промпта: инструкциите, извлечените парчета и въпроса.
- Генерирай: езиковият модел написва отговор въз основа на тези парчета, за предпочитане като посочва кои е използвал.
Търсенето по значение е това, което прави всичко работещо: въпрос за „връщане на парите ми“ може да намери парче, озаглавено „Политика за възстановяване на суми“, въпреки че нямат общи думи.
Работен пример: помощникът на една фитнес зала
Да кажем, че една фитнес зала има 40 статии за помощ и иска асистент за чат на сайта си. Член пита: „Мога ли да замразя абонамента си, докато пътувам?“
Приложението превръща въпроса в embedding и извлича трите най-близки парчета. Едно от тях гласи:
Замразяване на членство: Членовете с месечни планове могат да замразят
абонамента си до 2 месеца в годината. Заявете го на рецепцията или
в приложението поне 7 дни преди началото на замразяването.
Промптът, изпратен до модела, тогава изглежда ето така:
Ти си помощникът за клиенти на Northside Gym.
Отговаряй само от източниците по-долу. Ако отговорът не е в тях,
кажи, че не знаеш, и предложи да се свържат с рецепцията.
Спомени кой източник си използвал.
[Източник 1: Замразяване на членство] Членовете с месечни планове могат да замразят...
[Източник 2: Прекратяване на членство] ...
[Източник 3: Гостови карти] ...
Въпрос: Мога ли да паузирам абонамента си, докато пътувам?
И моделът отговаря: „Да — при месечен план можеш да замразиш абонамента си до два месеца в годината. Заяви го на рецепцията или в приложението поне 7 дни предварително (източник: Замразяване на членство).“
Фитнес залата никога не е преобучавала нищо. Когато промени политиката за замразяване, актуализира статията, приложението преизчислява embedding на това парче и следващият отговор отразява промяната.
Ключови термини
| Термин | Значение |
|---|---|
| LLM | Голям езиков модел — AI, който написва отговора. Виж какво е LLM. |
| Embedding | Списък от числа, представляващ значението на даден текст. |
| Embedding модел | Модел, който създава embeddings. Обикновено е отделен от чат модела и е много по-евтин. |
| Chunk (парче) | Част от документ, с размер, който може да бъде извлечена самостоятелно. |
| Векторна база данни / векторно търсене | Хранилище, което намира елементи с подобни embeddings. Някои обикновени бази данни го предлагат — например Postgres чрез разширението pgvector. |
| Top-k | Колко парчета се извличат за всеки въпрос. |
| Хибридно търсене | Комбиниране на търсене по значение с обикновено търсене по ключови думи, което помага при точни термини като кодове на продукти. |
| Context window | Максималното количество текст, което модел може да приеме в една заявка. |
| Опора / цитати (grounding / citations) | Свързване на отговора с конкретни извлечени източници и показването им. |
Чести заблуди
- „RAG обучава модела върху моите данни.“ Не. Нищо в модела не се променя; той просто чете допълнителен текст в момента на въпроса.
- „RAG означава край на халюцинациите.“ Означава по-малко от тях. Ако търсенето пропусне правилното парче или отговорът го няма в документите ти, моделът пак може да налучква. Инструктирай го да казва „не знам“ и тествай със въпроси, чиито отговори знаеш.
- „Нужна ми е специална векторна база данни.“ Често не е. При скромни количества данни векторно разширение към базата, която вече имаш, или дори обикновено търсене по ключови думи може да е достатъчно.
- „По-големите парчета са по-добри.“ Твърде големите изпращат много нерелевантен текст (повече разход, повече объркване); твърде малките губят контекста, който ги прави смислени. Очаквай да ги настройваш.
- „Качи просто всичко.“ Остарели, дублирани или противоречиви документи дават противоречиви отговори. Почистването на изходния материал често е най-голямото подобрение, което можеш да направиш.
- „Всеки може да види всеки документ.“ Само ако го построиш така. Ако някои документи са лични за определени потребители, самото търсене трябва да филтрира според това кой пита — иначе асистентът може да цитира данните на един клиент пред друг.
Колко струва
RAG функцията обикновено има три текущи разхода: embedding на документите ти (малък и основно еднократен), embedding на всеки въпрос (съвсем малък) и извикването на езиковия модел (основният разход, който расте с броя на изпратените парчета). Плюс съхранението във базата данни. Доставчикът на AI таксува тези разходи по твоя акаунт, затова задай лимит на разходите там.
Какво да поискаш от AI builder
- „Преди да строим RAG, провери: достатъчно ли е малко съдържанието ни, за да го включим просто в промпта?“
- „Раздели статиите от помощта на парчета от по няколко параграфа, запази заглавието и връзката към източника на всяко парче и съхрани embeddings в нашата база данни.“
- „Използвай хибридно търсене — по значение плюс по ключови думи — за да се съвпадат и кодовете на продуктите.“
- „Кажи на модела да отговаря само от извлечените източници, да казва, когато не знае, и да показва източниците под всеки отговор.“
- „Търси само в документи, които влезлият потребител има право да види.“
- „Преизчислявай embedding на документ автоматично, когато бъде редактиран.“
- „Пази API ключа на доставчика на AI на сървъра, в тайна, никога в браузъра.“
- „Записвай всеки въпрос, извлечените парчета и отговора, за да мога да преглеждам лошите отговори.“
RAG в Mythex
Mythex не включва готов продукт за база знания или RAG. Това, което прави, е да напише кода за такава в рамките на твоето приложение: ти носиш документите си и собствения си ключ за AI доставчик, съхранен като тайна на проекта, а агентът построява частите за извличане и чат, като използва Postgres базата данни на проекта за съхранение. Използването на доставчика се таксува към твоя акаунт при доставчика, а не в кредити на Mythex. Документацията предлага да започнеш с една проста AI функция и да добавиш RAG, когато тя работи — виж създаване на AI приложение и нашите ръководства за създаване на AI чатбот приложение и добавяне на AI функции към приложението ти.
Въпроси
Какво е RAG с прости думи?
RAG (retrieval-augmented generation) е начин AI моделът да отговаря с твоята собствена информация. Преди модела да отговори, приложението ти търси в документите най-релевантните пасажи за въпроса и ги включва в промпта, така че отговорът се опира на този текст, а не само на това, което моделът е научил при обучението си.
RAG обучава ли AI върху моите данни?
Не. RAG изобщо не променя модела. Той търси подходящ текст в момента, в който се зададе въпрос, и го предава на модела заедно с въпроса. Ако промениш документ, следващият отговор може да използва новата версия веднага.
RAG същото ли е като fine-tuning?
Не. Fine-tuning променя поведението на модела, като го обучава допълнително с примери, което е по-бавно и по-подходящо за стил или формат. RAG дава на модела факти, които да прочете в момента на въпроса, и е по-подходящ за знание, което се променя или трябва да се цитира точно.
RAG спира ли AI халюцинациите?
Намалява ги, но не ги премахва. Ако търсенето намери грешните пасажи или отговорът го няма в документите ти, моделът пак може да налучква. Добрите RAG приложения казват на модела да признава, когато не знае, и показват източниците, които е използвал.