Галоўная / Артыкулы / Практычныя прытамулі: За межамі пошуку за сэроўнанням: фільтрацыя метадаў для RAG з

Практычныя прытамулі: За межамі пошуку за сэроўнанням: фільтрацыя метадаў для RAG з

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

1411 слоў

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

Звядзецца фільтр з чаго?

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

User Question +Known Application Context
      ↓
category = returns
      ↓
Vector Search
User Question
      ↓
Query Embedding
      ↓
Vector Search
      ↓
Relevant Results
User Question
      ↓
Query Understanding
      ↓
returns
      ↓
Vector Search
      ↓
category = returns

Дадаўшы метаданыя да вектароў

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

{
  "document_name": "Return Policy",
  "category": "returns",
  "region": "us",
  "status": "active",
  "chunk_text": "Damaged products can be returned within the allowed return period."
}

Фільтраўванне пошуку

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

const result = await s3Vectors.send(
  new QueryVectorsCommand({
    vectorBucketName: "rag-demo-vectors",
    indexName: "store-knowledge",
    queryVector: {
      float32: queryEmbedding,
    },
    topK: 5,
    returnMetadata: true,
    returnDistance: true,
  })
);
const result = await s3Vectors.send(
  new QueryVectorsCommand({
    vectorBucketName: "rag-demo-vectors",
    indexName: "store-knowledge",
    queryVector: {
      float32: queryEmbedding,
    },
    topK: 5,
    filter: {
      category: "returns",
    },
    returnMetadata: true,
    returnDistance: true,
  })
);
(Meaning of the Question + category = returns)
        ↓
Amazon S3 Vectors
        ↓
Relevant Return Information

Метаданы, якія можна і нельга фільтрацыяваць

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

{
  "category": "returns",
  "region": "us",
  "status": "active"
}
{
  "chunk_text": "Damaged products can be returned within the allowed return period."
}
metadataConfiguration: {
  nonFilterableMetadataKeys: ["chunk_text"],
}

Іспытанне больш чым аднай умовы

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

filter: {
  $and: [
    {
      category: {
        $eq: "returns",
      },
    },
    {
      region: {
        $eq: "us",
      },
    },
    {
      status: {
        $eq: "active",
      },
    },
  ],
}
filter: {
  category: {
    $in: ["returns", "warranty"],
  },
}

Заранее задумайцеся пра метаданных

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

{
  "document_name": "Return Policy",
  "category": "returns",
  "region": "us",
  "status": "active",
  "chunk_text": "..."
}

Падобнасць і мета-даныя працююць разам

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

User Question
      ↓
(Semantic Similarity + Reliable Metadata Context)
      ↓
Amazon S3 Vectors
      ↓
More Focused Results

Заключэнне

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

Чэк-ліст для эксплуатацыі

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

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

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

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

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

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

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

Прыміткі для 5ab755d9f682: не кладзіце ключы прадаўцоў у репазітарый, задаце ліміт токена на кожную сесію і зберагачыце транскрыпты празаўседы ў фікстурах ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.