Практычныя прытамулкі: Частка II — Калі RAG не вяртае нічога
Практычныя прыказкі: Частка II — Калі RAG не вяртае нічога: контракты, перакантровкі і слоты для коду для команд, якія викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з роздзела “Частка II — Калі RAG не вяртае нічога” для аператараў: чыстыя этапы, аранжаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы.
Як діагноставаць і вылечыць порожню адзыскву ў системах AI
Падход “Як діагноставаць і вылечыць” працуе найэфектывней, калі яго розглядаць як вимерную паверхню. Зафіксавайце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму, перш чым расширваць масштаб. Зберагаўце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функций павінны знаходзіцца ў адном месцы, якое аператары можаць пераглядаць без неабяжнай чытанняў усіх элементаў системы. Раздзеляйце правілы часткавання дадзеных і правілы адзысквы. Змена ў одных не павінна прыводзіць да перапісву іншых, калі змянююцца паказнікі якосці.
1. Пачніце з індексавання і эмбеддынгаў
Этап «1. Пачатак з індексавання» працюе найэфектывней, калі яго розглядаць як меркавыя показнікі. Зберагчыце адны ідеальны прыклад роботы, адну ситуацыю неудачы і прыметкі па адзинаванню роботы перш чым расширваць сферу дзеяння. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў ёсць часткай продукту, а не элементамі пазнейшай дапрацоўкі. Раздзеляйце правілы частковай обработкі дадзеных і правілы ўтрымання іх. Змена адных не павінна вымагаць перапісвання іншых, калі змянююцыся показнікі якасці.
2. Пераканацца ў прагах, сэмантыцы балавання і фільтрах
Этап аналізу двух прагатак перагляду працюе наяўней, калі яго розглядаць як вимерную плошчу. Зафіксавайце адну ідеальную транскрыпцыю, адин прыклад неудачі і запіс пра відкатанне раней, чым расширваце сферу дзеяння. Валідзіруйце маленькі, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны процес. Раздзеліце правіла часткавання інфармацыі ад правіл яе выявлення. Змена ў одных не павінна прымусваць перапісванне іншых, калі змянююцца показнікі якосці.
results = vector_store.search(query_embedding, top_k=10)
for r in results:
print(r.score, r.metadata.get('source'))
3. Перапісванне запитаў і якосць частак
Этап перапісву запитаў з трыма пераконтрацямі працюе наякнайэфектывней, калі яго розглядаць як мерыябельную плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Разглядайце гэты этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыя успеху і не падзеўляйцеся частым, непূরным выкананням задачы. Раздзеліце правілы часткавага абрабатвання данных і правілы ўзяць іх з базы дадзеных. Змена адных не павінна прыводзіць да перапісву іншых, калі змянююцыся показнікі якосці.
4. Іспользуйце гібрыдны спосаб збору дадзеных для кращага вярнэння інформаціі
Этап гібрантнага адзысквання 4 Use працюе наяўней, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Запісвайце час адпаведных дзействаў і кост токеноў чы выкарыстоўваных запитаў разам з функцыональнымі рэзультатамі. Відразлівае паказанне костаў з’являецца перашкоду неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Раздзеліце правілы часткавання дадзеных ад правілаў адзысквання. Змена ў одных не павінна вымагаць перапісвання іншых, калі змянююцыся паказнікі якосці. Этап гібрантнага адзысквання 4 Use працюе наяўней, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Дакументавайце як успішны, так і вярнэнчы выкарыстоўваныя шляхі. Перапробаванні, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
5. Адзысквайце шырока, а потым пераранжавайце
Для стадіі «5 Retrieve Broadly Then» неабяжна прадзеўкаваць вхідныя даны, адпаведальнага за шаг і крэтыяры завершэння пры перадзеўкванні коду. Аператары должны магчымае перадзеўкваць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выконваецца, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес. Прыкладзіце фрагменты, якія насправды ляглі в основу адпаведнай адказы. Без цых прамянаў аператары не зможуць разлічыць галюцинацію ад працягу індэксавання.
6. Расшырыце запит і створыце явны шлях адзначэнняя
У стадії «6. Расшырэнне запиту» неабяжна практычнаць вхідныя даны, адміністратара шагу і крэтырыя для завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце гэтай стадіі як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, практычнаць перакананні на успех і адмовіцеся ад беззвучнага частковага завершэння. Указывайце тыя часткі тексту, якія фактычна лежалі в основе адпаведнай адказы. Без цых цітатаў аперацыйныя працавнікі не зможуць адразліць галюцинацыю ад прасоў у індэксаванні.
docs = retrieve(query)
if not useful(docs): docs = retrieve(expand(query), hybrid=True)
if not useful(docs): return ask_for_clarification_or_no_answer()
7. Болей стойкая архітэктура працы
Для стадіі 7 A More Resilient неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівая видавальнасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмавай версіі ў спяльныя сераўы. Указвайце тыя часткі тексту, якія фактычна лежалі в основе адпаведнай адказу. Без цых цітатаў аперацыйныя працавнікі не можуць разлічыць галюцинацію ад прасоўкі ў індэксаванні. Для стадіі 7 A More Resilient неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
8. Зробіце процес адаптавання даных видным
Калі працюеце над стадзіяй «8. Зробіце процес адаптавання даных видным», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал пра успех і тое, што вядзецца пад частковым невяскам. Такі список дапамагае заліцварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест вялікіх скрыптав. Калі якась з крокаў не выконваецца, прычына невяскі должна вказываць на адну конкрэтную прычыну, а не на заплутаную сітку крокаў. Перад налаштаваннем запитоў пераканайцеся ў рівні відтворэння даных на фіксаванай сэтцы запитаў. Частыя змены запітоў рэдка калі вядуць да павышэння якасці адтворэння даных.
log({
'query': query, 'rewritten': rewritten_query, 'filters': filters,
'candidate_count': len(raw_results), 'scores': scores,
'selected_chunk_ids': selected_ids, 'fallback': fallback_stage
})
Чек-ліст для эксплуатацыі
Калі працюеце над стадзіяй «Чек-ліст для эксплуатацыі», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал пра успех і тое, што вядзецца пад частковым невяскам. Такі список дапамагае заліцварыць пазнейшыя змены ў кодзе.
Зберагаюце канфігурацыю паза кодам прыемліка. Файлы сяродавішча, храненні секрэтных дадзейнаў і флагі функцыйяй должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжнага чытання всіх дадзейнаў.
Замеряйце рэкалі на фіксаванай сэтке запытаў прычым падлашоўвання прамптав. Частае змена прамптав рэдка калі выправляе слабую систему пошуку.
Фіксуйце версіі залежнасцяў і запішыце хэш адпаведнага зображэння, якое было выкарыстоўвана для дэманстрацыі. Возможнасць павтарнага стварэння результатаў лепшая за традыцыйныя методы.
Документавайце як шлях успеху, так і шлях вяснавання проблем. Праказы, людзкія перакрыцця і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Замеряйце рэкалі на фіксаванай сэтке запытаў прычым падлашоўвання прамптав. Частае змена прамптав рэдка калі выправляе слабую систему пошуку.
Перш чым запускать стак, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычнага шляху і паказайце способы абяроны. У спільных средах неабходны ліміты частоты запуска, пераконтроль стану абонента і чыстая відпаведальнасць за змěну секрэтных дадзеных. Лепшая ўпэўненасць у працы, чым крэатывныя разовыя дамэстрацыі.
Прыметка для 429668e62b58: не кладзіце ключы прадаўцаў у репазітарый, задаце верхнюю межу токеноў на сесію і зберагачыце транскрыпты празаўсёды з фікстурамі для ацэнкі, каб пазнейшыя змěны модэляў заставаліся пораўнанымі.
Для прыметкі па забезпечэнню безпекі на стадыі 0 паказвайце вхідныя даны, абоўязкі адпаведальнага за крок і крэтыярыі завершэння прычынным чынам перад змěнай коду. Аператары должны магчымае перазапускіць крок з вядомай точкі контролю, не падозрываючы схованы стан. Конфігурацыю трэба заставляць празаўсёды за межамі коду прыемленае. Файлы среды, хранільнікі секрэтных дадзеных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаючы весь граф.
Дзеянне паўжасткі 0/735: звярніце увагу на час выканання, клас памылкі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай сэтце запытанняў, а не на асобістых спазыраннях, выявіце, чы хацеце застаўіць змяну.
Працюючы над першым этапам запісу паўжасткі, спачатку запішыце контракт: неабходныя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковай памылкі. Такі чарт дапамагае заставаць пасляэтапныя змяны ў кодзе чыстымі. Валіце маленькія, тэставаныя елементы працы над кодам замест большых, заплутаных скрыптав. Калі якісьць крок не выйшла, памылка должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
Дзеянне паўжасткі 1/735: звярніце увагу на час выканання, клас памылкі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай сэтце запытанняў, а не на асобістых спазыраннях, выявіце, чы хацеце застаўіць змяну.
Этап 2 прыцелення на зміцнэнне работае найкраща, калі яго розглядаць як вимероўваную паверхню. Запісаце адна «золатая» транскрыпцыю, адин прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і кост токенаў або запытаў праза функцыйнае рэзультат. Відкрытыя даныя пра косцы з’являюцца раніше, таму утрымліваецца можлівасць неспакою, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне прыцелення на зміцнэнне 2/735: вимеравайце час выканання, класію памылак і витраты токенаў для гэтага дзеяння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на аднойчыне з пераказамі, выявляйце, чы хацеце застаўіць змяну.