Стратэгіі фрагментавання RAG: Паўны інжынерны падчынак
Порэшчанне стратэгіяў чанкавання RAG: баланс між контэкстам і тачнасцю, чанкаванне фіксаванага размеру і з урахоўваннем структуры, а таксама прыглушаныя методы, якія работаюць з урахоўваннем контэксту.
Крыніцы: RAG Chunking Strategies: The Complete Engineering Guide
Наступныя прытамлівкі паказваюць практычны шлях для розумэння кнігі «RAG Chunking Strategies: The Complete Engineering Guide». Акцэнт ставіцца на кантракты, пераконтроўванні і месца для коду, які можна легка адразу вставіць, а не на мотывацыйныя аспекты. Калі працуеце на стадзіі агляду, спачатку запісайце кантракт: неабяжныя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі спіс пераконтроўвання дапамагае заліцьваць пазнейшыя змены ў кодзе. Спрыймайце гэтую стадзію як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаце крытэрыя успеху і не падтрымайце частковае завершэння без паведамлення.
Асновны компроміс: кантэкст проты точнасці
Этап «Кантэкст ключовых компромісаў» працюе найэфектывней, калі яго розглядаць як вімерную плошчу. Зафіксавце адну ідэальную версію, адын прыклад неудачы і запіс пра відкатанне раней, чым расшырваце обсяг работы. Запісвайце часы выканання і вартасьць токенав або запытаў разам з функцыйнальнымі рэзультатамі. Візуабельная інформацыя пра вартасьці з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Раздзеліце політыку часткавання дадзеных ад політыкі ўзяць іх. Змена адной з яных не павінна вымагаць перапісвання другой, калі зменяюцца паказнікі якосці.
[ TOO SMALL CHUNKS ] [ TOO LARGE CHUNKS ]
Loss of Context / Meaning "Lost in the Middle" Effect
(e.g., "IF request is made...") (Dense with irrelevant fluff)
│ │
└───────────────► 🎯 ◄─────────────────┘
THE GOLDILOCKS ZONE
(High Precision + Context)
Стратэгія 1: Раздзелванне фіксаванага розмеру і рэкурсыўнае (Базовыя варыянты)
Стадыя рэкурзыўнае апрацоўкі з фіксаваным размерам у стратэгіі 1 працуе наяўней, калі яе розглядаюць як вімерную паверхню. Зафіксавайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Зберагаюце настройкі паза кодам прыемліка. Файлы серавэра, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць аўдыт без неабяжнага чытання всіх дадзеных. Раздзеляйце правілы часткавання дадзеных ад правілў ўзяць іх. Змена адных не должна вымагаць перапісву іншых, калі зменяюцыся паказчыкі якосці.
Часткавання з фіксаваным размерам (наўатывальны падход)
Этап фіксаванага размеру чакункавання «Наўін» працюе найэфектывней калі яго спрыяваць як меравальную плошчу. Зберагучы адны ідэалны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Дакументаваць трэба як успішны, так і вярнучыся паты. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней. Раздзеліце політыку чакункавання ад політыкі выкарыстоўвання дадзеных. Змена адной з іх не должна прымусваць перапісванне другой, калі зменяюцыся паказнікі якосці. Этап фіксаванага размеру чакункавання «Наўін» працюе найэфектывней калі яго спрыяваць як меравальную плошчу. Зберагучы адны ідэалны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Спрыявайце гэтам этапу як кантракту межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не прабывайце прыймаць часткова завершаныя рэзультаты без паведамлення.
Рэкурзіўнае чакункаванне сімвалоў (Базовы стандарт для працы)
Для этапы рэкурсыўнага часткавання сімвалаў неабходна перад змянай коду задаць вхідныя даны, абавесцелювальніка крока і крэтырыя завершэння. Аперацыёныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў праза функцыйнае рэзультаты. Відкрытыя даны пра косцы запобегаюць неспакоўным рахункам, калі парадок зменяецца з дэмавай версіі на спадзеленыя асяроддзя. Указваць часткі тэксту, якія фактычна сталі падставай для адпаведнага адказу. Без ціх цытатаў аперацыёныя працавнікі не можуць адразніць галюцынацыю ад прасоў у індэксаванні.
# Example: LangChain Recursive Character Splitter
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50,
separators=["\n\n", "\n", ". ", " ", ""]
)
Стратэгія 2: Часткаванне з урахоўваннем структуры і сэмантыкі
Для этапы «Стратэгія 2: Семантыка, ўсведамлена структурой» неабходна прадзефінавацыя вхідных дадзеных, адпаведнага адпаведальнага за крок і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць праза кодам прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Неабходна цітаваць тыя часткі тэксту, якія фактычна ляглі в основу адпаведнай адпаведзі. Без цітатаў працавнікі не можуць адразніць галюцынацыю ад прасоўкі ў індэксаванні.
Разбіўка на часткі, ўсведамлена структурой (дакумент-орыентаваная)
Для этапы фрагментавання дакумента з урахоўваннем структуры неабходна перш за ўсё візначыць вхідныя даны, адпаведальнага за этап і крытэрыя завершэння прычыненне перад змінайом коду. Аператары должны магчымае перзапускаты этап з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшай наладкі. Прыцінаваць трэба тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адпаведзі. Без ціх цытатаў аператары не зможаць розразліць галюцынацыю ад працягу індэксавання. Для этапы фрагментавання дакумента з урахоўваннем структуры неабходна перш за ўсё візначыць вхідныя даны, адпаведальнага за этап і крытэрыя завершэння прычыненне перад змінайом коду. Аператары должны магчымае перзапускаты этап з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяць трэба цій этапы як на даговоры межа вхідных даных і перакананых выходных рэзультатаў. Назваць всі элементы, візначыць крытэрыя успеху і адмовіцца ад безадказных частковых рашэнняў.
Завершэнне.Семантычна часткавацеўка (межы на аднойчыні з значэнням)
Калі працуеце над стадзіяй семантычнай часткавацеўкі з межамі на аднойчыні з значэнням, спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выканаецца у разы частковага невялікога браку. Такі чарт дапамагае заліцвачыць пазнейшыя змены ў кодзе. Запісвайце часы выканання і кост токеноў або запытаў па боку функцыйнаых рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Замерьце рэтард на фіксаванай сэтке запытаў прычым рэгулюванні прапазаў. Частыя змены прапазаў рэдка калі лепшаюць слабую сістэму адзысквання інформацыі.
Sentence A ──► Embed ──┐
Sentence B ──► Embed ──┴── Similarity: 0.89 (Keep together)
Sentence C ──► Embed ──── Similarity: 0.32 (Drop below threshold -> CUT HERE)
Стратэгія 3: Развітыя архітэктуры, якія зберагаюць кантэкст
Калі працуеце над стадзіяй «Стратэгія 3: Развітая версія з адарожэннем кантэксту», спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцьварыць чыстасцю пазнейшых змян у кодзе. Храніце настройкі парадульна коду прыемлена. Файлы сераўіснага сэрвісу, базы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Перад налаштаваннем запітоў пераканайцеся ў рэверыі на фіксаванай сэтке запітаў. Частыя змены запітоў рэдка калі вядуць да павышэння якосці выкарыстоўвання дадзеных.
1. Разбіўка на часткі: ад малага да вялікага (родны-дзецінскі падчынення)
Калі працюеце над першым этапам «Маленькія часткі – вялікія часткі для родыка-дзеці», спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Змяроўвайце ступень вяснавання на фіксованым наборэ запытанняў прычым падбір запытань. Частае змена запытанняў рэдка калі вярнуе слабую способнасць да вяснавання. Калі працюеце над першым этапам «Маленькія часткі – вялікія часткі для родыка-дзеці», спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівайце гэтаму этапу як угодзе між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы элементам, задайце крытэрыя успеху і адмовіцеся ад тыхнага частковага завершэння без паведамлення.
2. Пазнейшая часткаваўка
Этап 2 «Пазлаванне пасляў» работае наякша, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідэальная версія транскрыпцыі, адзін прыклад неудачы і прыметку пра адвярненне перш чым расшырваць масштабы. Запісвайце часы выканання і косты токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівая візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайнага рэжыма ў спяльныя асяроддзя. Раздзеляйце правілы пазлавання пасляў ад правілаў выкарыстоўвання дадзеных. Змена аднаго з іх не должна прымусіваць перапісванне другога, калі змянююцца паказнікі якосці.
Матрыца рашэнняў для прыменення
Этап матрыцы рашэння працэўкі ўсё лепш функцыонуе, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адну ідэальную версію, адзін прыклад неудачы і запіс пра вярнэнне да поперадней версіі перш чым расшырваць масштабы. Зберагаюце настройкі паза кодам прыемліка. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць аўдыт без неабяжнага чытання всіх дадзеных. Раздзеляйце правілы частковай обработкі дадзеных ад правілаў ўтрымання іх. Змена адных не должна вымагаць перапісву іншых, калі зменяюцыся паказначыкі якосці.
Кантрольныя правілы інжынерыі для успеху
Правіла інжынернай структуры для параграфовых заданняў даюць найлепшыя рэзультаты, калі іх спрыяваць як меруючую паверхню. Зафіксуйце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб задання. Документавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшай правкі. Раздзеліце політыку частковай обработкі дадзеных ад політыкі ўтрымання інформацыі. Змена адной з яных не должна вымагаць перапісвання другой, калі зменяюцыся показнікі якосці. Правіла інжынернай структуры для параграфовых заданняў даюць найлепшыя рэзультаты, калі іх спрыяваць як меруючую паверхню. Зафіксуйце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб задання. Спрыявайце гэты параграф як даговор між вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаць крытэрыя успеху і не падтрымвайце бяспечнае частковае завершэння задання.
Час прыступіць да рэальной работы..
Ёнколі хочацеся перайсці на новы этап, паказуйце вхідныя даны, адміністратара крока і крытэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісвайце час выканання і кост токена або запыту праз функцыйнальныя рэзултаты. Відразувая візуабельнасць костаў запобегае неспакойным рахункам, калі траекторыя перайходзіць з дэмаверсіі ў спакульнаныя асяроддзя. Указвайце тыя часткі, якія фактычна ляглі в основу адпаведнай адказы. Без цых цітатаў аператары не можуць разлічыць галюцынацію ад прасоў у індэксаванні.
Прыямыя прэтарысткі
У стадыі прабэрасупактаў неабходна з’явіць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць паза кодам прыемленае. Файлы серавэра, хранільнікі секрэтных дадзеных і флагі функцый належыць у аднам месца, якое працавнікі можу аўдытаваць, не чытаючы весь ланцуг. Паказваць трэба тыя часткі тэксту, якія фактычна лежалі в основе адпаведнай адказы. Без цых цітатаў працавнікі не зможу роззначыць галюцынацію ад працявання з непаштоўным індэксам.
pip install langchain langchain-community langchain-experimental llama-index llama-index-embeddings-openai openai chromadb
export OPENAI_API_KEY="your-openai-api-key"
1. Рэкурсыўнае раздзелэнне сімвалаў (LangChain)
Для этапы 1 «Рэкурсыўнае раздзелэнне сімвалоў» неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне крока з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна аддзержваць дакументацыю як пра шлях успеху, так і пра шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Паказваць часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цытатаў аператары не можуць разлічыць галюцынацію ад прасоў у індэксаванні. Для этапы 1 «Рэкурсыўнае раздзелэнне сімвалоў» неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне крока з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяць гэтай этапы як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назваць всі неабходныя элементы, задаць крэтыяры успеху і адмовіцца ад мовчанкавага частковага завершэння задачы.
from langchain_text_splitters import RecursiveCharacterTextSplitter
# Sample document
sample_text = """
# RAG System Design
Retrieval-Augmented Generation (RAG) decouples knowledge storage from reasoning capability.
Instead of forcing the AI to answer strictly from memory, RAG searches an external database first.
## The Ingestion Pipeline
1. Document Extraction: PDFs and web pages are converted into clean text.
2. Chunking: Documents are chopped into smaller, manageable text blocks.
3. Vectorization: Each block is converted into a numeric representation.
"""
# Initialize Recursive Splitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=200, # Target chunk size in characters/tokens
chunk_overlap=30, # Overlap to prevent mid-sentence context loss
separators=["\n\n", "\n", ". ", " ", ""] # Try double line breaks first
)
chunks = text_splitter.create_documents([sample_text])
print(f"Total chunks created: {len(chunks)}\n")
for i, chunk in enumerate(chunks):
print(f"--- Chunk {i+1} ---")
print(chunk.page_content)
2. Разбіўка на часткі «родыч-дзеця» / з малага на велікае (LangChain + Chroma)
Калі працюеце над стадыяй разбіўкі на часткі «родыч-дзеця» з малага на велікае, спачатку запішыце умовы: неабходныя даныя, сігнал успеху і тое, што вядзецься у разы ў частковай невдачы. Такі спіс контролю дапамагае залішацца чыстасаблівым пад час пазнейшых змян у кодзе. Запісвайце час выканання і вартасьць токенав або запыткаў праза функцыйнае рэзультат. Відразліва візуалізацыя вартасцей запобегае неспакою, калі працэс пераходзіць з дэмавайну у спяльныя сераўы. Перад налаштаваннем запрошэнняяў пераканайцеся ў рывні відтворэння інформацыі на фіксаванай сэтке запытаў. Частае зміненне запрошэнняяў рэдка калі-небудзь выправляе слабкія аспекты пошуку інформацыі.
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain.retrievers import ParentDocumentRetriever
from langchain_community.vectorstores import Chroma
from langchain_community.storage import InMemoryStore
from langchain_openai import OpenAIEmbeddings
from langchain_core.documents import Document
# 1. Initialize Vector Store (for small child embeddings) and DocStore (for large parent text)
embeddings = OpenAIEmbeddings()
vectorstore = Chroma(collection_name="parent_child_rag", embedding_function=embeddings)
docstore = InMemoryStore()
# 2. Define Parent (Big) and Child (Small) Splitters
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=600, chunk_overlap=50)
child_splitter = RecursiveCharacterTextSplitter(chunk_size=120, chunk_overlap=20)
# 3. Create the ParentDocumentRetriever
retriever = ParentDocumentRetriever(
vectorstore=vectorstore,
docstore=docstore,
child_splitter=child_splitter,
parent_splitter=parent_splitter,
)
# 4. Ingest Documents
docs = [
Document(
page_content="""
System Architecture: The Two Pipelines.
A production RAG framework runs on two main pipelines: Ingestion and Inference.
The Ingestion pipeline extracts text, creates chunks, embeds them, and stores them in a vector DB.
The Inference pipeline encodes user queries, performs vector similarity search, injects context into prompts, and generates LLM answers.
Hybrid search combines keyword and vector retrieval to handle exact SKU IDs alongside general concepts.
"""
)
]
retriever.add_documents(docs)
# 5. Query the Retriever
query = "What happens during inference in RAG?"
retrieved_parents = retriever.invoke(query)
print(f"Retrieved Parent Context (Full Block):\n")
print(retrieved_parents[0].page_content)
3. Семантычная разбіўка на часткі (LlamaIndex)
Калі працюеце з 3 стадзямі Semantic Chunking LlamaIndex, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі спіс пераканаецца дапамагае залічыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранілішчы секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Замерайце рэкалі на фіксаваным наборэ запытанняў прычымо да налаштавання прамптаў. Частыя змены прамптаў рэдка калі выправляюць слабую эфектыўнасць адзысквання дадзеных.
from llama_index.core.node_parser import SemanticSplitterNodeParser
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.schema import Document
# 1. Initialize the Embedding Model used for detecting topic shifts
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
# 2. Configure the Semantic Splitter
semantic_parser = SemanticSplitterNodeParser(
buffer_size=1, # Number of surrounding sentences to evaluate together
breakpoint_percentile_threshold=90, # Split threshold percentile (higher = fewer, larger chunks)
embed_model=embed_model
)
# 3. Sample document with distinct thematic shifts
raw_text = """
Quantum computing leverages qubits that can exist in superposition states, unlike classical bits.
Superposition allows algorithms to process vast potential outcomes simultaneously.
Entanglement further connects qubit states instantaneously across physical space.
On a totally different topic, baking sourdough bread requires maintaining a wild yeast starter.
You feed the starter equal parts flour and water every 24 hours to encourage fermentation.
Proper gluten development requires folding the dough during the bulk fermentation stage.
"""
doc = Document(text=raw_text)
# 4. Generate Nodes (Chunks)
nodes = semantic_parser.get_nodes_from_documents([doc])
print(f"Total Semantically Coherent Chunks: {len(nodes)}\n")
for i, node in enumerate(nodes):
print(f"--- Chunk {i+1} ---")
print(node.get_content().strip())
print("\n")
Падсумак адбудовы
Калі працуеце над стадзіяй падсумку адканалявання, спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага адказу. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Змяржывайце рэткасць адказоў на фіксаваныя наборы запытанняў прычым рэгулюванні падказак. Частае змена падказак рэдка калі вярнайце слабкую базу адказоў. Калі працуеце над стадзіяй падсумку адканалявання, спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага адказу. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Спрэцаваўце гэтую стадзію як контракт межа данымі і пераканальванымі выходамі. Назвайце артыфакты, задаць тэсты на успех і не прабывайце адмаўляць частковыя адказы без паведамлення.
Вывад: Чанкаванне — гэта інжынерныя проблемы, а не проблемы ШЫ
Метод чанкавання ў выніку ўсё лепшая працюе, калі яго розглядаць як віміроўваную структуру. Запісайце адну ідэальную версію транскрыпцыі, адын прыклад неудачы і прыметку па поверненню да попярэдня стану пры розшырэнні масштаба. Запісвайце часы выканання і вартасць токенав або запіта разам з функцыональнымі рэзултатамі. Візуабельна інформацыя пра вартасці з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўеры. Раздзеляйце правілы чанкавання і правілы выкарыстоўвання дадзеных. Змена адных не павінна прымусваць перапісвання іншых, калі змянююцыся паказнікі якосці.
Чэк-ліст для эксплуатацыі
Для етапа чэк-ліста для эксплуатацыі неабходна з’явіць вхідныя даны, адпаведальнага за кожны крок і крытэрыя завершэння пры зміне коду. Аператары павінны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан.