Ontалогія-свядомы GraphRAG: Калі вектары патрабуюць аб’ядрованых стосункоў
Як ідэнтыфікацыйныя анкеры, контракты онталогій, спалучэнне рангаў і механізмы «цітаваць-чы рашчытаць» выправляюць неякасці RAG у випадку CVE-зламоў, мнагапрыступовай прыналежнасці і незгадваных фактав графа.
Тэнзыўныя методы адналёгчэння задацоў добра адпавядают на багато запытаў, працуячы ў стандартны спосаб: з выкарыстоўванням точных ідэнтыфікатораў, адносаў между рознымі элементамі і фактов, якія існуюць толькі ў форме графа. GraphRAG, який урахоўвае антологію, спрыяе прыняцчы такіх недастаткаў як частку проекта — не як прычыны для адмовы ад вектарных методаў, а як праблемы, якія трэба рашыць шляхом дадавання додатковага слоя інформацыі з адпаведным типам даных.
Частка 1 — Как саме працуе RAG
Класычны падход RAG заключаецца у включэнні запытання, адзыскве найбліжэйшых фрагментаў тэксту і стварэнні адпаведных адпаведзей на адваротнае падставе гэтага контексту. Для запытання пра уязвімасць, напрыклад:
question: "path traversal apache httpd"
вектарныя та лексыкальныя рангі можу не збігатыся:
VECTOR (cosine) LEXICAL (keyword overlap)
1. CVE-2021-41773 0.746 ← correct 1. CVE-2021-28544 6.60
2. CVE-2021-23797 0.735 2. CVE-2021-40525 6.47
3. CVE-2021-32643 0.728 5. CVE-2021-41773 5.57 ← correct, buried
Калі правильны CVE ўсё-такі є, але не ёст тэндэнцыйна домінуючы, система стварае адпаведзі на аснове своіх прыкладоў. Домены, дзе пераважаюць ідэнтыфікаторы (CVE, SKU, ідэны фартакаў), быстра выявляюць гэтыя проблемы.
Частка 2 — Бар’еры, з якімі сталкаецца RAG
Недастатак 1 — точныя ідэнтыфікаторы
Спадзеянне лексыкі зьлегка дапамагае, але шумныя «суседзі» як і раней выграюць. Адзержаныя тэксты можаць нават адхіліць саму ідею прычыннасьці:
[S1] "Rejected reason: This vulnerability does not meet the criteria for a
security vulnerability…"
Потым генераванне адтворае некаторага «неправильнага суседа».
Няўдача 2 — цэліснасьць адносаў
Для запытання «Калія продукты падвергліся вплыву?» патрэбны рэшткі зьвязаў, а не толькі найбліжэйшы параграф. Аналіз садоўніцтва вяртае супарадныя CVE-коды; ён не пераглядае лінкі типу AFFECTS.
Няўдача 3 — факты, якія ніхто не запісаў
Дзеякія адказы існуюць толькі як перасеканні межаў аб’ектаў — ніколі як самастоятельныя рэчыпы. Жадны фрагмент не мае ў сабе такога зьвязу; толькі граф можа яго прадстаўіць.
Частка 3 — Чаго дадае граф зьнанняў
Узоркаваныя вузлы і рэшткі прыводзяць ідэнтыфікаторы і адносы да першага класу:
(:Vulnerability {cve_id: 'CVE-2021-41773', cvss_base_score: 9.8, cvss_severity: 'CRITICAL'})
-[:AFFECTS {version: '2.4.49'}]-> (:Product {key: 'apache:http_server'})
-[:HAS_WEAKNESS]-> (:Weakness {cwe_id: 'CWE-22'})
Перамеражванне прадстаўляе адказы на запытанні пра адносы; вектары як і раней дапамагаюць, калі тэкст ёсьць правым доказам.
Онтологія проты графа зьнанняў — аперацыйная разліка
Антологія — это угода: які типы сущностей, які типы рёбер, якія власцівасці ўскладнены. Граф знаёмых — это заполнены экзампляр па гэтай угодзе. Без антологіі выкарыстоўванне дадзеных стае нестабільным, а з’еднання стаюць ненадзеянымі. З антологіяю пайплайны пераканальваюць і адхроняюць некаліткі трыплы прычыму яны не заражаюць процэс выкарыстоўвання дадзеных.
Тры значэнні паўтары “GraphRAG”
- Граф як індэкс — зберагаюцься фрагменты, але выкарыстоўваецца граф для пошуку.
- Граф як памяць — сущності/рёбра ўжо ёсць галоўным сховішчам; текст ёсць доказам.
- Граф як планавальнік — агент плануе крокі, а потым запрашае текст.
Дзялёныя з антологіяю дизайны часта спалучаюць (2) і (1): структураваныя факты для тачнасці, асляплены текст для цитавання.
Частка 4 — Архітэктура, шар за шарам
Процес абсарбавання выдлічае энтыты/зв’язкі ў межах онталогіі, запісвае факты графа, зберагае фрагменты выхіднага тэксту і ўсё ж стварае векторны/лексычны індэкс на основе тэксту. Час запита викорыстоўвае ідэнтыфікаторы як анкеры, розширвае суседства ў графе, адбываецца ўсуненне дублікатавання/лексычны пошук, з’еднанне рангаў, і ствараецца запрошэнне з окремымі раздзеламі ФАКТЫ і ДАВЕДЧНЫЕ МАТЕРІЯЛЫ плюс правілы цитавання.
Тры рашэнні, якія змусілі даны
- Ідэнтыфікаторы-анкеры кращыя за нечыстае падабранне, калі є токен CVE/продукту.
- Зважана інтеграцыя павінна падняць рангі ў графе для запитаў на ідэнтыфікаторы, не заглушаючы прозаўскі тэкст у запитах на наратыв.
- Пераканальнія перагледы павінны адхіляць адпаведзі, якіе цітуюць відсутнія тэгі або суперчаць власнасцям графа.
Частка 5 — Адна запитанне, ад початку да канца
Запитанне:
Q: "which products are affected by CVE-2021-41773"
Рас’яснення анкераў:
ANCHOR Vulnerability CVE-2021-41773 method=identifier conf=1.00
Вагі злучэння, калі ідэнтыфікатор выступае як анкару:
weights = {graph: 2.0, vector: 1.0} # identifier match
# a lexical product match would be 1.2; no anchor at all, 0.0
Конкуруючыя спісы:
VECTOR 1. CVE-2021-21022 (Magento IDOR) 2. CVE-2021-27385 …
GRAPH 1. CVE-2021-41773 (anchor) 2. CVE-2021-25216 (shares netapp:cloud_backup)
Рэкіпрокныя балы злучэння рангаў:
CVE-2021-41773 2.0/(60+1) = 0.03279 ← graph, rank 1
CVE-2021-21022 1.0/(60+1) = 0.01639 ← vector, rank 1
Факты графа, запакаваныя для модэлі:
FACTS (from the knowledge graph):
[G1] CVE-2021-41773 | CRITICAL 9.8 (CVSS 3.1) | CWE: CWE-22
affects: apache:http_server 2.4.49, fedoraproject:fedora 34,
fedoraproject:fedora 35, netapp:cloud_backup,
oracle:instantis_enterprisetrack 17.1 / 17.2 / 17.3
source: https://nvd.nist.gov/vuln/detail/CVE-2021-41773
Джерела доказаў:
EVIDENCE (source text):
[S1] "A flaw was found in a change made to path normalization in Apache
HTTP Server 2.4.49. An attacker could use a path traversal attack…"
Структураваны адказ з цітатамі:
{"answer": "CVE-2021-41773 is CRITICAL with a CVSS base score of 9.8 [G1].
It affects apache:http_server 2.4.49, fedoraproject:fedora 34,
fedoraproject:fedora 35 [G1].",
"sources": ["G1"],
"entities": [{"label": "Vulnerability", "key": "CVE-2021-41773"}],
"confidence": "high"}
Вороты пасля генеравання:
✓ every cited tag exists in the context
✓ the answer cites something at all
✓ every CVE id in the answer appears in the context
✓ entity labels are real ontology classes
✓ numbers that look like CVSS scores match the graph facts
→ ACCEPTED
Паслаблы адказ, які не праходзіць перакрытчыкі:
{"answer": "CVE-2021-41773 scores 4.3 and affects nginx [G1]."}
Працыны адхоўкі:
✗ states 4.3 but the graph facts say [9.8]
✗ entity Product nginx:nginx is not in the context
→ REJECTED → one repair attempt → still bad → REFUSAL
Тая ж сама тэхніка, але на адны крок даўжэй
З’еднанне інвентара ператварае “паражаныя продукты” на “паражаныя прыкладнікі першага рангу і адпаведныя каманды”:
application criticality team library pinned match_precision
checkout-web tier1 payments httpd 2.4.49 version-exact
log-aggregator tier2 infrastructure httpd 2.4.49 version-exact
api-gateway tier1 platform-core httpd 1.15.17 product-level
Тая ж сама анкара і тэхніка злучэння; ўсьмо ж адны дапаможны крок через піні прыкладнікаў.
Частка 6 — Рэзультаты, косты і багі
Па ідэнтыфікаторах і мульты-хоп скуадах, фюзыя, яка урахоўвае онталогію, падымае тачнасць у пораўнанне з базовымі методамі, якія выкарыстоўваюць толькі вектары; па запытаннях у чыстай прозе падыскок меньшый — таму трэба застаўляць вектары. Косты крыюцца ў экстракцыі, аперацыях з графамі і трохкі большых запытаннях, а не ў відмове ад імбеддынгу.
Багі, таму што яны ўсё-такі ёсць справжнім контэнтом
Тыповыя багі ў працэсе вырабоцтва: змяны онталогіі (з’яўляецца новы тип рэгулі), галюцинаціі экстрактара (неправильная ступень сер’ёзнасці), адмыслы ў вазах фюзыі, тэгі цитатаў, якія не існуюць у контэксте, а таксама кешы, якія падаюць застарэлыя кадры графа пасля апдэйта CVE. Кожны баг адпавядае певнаму тэсту: перакананне схемы, межы атрыбутаў, настройкі фюзыі, перакананне наявнасці цитатаў і час жыцця/анулювання.
Частка 7 — Калі будуваць гэта, а калі не трэба
Зьвярцець, калі трафік уключае ідэнтыфікаторы, запытанні пра адносы/вплыв у кальце, або факты, якія ніколі не пісаны як рэченні. Адказаць не трэба, калі корпус дастаткова маленькі для выкарыстоўвання толькі сильнага гібрыднага пошуку, або калі ніхто не будзе падтрымляць онтологію. GraphRAG — гэта не атрыбут высокай складнасі; гэта адказ на спецыфічныя формы неудач.
Пяць інваріантных прынцыпаў, якія важна даглядаць у будзь-ям масштабе
- Антологія перш — тыпы раней, чым тройкі.
- Анкеры для ідэнтыфікатораў — точнае падпаданне раней, чым косайнус.
- Раздзеліце факты і доказы у запытанні.
- Цітацыя або адхіленне пасля генеравання.
- Мэжураванне на запытаннях, якія ў вас є — не толькі на блогах з публічнымі статыстыкамі успеху.
Этыя інварыянтныя элементы застаюцца корыстнымі як у дэмантах на ноутбуках, так і ў системах абаранення для калькуляцыі рызыкаў для разных корыстнікаў. Расшырэнне дапаможнасці должна значыць расшырэнне онтологіі та вялікага калекцыі дадзеных, а не проста дадагучча ўсё большых кількасцяў інструкцый да неструктураваных дадзеных. Следаваць трэба пісаць паметры экстракцыі (точнасць/працэсаванасць аб’ектаў та звязкаў) разам з паметрамі адпаведных адказаў; інакш “лепшы” модэль можа таямна ствараць фальшывыя звязкі, якія выглядаюць правдаподобна, але паспяшаюць невыкарыстанне рэзультатаў аудыта. Онтологію трэба версіяваць як API: дадагуччы змены ўжо є простыя, перэназначэння вымагае спецыяльных процедураў міграцыі, а выдаленне — стварэння спецыяльных записаў, каб старыя копіі не воскресілі выдаленыя звязкі. Для кантролю трэба ставіць апавешчэння пра раст падазроўных адмоваў та пра высокія паказнікі бягучых адказоў экстрактара, а не толькі пра затрымкі роботы Gateway — такія сігналы дапамагаюць выкрываць проблемы ў системе знанняў раней, чым корыстнікі пазнаюць некоректную ступень рызыка CVE. Нарэшце, у першыя месцы трэба выдзеліць бюджет на людскую пераглядку спорных CVE-ідентыфікатораў та супарабоцтва продуктаїв; такія меткі станавяцца важлівымі для пазнейшага аналізу.
Тэсты службы, якія забезпечваюць адекватнае выкалічванне ваг фузыі ў меру росту каталога.
Пры ацэнкі прадавцаў чы ўсталяванняў запытайце, як яны кодуюць абмежэння онтологіі, як яны спаўнаюць рангі графа і вектара, а таксама як яны тэстуюць адраднасць цітатаў. Дэманстрацыі, якія паказваюць толькі прыемны інтэрфейс графа без этых трох пасляўдзей, зазвычай ствараюць тую ж самую проблему RAG пад новым назвам. Валіце банальныя, напісаныя пайплайны з явнымі анкерамі працоўнае “агентское графавае разумованне”, якое не можа паказаць, якая грань падтрымала тверджэнне пра сер’ёзнасць. Саме такі банальны падход зрабляе GraphRAG, які ведае про онтологію, прыдатным для выкарыстоўвання.
Спрацавляйце з вагамі фузыі як з параметрамі конфігурацыі, якія тэстуюцца: зберагайце іх разам з фіксатарамі, якія зафіксаваюць запыт, спіс кандыдатаў і апэктываны топ-ід. Калі хтось “налаштоввае” вагі ў нотбуку, заўсёды трэба прыняць PR, які апдэйтуе гэтыя фіксатары, каб регрэсіі не маглі хавацца ў камунітэтных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзяць у канфігурацыю, якая пераблакуецца: храніце іх праза фіксаты, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фіксаты, каб регрэсіі не маглі ся хаваць у традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад тэстуемай канфігурацыі: яе трэба зберагчы празаўсюды з фікстурамі, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны лепшы ID. Калі хтось «налаштоввае» вагі ў зошыцы, неабходна адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад канфігурацыі, якая пераблакуецца: храніце іх празаўседы ў тых жа фікстурах, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.
Спрытныя вагі ўваходзьце у склад канфігурацыі, якая пераблакуецца: храніце іх празаўседы ў тых жа фікстурах, якія зафіксаваюць запитанне, спіс кандыдатаў і апэктываўаны топ-ID. Калі хтось «налаштоввае» вагі ў зошыцы, трэба адзначыць PR, які будзе апдэйтаваць гэтыя фікстуры, каб регрэсіі не маглі захавацца ў традыцыйных знаёмствах.