Галоўная / Артыкулы / Практычныя прытамулкі: Нельга адзначыць номер, які ніхто не запісаў: OKF проты Vector

Практычныя прытамулкі: Нельга адзначыць номер, які ніхто не запісаў: OKF проты Vector

Практычныя прыказкі: Нельга восстановіць номер, які ніхто не запісаў: OKF проты Vector: контракты, чекі і месцы для коду для команд, якіе викорыстоўваюць гэты патерн.

1966 слоў

Існавайце гэта як перапісаны варыянт ідэй з статті «You Can’t Retrieve a Number Nobody Wrote Down: OKF vs. Vector Databases for RAG Chatbots», адаптаваны для працовіка-оператара: чыстыя этапы, арранжаваныя блакіты коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы задання.

Скомпілюйце свае даны, атрымайце свой тэкст

Этап скомпілювання данных і атрымання тэксту працюе найэфективней, калі яго розглядаць як вимерную плошчу. Запісайце адны ідеальны прыклад, адну ситуацыю з бягам і прыметкі для вярнення да пачатковага стану пры розширэнні масштаба. Дакументавайце як успешны, так і няуспешны шляхі рашэння проблем. Практыкі павтаральных спробы, кантроль людзямі і обработка некоректных паведамленняў є частью самага продукту, а не паслядніх корэктаванняў. Разлучайце правілы часткавання данных і правілы ўзяць іх. Змена аднаго з іх не должна вымагаць перапісвання другога, калі зменяюцца паказнікі якосці.

Адказ OKF

Этап адаптацы OKF работае наяўней, калі яго розглядаць як мерыябельную паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Валідзіце невялікія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адповядальнасць, а не на заплутаны ланцюг задач. Раздзеліце правілы часткавага апрантавання і правілы выкарыстоўвання дадзеных. Змена адных не павінна вымагаць перапісву іншых, калі зменяюцыся паказателі якосці.

Замена: адна Lambda

Этап адаптавання Lambda працюе наяўней, калі яго спрыяваць як меравальную паверхню. Зафіксавайце адны ідеальны прыклад роботы, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Спрыяйце гэтам этапу як кантракту межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзельвайцеся на частковыя рашэння без адпаведных запісаў. Раздзельце правілы частковага обробкі данных ад правіл ўзяць іх збору. Змена адных не павінна прымусваць перапісванне іншых, калі змянююцыся паказателі якосці.

// amplify/functions/askOkf/handler.ts — the essence
export const handler: Schema["askOkf"]["functionHandler"] = async (event) => {
   // in-process TF-IDF over the bundle
  const hits = search(event.arguments.question, 3);
  const top = hits[0];

  // Grounded-or-refuse: below the score floor,
  // nothing verified matches → refuse
  // before ever calling the model.
  if (!top || top.score < MIN_SCORE) {
    return { answer: refusal().text, citation: "", grounded: false, mode };
  }

  // read the verified figure straight from frontmatter
  if (mode === "extractive") {
    // 0 model calls - sub-millisecond
    const a = extractiveAnswer(hits);
    return { answer: a.text, citation: a.citations[0] ?? "", grounded: true, mode };
  }

  // generative: ground Claude on the ONE retrieved concept,
  // safety-prompted grounded-or-refuse
  const concept = top.concept;
  const context = `Concept: ${concept.label}\nSource: ${conceptSource(concept.frontmatter)}\n\n${concept.text}`;
  const response = await bedrock.send(
    new ConverseCommand({
      modelId: env.MODEL_ID,
      // grounded-or-refuse; declines medical-advice intent
      system: [{ text: SYSTEM_PROMPT }],
      messages: [{ role: "user", content: [{ text: `Verified concept:\n${context}\n\nQuestion: ${question}` }] }],
      inferenceConfig: { maxTokens: 400, temperature: 0 },
    })
  );
  const text = response.output?.message?.content?.[0]?.text ?? "";
  return { answer: `${text}\n\nSource: ${citation}`, grounded: true, mode };
};

Базовы стан: рэальны вектар RAG для тых сабе PDF-файлаў

Базовая сцэна робіць найэфектывней, калі яе спрыяваць як меравальную паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненне перш чым расширваць масштаб. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўы. Раздзеляйце правілы часткавання дадзеных і правілы ўтрымання іх. Змена аднаго з іх не должна вымагаць перапісвання другога, калі зменяюцца паказнікі якосці.

Рэзультаты: правильнасць

Этап пераканальнай правільнасці Рэзултатаў работае наякша, калі яго спрыяваць як мерыемую паверхню. Зберагачыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра абратыванне роботы перш чым расширваць сферу дзеяння. Заканальвайце настройкі за межамі коду прыемлі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць без неабходнасці чытання всей структуры. Раздзеляйце політыку часткавання дадзеных ад політыки ўзяць іх. Змена ў адной з яных не должна вымагаць перапісвання другой, калі зменяюцыся паказнікі якасці. Этап пераканальнай правільнасці Рэзултатаў работае наякша, калі яго спрыяваць як мерыемую паверхню. Зберагачыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра абратыванне роботы перш чым расширваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок не выйшаў, неудача должна адносіцца да адной конкрэтнай адпаведальнасці, а не да заплутанага ланцоўка дзеяння.

Рэзултаты: час адпаведнаго рэагавання

Для стадіі затрымкі рэзультатаў неабходна перад зменой коду задаць вхідныя даны, адпаведальнага за этап і крэтыры завершэння. Аператары должны магчымае перайсці на гэты этап з вядомага пункта контролю, не прымуджаючыся вярнуцца да схованага стану. Спрыятлівае ставленне да гэтай стадіі трэба розглядаць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Неабходна даць назвы артыфактам, задаць крэтыры успеху і не падзеляцца на частковае завершэння без адпаведных падтверджэнняў. Паказваць трэба тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цитатаў аператары не зможаць разлічыць галюцинацію ад працягу індэксавання.

Раследаванне: запрашэнне vs. складанне

Для выявлення розніцы межаў між стадіямі неабходна пазначыць вхідныя даны, адпаведальнага за кожны крок і крэтыяры завершэння працы перад змінайом коду. Аператары должны магчымае перазапускать крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Запісвайце час выконання і вартась токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне вартасей запобегае неспадзяваным рахункам, калі процес пераходзіць з дэмовай среды ў спадзеленую. Указвайце тыя часткі тексту, якія фактычна лежалі в основе адпаведнай адказу. Без цых цітатаў аператары не можаць розразліць галюцинацію ад прычын, зв’язаных з недастаткам індэксацыі.

Абмежэнні і компрасы OKF

Чырайчыная адміністрацыя і стадія OKF: перш чым зменаваць код, неабходна ясная дэфініцыя вхідных даных, адміністратара крока і крэтэрыяў завершэння. Аперацыйныя працавнікі павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба зберагаць праз аддзел коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь ланцуг задач. Неабходна цітаваць тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказы. Без цітатаў працовнікі не можуць адразнаець галюцинацыю ад працягу індэксавання. Чырайчыная адміністрацыя і стадія OKF: перш чым зменаваць код, неабходна ясная дэфініцыя вхідных даных, адміністратара крока і крэтэрыяў завершэння. Аперацыйныя працовнікі павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі крок не выканаецца, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцуг задач.

е.

Дапаможнік: трэці інструмент

Калі працуеце над трэцім этапам, спачатку запісайте кантракт: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Спрэцьвачваюце гэты этап як кантракт межу вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаце критэрыя успеху і не падзеўляйцеся частковым завершэнням без паведамлення. Змяркуйце ступень вярнага адналёгчэння на фіксаваным наборе запитаў прычымо да налаштавання прапазаў. Частыя змены прапазаў рэдка калі вядома выправляюць слабую систему адналёгчэння.

У реальны час і незалежна пераканана

Калі працюеце на стадыі жывага і незалежная пераверкі, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі список контроля дапамагае залічыць змяны ў кодзе праз працэўную час. Запісвайце часы выканання і кост токена або запиту праза рэзультаты функцыянальнасці. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэўная сяродавісць пераходзіць з дэмаверсіі ў спяльныя среды. Замерьце рэткі адзыв на фіксаваны набор запытаў прычымо да налаштавання прапазаў. Частыя змены прапазаў рэдка калі-небудзь выправляюць слабую систему адзыва.

Вывод: скомпілюйце свои даны, адзначыце свой тэкст

Калі працюеце над заключнай часткай, у стадії складання дасягненняў спачатку запісайце умовы: неабходныя даны, сигнал успеху і тое, што відбываецца пад частковай невыполненасці. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Зберагаюце настройкі паза кодам прыемлі. Файлы серавэра, храненні секретных данных і флагі функцыйяў павінны знаходзіцца ў аднам месцы, куды аператары можаць пераглядаць іх без неабходнасці чытання всей структуры. Перад налаштаваннем запитоў пераканайцеся ў рівень вярнага адналёгання на фіксаваны набор запитанняў. Рэдкаколі змены запитоў можаць выправіць слабкую систему адналёгання. Калі працюеце над заключнай часткай, у стадії складання дасягненняў спачатку запісайце умовы: неабходныя даны, сигнал успеху і тое, што відбываецца пад частковай невыполненасці. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, невыполненасць павінна вказваць на адную адпаведальнасць, а не на заплутаную лінію обробкі.

