Палітра RAG для падчыннай політыкі кадроў з LangChain і LangGraph
Памяць працавальнікам, створаная на аднаковых прынцыпах як сістэма RAG для працы, з вікорыстаннем LangChain і LangGraph: прыема дадзей, MMR, перапісвы з урахоўваннем історыі, правіла безпекі, цітаты і ацэнкі.
Крыніцы: Building a Production-Style HR Policy RAG Assistant with LangChain and LangGraph
Паспорт, які раскрывае працэс прыему даных, адгутаванне MMR, запіты, які урахоўваюць історыю, перакананні ў безпецы, хукі для ацэнкі і UX для чату з калькама роўнаў.
Введэнне
Для аддзела кадраў у большых компаніях недастатнька проста генераваная адпаведзь. Памочны прыстрой для правіл не павінен выдумваць правіла выпачкі на адвароце пад час прадзейнавання. Ён павінен адгутаваць затверджаныя дакументы і падкрэпляць кожны тверджэння цімі джэрамі. Гэта і ёсць задача методу генеравання з адгутаваннем даных (RAG).
Модульная сістэма запітанняў і адказоў па правілам пра кадры у стыле прымення можа аб’еднаваць Python, LangChain, LangGraph, чат-мадэль сумесную з OpenAI, ChromaDB, Streamlit, эмбедынгі, методы адзыскання дадзэнняў MMR, перапісва запітоў з урахаваннем історыі, праектаванне запрошэнняў, модэрацыю вхідных дадзэнняў, перакантрольванне вставкі запрошэнняў, ацэнку адзыскання дадзэнняў, памяць для канверсацый, стварэнне падсумкаў і экспорт у фармат PDF. Мета — не дэмаверсія чат-бота, а сістэма RAG, якая серьёзна ставіцца да якосці адзыскання дадзэнняў, кантэксту канверсацій, безпекі, ацэнкі і зручнасці выкарыстоўвання.
1. Проблема
Калі хтось запытае: «Сколькі дзён відпачыку з прычыны хворобы дазволены?», звычны LLM можа выдумаць адказ. У свою чаргу, асістэнт з пытанняў пра кадры павінен:
- Зрозумець запыт
- Пашукаць дакументы організацыі, прынятныя для кадровай справы
- Адзыскаць найболей рэлевантныя часткі
- Перадаць гэтыя часткі мадэлі
- Стварыць адказ, базаваны на іх
Алгорытм работы: дакументы кадровага аддзелу → ўваходжэнне → разбіўка на часткі + метаданы → вектарныя прэдставленні → ChromaDB → прыстрой для пошуку → запіт, які урахоўвае історыю → адпаведныя дакументы → запрос, ўзгадваючы паводкі, → адпаведная адпаведзь → цітаты.
2. Уваходжэнне дакументаў
Сырыя правілы ператвараюцца на часткі, якія можна шукаць. Полныя дакументы занадта велікія, ўсё жа ўскладнюючы включэнне іх у кожны запрос, і могу перапыліць ліміты кантэкста. Часткі маюць метаданы, такія як назва файла, шлях, папка, тып дакумента і меткі джэрэла — гэта стварае можлівасць пазней выкарыстоўваць іх для цітатаў, адлагоджэння проблем і аналізу рэзультаатаў пошуку.
3. Вектарныя прэдставленні і храненне вектараў
Кожная частка становіць вектарныя прэдставленні:
"Employees receive annual leave..."
↓
Embedding Model
↓
[0.12, -0.43, 0.87, ...]
Вектары і метаданы зберагаюцца ў ChromaDB. Запыты корыстніка таксама ператвараюцца у вектары, тады правілы з семантычнаю блізасцю будуць выяўляцца нават калі формулівацыя разная (“выпуск за хворобу” проты “права на відпачык за хворобу”).
4. Адзыявленне з MMR
Простая метода падобнасці top-k можа вернуць чатыры фрагмента палітакі пра выпускны час, якія здаюцца майжэ дубліруючыміся:
Chunk 1 → Leave policy
Chunk 2 → Leave policy
Chunk 3 → Leave policy
Chunk 4 → Leave policy
Максімальная маргінальная рэлевантнасць санаважвае рэлевантнасць і разнообразнасць. Большыя кандыдацкія запасы fetch_k, а пасля — выбор заканчоўных k за дапамой MMR, зменшаюць рэданданс:
10,000 chunks
↓
Similarity search
↓
20 candidate chunks
↓
MMR
↓
4 diverse + relevant chunks
↓
LLM
5. Адзыявленне з урахоўваннем історыі
Пытанні на кшталт «А як з менаджэрамі?» пасля адпаведзі на пытанне пра годзінны выпуск сама по сабе ёсць неяснымі. Крок з урахоўваннем історыі перапісвае запіт, выкарыстоўваючы історыю размовы, прытаму як адбываецца адзыявленне:
Conversation History
+
Current Question
↓
LLM
↓
Standalone Search Query
Гэта аддзеляе кантэкстуалізацыю запіту (што мела на увазе адпаведальнік?) ад генеравання адпаведзі (што павінна быць адпаведзь, вяручы дакументам?).
6. Генераванне адпаведзі на адной падставе
Зявілыя фрагменты падаюць у запрос, які прыказвае модэлі выкарыстоўваць толькі дакументы з канпаніі, ухілляцца ад стварэння новых правілаў, паказваць выключэнні, залічвацца канкрэтнымі і прызнаваць недастаткі. Архітэктура: запіт → кантэкстуалізацыя → прыстрой для адзыскання → дакументы → запрос для перагляду → LLM → адпаведны адказ. Модэлі пішуць прозу; корпус супляе факты.
7. Чаму LangGraph
Калі колькасць стадзій зрастае — аправарэнне, модэрацыя, выяўленне втрымкі інфармацыі, апрацоўка запытаў, адзысканне дакументаў, генераванне, памяць, стварэнне апуса — лінейны ланцуг становіцца кранкавым. LangGraph мадэлюе рабочы працэс як станы і вузлы:
User Input
↓
Validation
↓
Guardrails
↙ ↘
Safe Unsafe
↓ ↓
RAG Workflow Reject
↓
Final Response
↓
Conversation
Management
Граф стае простым для расшырэння, калі ўжо не як адна вялікая функцыя.
8. Нормы
Уводныя даны для працы трэба пераканаць пры выкарыстоўванні тэхналогіі RAG:
- Модэрацыя — раннее блакаванне контэнту, які наражае на правіла
- Выяўленне втрымкі запросаў — адхоўленне атак у стыле “ігнораваць пярэднія інструкцыі…”
Парадак мае значэнне: даныя з вводу корыстніка → перакантрольванне безпекі → RAG, а не даныя з вводу корыстніка → сыры ЛЛМ.
9. Памяць дыялогу і стварэнне апূর্তання
Асістэнты, якія ведуць дыялог у кальце, патрабуюць історыю, але необмежаныя транскрыпцыі спалююць токены. Стварэнне апূর্তання старыях кальцеў дапамагае зберагчы важлівую інфармацыю, адночасна обмежваючы актыўны кантэкст — гэта баланс межа зберагчым і вартасцю.
10. Адгукненне па рэтрыбуцыі
Адказ можа выглядаць плавным, хоць рэтрыбуцыя не выйшла. Неабходна пераканацца, чы рэгулярныя фрагменты тэксту былі прыняты, а не толькі чы тэкст узяўся. Неабходна адгукнуцца пра якасць рэтрыбуцыі, стварэнне генераванага тэксту і прыменне яго як окрэмых аспектаў.
11. Цітаты з джэрэл
Лепшая вжываць фразы на кшталт «Саветнікі атрымоўваюць 20 дзён ўстаўкі на год (Палітыка устаўкі §3)», чым простыя твэрджэння. Цітаты павышаюць довер'е, спрыяюць адлагоджэнню проблем і забезпечваюць возможнасць адстэплення, калі саветнікі можаць ачынаць орыгінальны PDF.
12. Экспорт дыялогу у фармаце PDF
Экспорт размовы у фармаце PDF дазволяе працавікам захаваць ўсё для пазнейшага вжытку. Гэта дэталь, якая паказвае, што сістэма прызначаная для рэальной работы, а не толькі для тымчасовага чату.
Заканчэнне
Працоўны асістэнт у фармаце HR RAG складаецца зэйчоў: прыёму даных, стратэгіі пошуку, перапісвы размовы, аргументацыі, керавання графамі, правілаў, ацэнкі і цітатаў. LangChain і LangGraph дапамагаюць аб’еднаваць гэтыя етапы; Chroma і MMR вплываюць на тое, што можа бачыць мадэль. Непрыемлівая правіла продукту застаецца такой: адпаведзі прадукту выходзяць з утверждзеных дакументаў, а не з памяці мадэлі пра інтэрнэт.
Выборы дызайну, якія маюць значэнне на практыцы
Размер частак і ступень перакрыцця не ўжо толькі косметычныя праблемы. Занадта велікі частакі слабяць сігнал умяшчэння; занадта маленькія частакі втрачаюць абмежэння, накладваныя суседзяючымі правіламі. Перакрыцце дапамагае, калі правіло распрастраняецца па межы. Метаданы — гэта не проста дэкаратыўная элемент; без назвы файлу і падказак пра раздэлы цітаты становяцца нечыстымі, а наборы для ацэнкі — важкімі да оценкі.
Параметры MMR (fetch_k, k, diversity lambda>) трэба налаштаваць на адповіднасць з наборам пытанняў з пазначкамі, а не на інтуіцыю. Колекцыя кандыдатаў, якая занадта мала, ніколі не прадстаўляе разнаобразных фрагментаў; колекцыя, якая занадта веліка, вітрачае час на апрацоўку.
Перапісваўанне з урахоўваннем історыі не павінна ствараць новых фактов. Крок перапісваўання павінен толькі расшырваць займеннікі і непূরныя запіты ў самостойныя запіты для пошуку. Калі мадэль перапісваўання пачне даўаць адпаведзі, сістэма пошуку ніколі не побачыць чыстага запіту.
Захоўнікі павінны быць налагоджаны ў пераддзеўстві рэтрыбюцыі. Модэрацыя і выкліканне адкрыць патогеннага коду, якія выкананы пасля таго, як мадэль ужо пераканалася тэкст прайватной політыкі, ёсць запазджанымі. Неабяжна адхіліць падозру на вставку коду; дазволіць такое толькі там, дзе політыка продукту чыста прыменяе мяккі блокаванні з логаванням.
Ацэнка павінна включаць як рэтрыбюцыю (recall@k адпаведных ідэнтыфікатараў дакументаў), так і генераванне (аддаслужнасць да перакананага тэксту). Які-небудзь адпаведны адказ, але на базе некорэктнага клазу, таксама ўважаецца невыпаннем задачы. Зберагаць следы: перапісаны запіт, перакананыя ідэнтыфікатары, фінальны адказ, спіс цытатаў.
Streamlit (או будзь-які просты інтэрфейс) павінен чытка адображаць цытаты і статусы “невядома”. Савецкія працавальнікі больш дазвараюць сістэмам, якія прызнаюць своія недастаткі, чым тым, якіе вігадваюць розмаўныя правілы пра відпачынак.
Экспорт у PDF ёсць функцыяю зберагачвання: людзі вставляюць адказы на праблемы ў тыкеты. Экспортаваны тэкст трэба спрыяваць як потэнцыйна чутлівы і прыменяць тыя ж правіла доступу, што і пад час чат-сесіі.
У канцы, нехай шлях адпрацоўкі графа застаецца зрозумелым. Новыя інжынеры павінны магчыма быць накрэсліць ляму параболізацыі: апраўленне → перапісваўанне → запыт → генераванне → адпаведзь, не падаючыся ў неабавязковыя галузі. Неабавязковыя галузі (падсумованне, экспорт) з’яўляюцца як окрэмыя вузлы, а не ўтвараюць структуру внутры працэсу генеравання.
Такая дысцыпліна ператварае дэманстрацыю RAG за выходныя на тое, што каманда па кадрам можа прыменіць, не баячыся тых, каго называюць „галюцынаціямі правіл“.
Размешчэнне элементаў у часовай шкале
HR DOCUMENTS
│
▼
DOCUMENT INGESTION
│
Chunking + Metadata
│
▼
EMBEDDINGS
│
▼
CHROMADB
│
▼
RETRIEVER
(MMR Search)
│
│
USER ──→ GUARDRAILS ─────┤
│
▼
HISTORY-AWARE QUERY
CONTEXTUALIZATION
│
▼
RETRIEVAL
│
▼
RELEVANT DOCUMENTS
│
▼
QA PROMPT + LLM
│
▼
GROUNDED ANSWER
│
┌────┴────┐
↓ ↓
Citations Memory
│
▼
Summarization
│
▼
PDF Export
Першы дзень частаўсе пры «вбудовванні PDF-файлаў і чаце». З другага па дзесяты дзень з’яўляюцца рэальныя элементы працы: схемы метаданых, налаштаванне MMR, патроны для перапісву, механізмы модэрацыі, класыфікаторы для введэння дадзеных, табліцы для ацэнкі, фарматаванне цітатаў і стыканне розмов. Калі праігнораваць гэтыя крокі, сістэма будзе добра працаваць з простымі запітамі, але заваліцца пад час наступных запытоў, з агрэсівнымі патронамі чы ў разе пошуку майжэ ідэнтычных дадзеных.
LangChain памагае з’ўязваць об’екты модэля і срэдства пошуку; LangGraph памагае зробіць логіку керування прозрачной. Ні адна з іх не можа заменіць рашэння пра тое, якія папкі HR ёсць автантонічнымы, хто можа запытаць пра якія правілы і як у інтэрфейсе відображацца «не вядомы» элементы. Гэтыя рашэння павінны быць у дакументах да праекту разам з дыяграмамі графа.
Калі ў працэйнай суперактывацыі выйшла проблема, найшырэзны ўзбіранак для дыягностыкі зазвычай такі: пераглянуць перапісаны запіт, апісаць ідэнтыфікаторы отрыманых частак, прачытаць гэтыя часткі, а пасля — прачытаць восьпамятанне, на якое быў створэны запіт. Калі гэтага падходу няма ў логах, спачатку выправіце можлівасць аналізу, перш чым дадаць новую мадэль.