Практычныя прытамулкі: Урокі, якія мы апранулі пад час стварэння асистента RAG без адзінольнага модуля
Практычныя прыказкі: урокі, якія мы атрымалі пад час стварэння асистента RAG без окольных кантрактаў, пераконтрацый і спецыяльных слотаў для коду для команд, якія викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з артыкула «Урокі, якія мы выучылі пад час стварэння асистента RAG без окалічнай базы вектарных дадзеных» для працаваючых з апаратам: чыстыя этапы, аранжаваныя блакіты коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы задання. Этап Аналізу работае найкраща, калі яго розглядаць як меркаваную плошчу. Запісаце адну ідеальную транскрыпцыю, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму расширэння масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць крок не выйшла, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач.
Фундамент RAG у аўтары
Для стадіі The RAG Foundation неабяжна ўзначыць вхідныя даны, адпаведальнага за кожны крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій стадіі як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, узначыць перакананні пра успех і адмовіцца ад беззвучнага частковага завершэння. Цітаваць тыя часткі, якія фактычна сталі падставай для адпаведнай адказу. Без цітатаў аперацыйныя працавнікі не зможуць адразніць галюцинацыю ад прасоў у індэксаванні.
CREATE TABLE docs (
id BIGINT NOT NULL,
path VARCHAR(512),
`index` INT,
`text` STRING,
vector ARRAY<FLOAT> -- 768-dim Gemini embedding
) ENGINE = OLAP
PRIMARY KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1;
SELECT path, `index`, `text`,
approx_cosine_similarity([0.012, -0.034, ...], vector) AS similarity
FROM docs
ORDER BY similarity DESC
LIMIT 8;
Архітэктура: ад запускаў у Slack да перакананай адказу
Для стадіі «Архітектура з выканаў слак-з’явоў» неабходна пазначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Запісваюць час выканання і вартасць токена або запыту разам з функцыйнальнымі рэзультатамі. Відразлівая вартасці з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўры. Наводзьце асоблівасці, якія фактычна ляглі в основу адпаведнай адказы. Без цых асоблівасцей аперацыйныя працавнікі не можуць разлічыць галюцинацію ад працягу індэксавання.
Іншыя элементы стака ў кароткаму перакладзе
Для застаўней часткі ўрадзежу неабходна перад змянай коду адначасова вызначыць даннэ, адпаведальнага за крок і критэрыя завершэння. Аператары павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыемленае. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў павінны быць аднароджаны ў адном месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Неабходна цітаваць тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказы. Без цітатаў аператары не можаць разлічыць галюцинацію ад працягу ў індэксаванні. Для застаўней часткі ўрадзежу неабходна перад змянай коду адначасова вызначыць даннэ, адпаведальнага за крок і критэрыя завершэння. Аператары павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выканаецца, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.
Чаму гэты стак працюе для легкага RAG-дзяржабліка
Калі працуеце над этапам «Чаму гэты стак працюе», спачатку запісайте контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контроля дапамагае заліцварыць пазнейшыя змены ў кодзе. Спрыятліваце гэты этап як контракт межу вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзельвайцеся на часткова завершэння без паведамлення. Змяркуйце рэкал на фіксаванай сэтке запытаў прычымо да налаштавання прамптов. Частая зміна прамптов рэдка калі-небудзь выправляе слабую систему аднаходжэння інформацыі.
Табеля первачных ключоў + завантажэнне праз стрым для дакументаў, якія можна быстра заменіць
Калі працуеце з этапам «Тэблы первачага ключа», спачатку запісайце умовы: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі список контроля дапамагае заліцьварыцца пад змянамі ў коде пазнейша. Запісвайце час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі праця пераходзіць з дэмовай среды ў спакульную. Замерьце рэткість аднаходжання адпаведных дадзеных на фіксованым наборе запытанняў прычым рэгулюванню підказак. Часта змена підказак рэдка калі-небудзь выправляе слабыя аспекты пошуку.
curl --location-trusted -u root: \
-H "format: json" \
-H "strip_outer_array: true" \
-T docs_with_embedding.json \
-XPUT http://host:8030/api/starsage/docs/_stream_load
Пошук на аднойчынных інструментах працоўнае над заполненням контэксту
Калі працуеце над стадзіяй «Адгукаванне на адказы з выкарыстаннем інструментаў у контэксте», спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выканаецца пад час частковага абярэння. Такі список контроля дапамагае заліцьваваць пазнейшыя змены ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжнага чытання всіх элементаў. Адмэжавайце рэкалі на фіксованыя наборы запытанняў прычым регулюванні прамптав. Частае змена прамптав рэдка калі вярнуе слабыя рэзультаты адгукавання. Калі працуеце над стадзіяй «Адгукаванне на адказы з выкарыстаннем інструментаў у контэксте», спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выканаецца пад час частковага абярэння. Такі список контроля дапамагае заліцьваваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, абярэнне должна паказваць на адную адпаведальнасць, а не на заплутаны ланцужок задач.
Кэш для імбеддінгу з метай кантролювання витак
Этап «Кэш для імбеддінгу з метай кантролювання витак» працуе наяўней, калі яго розглядаць як меравальную плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Разглядзайце этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння. Раздзеліце правілы частковай обробкі дадзенняў ад правілаў ўтрыманні інформацыі. Змена адных не павінна прыводзіць да перапісвы іншых, калі змянююцца паказнікі якасці.
Шэсьць урокаў з практычнага викорыстання RAG
Шысць урокаў, якія можна вывучыць на стадзіі адрабоўкі, будуць найэфектывнейшыя, калі іх рассматрываць як чыёсь канкрэтнае показніке. Зафіксавайце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра неабходнасць вярнуцься да пачатковага стану, прычаму расшырюючы масштабы. Запісвайце час выканання задач і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувыя даны пра косты запобегаюць неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спакульную. Раздзеляйце правілы часткавага обробкі дадзеных і правілы ўтрымання іх. Змена адных не павінна вымагаць перапісву іншых, калі зменяюцыся показнікі якосці.
1. Інжынерыя запытаў эфектывнейшая для кантролю галюцинацый, чым налаштаванні процэса выкарыстоўвання дадзеных
Этап «1 Prompt Engineering Beats» працюе найкраща, калі яго спрыяваць як меркаваную плошчу. Зберагучы адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Храніце настройкі парадульна коду прыемлівання. Файлы сяродавішча, базы секрэтных даных і флагі функцый крануцца ў аднам месцы, дзе аператары можаць аудітаваць іх без неабяжнага чытання всіх элементаў. Задаце ліміты токэнаў на кожны рунг і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоючыя рахункі. Этап «1 Prompt Engineering Beats» працюе найкраща, калі яго спрыяваць як меркаваную плошчу. Зберагучы адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок не выйшае, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі дзеянняў.
2. Вылечыце проблему чанкавання перш чым налаштовваць процес адзысквання дадзэнняў
Для стадіі «2. Выправленне проблемы чанкінгу» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і критэрыя завершэння перад змінайом коду. Аперацыяныя працавнікі павінны магчыма было перзапусціць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрацавляйце з гэтай стадіяй як з кантрактом межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, прадзефінаваць пераканання ў успеху і адмовіцца ад беззвучнага частковага завершэння. Цітаваць тыя часткі, якія фактычна ляглі в основу адпаведнай адпаведзі. Без цітатаў аперацыяныя працавнікі не зможуць адразніць галюцинацыю ад прасоўкі ў індэксаванні.
3. RAG — гэта інструмент, а не канвейер
Для 3 RAG гэта ўзлётна плошча: перад змянай коду неабходна визначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымае перайсці на гэты крок з вядомага пункта контролю, не спрабоўваючы здогадвацца пра схованы стан. Запісвайце час выконання і вартасьць токеноў або запытанняя разам з функцыйнальнымі рэзультатамі. Візуабельнасьць вартасцей з самага пачатку запобегае неспакою, калі процес пераходзіць з дэмовай среды ў спакульную. Указвайце тыя часткі тексту, якія фактычна ляглі в основу адпаведнай адказы. Без цых цітатаў аператары не можуць розразліць галюцинацію ад прычын, зв’язаных з недастаткам індэксацыі.
4. Дазвольваеце сэсійнаму моделю платформы
Для стадіі «4. Следаваць платформы» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўіса, хранільнікі секрэтных данных і флагі функцый належаць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакранаваннем схэмы, чым вольныя тэкстовыя апісанні. Для стадіі «4. Следаваць платформы» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выкарыстоўваць маленькія, тэставаныя елементы, чым велікія скрыпты. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.
contents = []
for turn in history[-MAX_CONTEXT_MESSAGES:]:
contents.append({"role": turn["role"], "parts": [{"text": turn["text"]}]})
contents.append({"role": "user", "parts": [{"text": query}]})
5. Апаратна частка — рана, а не пасля запуску
Калі працюеце над стадзіяй «Апаратна частка — рана, а не пасля запуску», спачатку запісайце угоду: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераконтролю дапамагае залічыць змяны ў кодзе. Спрэтавайцеся да гэтай стадзіі як да угоды межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзволяйце частковым завершэнням без адзінаго звуку. Замерайце рэкалі на фіксаваным наборе запитаў прычыну налаштавання прапаноў. Частае зміненне прапаноў рэдка калі лечыць слабкую ступеню адзысквання інформаціі.
6. Актыўна выкарыстоўвайце кэш, стежыце за кожным доларам
Калі працюеце над стадзіяй «6 Cache Aggressively Track», спачатку запісайце умовы: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список дапамагае заліцьварыцца пад пазнейшыя змены коду. Запісвайце час выканання і кост токена або запыту праз сумярненне з функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай среды ў спакульную. Замерьце рэткість аднаходжання даўедзеных адказоў на фіксаваны набор запытанняў прычымо да налаштавання запрасаў. Частыя змены запрасаў рэдка калі вядуць да павышэння якасці аднаходжання інформацыі.
Чыстыя компрэсаванні
Калі працюеце над стадзіяй «Чыстыя компрэсаванні», спачатку запішыце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліць пазнейшыя змены коду чыстымі. Храніце настройкі параду ўнутры коду прыемлі. Файлы сераўіса, хранальнікі секрэтных дадзенняў і флагі функцыйяй должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжлівага чытання всей структуры. Перад налаштаваннем запитоў пераканайцеся ў рэкале на фіксаваным наборы запытанняў. Частае змена запытоў рэдка калі вярнайць слабую эфектыўнасць выкарыстоўвання дадзенняў. Калі працюеце над стадзіяй «Чыстыя компрэсаванні», спачатку запішыце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліць пазнейшыя змены коду чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, адказ за гэтае нявыпання должен вядаць на адну адпаведальнасц, а не на заплутаны ланцужок задач.
Што паказвае Rocky
Этап «Што паказвае Rocky» працюе найкраща, калі яго спрыяваць як меравальную паверхню. Запісаце адны «золаты» прыклад, адну справу з бягам і прыметку пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыявайце гэты эпаз як кантракт межа вхіднымі даннымі і пераканаленымі выходнымі рэзультатамі. Даеце назвы артыфактам, задаеце критэрыі успеху і не падзеляйцеся на частковыя рашэння без адказу. Раздзеляйце правілы частковай обработкі дадзеных і правілы ўтрымання інформаціі. Змена адных не павинна прымусваць перапісванне іншых, калі змянююцца паказнікі якосці.
Чэртка выканання
Калі працуеце над эпазам чэрткі выканання, спачатку запісаце кантракт: неабяжныя вхідныя даны, сігнал успеху і тое, што вядзецца ў разы частковага бягу. Гэта чэртка дапамагае заліцьварыць пасляэйшныя змены ў коде.
Документаваце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка неканальных паведамленняў є частью продукту, а не элементамі пасляэйшнай дапрацоўкі.
Зьвярзіце рэкалі на фіксаванай сэтке запытаў прычымо да налагоджэння прамптав. Часта змена прамптав рэдка калі-небудзь выправляе слабую систему аднаходжэння інфармацыі.
Зафіксавайце версіі залежнасцей і запісаўце сумарны атрыбут зображэння, якое было выкаранае пад час дамоў. Возможнасць перапрыявлення рэзультатаў важлівей за традыцыйныя знання.
Валічыце маленькія, тэставаныя елементы працоўнікаў у працэзе, а не вялікія скрыпты. Калі якісь крок не выйшае, адказ за гэтая неудача павінен быць прысвечаны адзіной адпаведальнасці, а не заплутанай лініи обробкі.
Зьвярзіце рэкалі на фіксаванай сэтке запытаў прычымо да налагоджэння прамптав. Часта змена прамптав рэдка калі-небудзь выправляе слабую систему аднаходжэння інфармацыі.
Перш чым пераводзіце стак, зафіксавайце версіі, запісаўце „золаты“ транскрыпт для критычнай лініі і паказваце крокі для адворачэння. У спакульнаваных средах патрэбны ліміты частоты, перакананні ў прыналежнасці і чысткі власніка для ротацыі секрэтных дадзеных. Валічыце простую надзяйнасць працоўнікаў працэзе, а не крэатыўныя, адночасовыя дамоў.
Запіскі для пакета 26df51f33219: не класты ключі прадаўцоў у репазітарыю, задаць максымальны ліміт токена на сесію, а таксама зберагчы транскрыпціі праза фіксатуры адлічэння, каб пазнейшыя замены моделей заставаліся порównанымі.