Чэкліст аператыўнай роботы

Калі працуеце над этапам чэкліста аператыўнай роботы, спачатку запісуйце умовы контракту: неабходныя даны, сігнал успеху і тое, што выканаецца у разы ўзельнага неяксамоства. Такі чэкліст дапамагае заставаць пазнейшыя змены коду чыстымі.

Документавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам.

Перад налаштаваннем запитоў замерайце рэткуюсьць на фіксаваным наборе запитанняў. Змена запитоў рэдка калі вярнайце слабкую базу дадзеных.

Зафіксавайце версіі залежнасцяў і запісуйце хеш адобраза, які выканаў дэманстрацыю. Возможнасць перадарабаткі прыважней за камандны досвід.

Вядзьміце прыоритет над малымі, тэставанымі елементамі працы над вялікімі скрыптамі. Калі якісь крок не выйшае, неяксамосць должна вказваць на адну адпаведальнасць, а не на заплутаны процес.

Зьвярзіце рэгулярнасць адгукавання на фіксованым наборам запытанняў прычымо да налаштавання прамптаў. Частае зменшэнне прамптаў рэдка калі лепшае слабую систему адзысквання інфармацыі.

Перш чым пераводзіце стак на вышэйшы ранг, заморозьце версіі, зафіксавайце «золаты» транскрыпты для критычных частак і паверкніце крокі абратнага запуску. У спакульнаваных средах неабходны ліміты частоты, пераказкі прав на выкарыстоўванне та чысты власнік для ротацыі секрэтных даных. Валіце надзейнасць прыгожэй, чым крэатывныя разовыя дамэ.

Запіс для 286fa7c42234: не кладзіце ключы прадастаўцаў у репазітарый, задаце ліміт токена на кожную сесыю і храніце транскрыпты празаўсёды разам з фіксатарамі для ацэнкі, каб празьліквальныя замены модэляў заставаліся пораўнанымі.

Для стадіі 0 прыема забезпечэння надзеі неабяжна практычная ваказка: перад зменым коду трэба адзначыць вхідныя данні, адпаведальнага за крок і критэрыя завершэння. Аперацыйныя працавнікі должны магчыма ўвайсці гэты крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.

Дакладныя ваказкі забезпечэння надзеі 0/768: памерыць час выканання, класію адказоў і колькасць выкорыстоўваных токеноў для гэтай ваказкі, а пасля, на аднойчынных критэрыях, а не на індывідуальных спостарожэннях, вырашыць, чы робіцца змена.

Калі працуеце над першым этапам зміцнення, спачатку запісайце контракт: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контроля дапамагае заліцьварыць пазнейшыя змены коду. Спрыятлівае ставленне да гэтаго этапу як да контракта межа данымі і пераканаленымі выходамі. Дайце назвы элементам, задаце критэрыі успеху і не падзеляйцеся на частковыя рашэння без адказу.

Дзеянне зміцнення 1/768: вымерыце час выканання, класію памылак і колькасць выкорыстоўваных токенав для гэтага пункту, а потым выберыце, чы робіць змену на аднойчы заданых критэрыях, а не на аснове індывідуальных спостарэнняў.

Этап зміцнення 2 працюе лепей, калі яго спрыятлівае ставленне як да вымерыванай плошчы. Запісайце адна ідеальная транскрыпцыя, адзін прыклад невыпання і запіску пра адвярненне роботы, перш чым расширваце сферу дзейнасці. Зберагаюце настройкі за межамі коду прыемленае. Файлы сяродавішняе, хранільнікі секрэтных дадзеных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры.

Дзеянне паўжчання 2/768: звярніце увагу на час выканання, клас памылакі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змены.

Для 3-й стадзіі паўжчання неабходна перад змянай коду чытка апісаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыяныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактернага рэзультата павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.

Дзеянне паўжчання 3/768: звярніце увагу на час выканання, клас памылакі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змены.

Калі працюеце над 4-й стадзіяю практыкы забезпечэння безпекі, спачатку запісайце умовы кантракту: неабяжлівыя данні, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцвачыць змяны ў кодзе адпаведна правілам.

Запісвайце час выканання задачы, а таксама вартасць токена чыў запиту праза функцыйнальныя рэзультаты. Відразувая візуабельнасць вартасцей запобегае неспакоўным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.

Дзеянне забезпечэння безпекі 4/768: вымерайце час выканання, класію памылак і вартасць викорыстоўвання токена для гэтай практыкі, а потым выберайце, чы хацеце застаўіць змяну, адпаведна фіксаванаму набору пытанняў, а не індывідуальным спостерэнням.