Галоўная / Артыкулы

Палітра RAG для падчыннай політыкі кадроў з LangChain і LangGraph

Памяць працавальнікам, створаная на аднаковых прынцыпах як сістэма RAG для працы, з вікорыстаннем LangChain і LangGraph: прыема дадзей, MMR, перапісвы з урахоўваннем історыі, правіла безпекі, цітаты і ацэнкі.

Выдавец: REACTAPP.TOP7 хв чытання1510 слоў

Крыніцы: 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 можа выдумаць адказ. У свою чаргу, асістэнт з пытанняў пра кадры павінен:

  1. Зрозумець запыт
  2. Пашукаць дакументы організацыі, прынятныя для кадровай справы
  3. Адзыскаць найболей рэлевантныя часткі
  4. Перадаць гэтыя часткі мадэлі
  5. Стварыць адказ, базаваны на іх
  • Наводзіце джэрэла, каб працаваючый могаў іх пераканаць.
  • Алгорытм работы: дакументы кадровага аддзелу → ўваходжэнне → разбіўка на часткі + метаданы → вектарныя прэдставленні → 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 ёсць автантонічнымы, хто можа запытаць пра якія правілы і як у інтэрфейсе відображацца «не вядомы» элементы. Гэтыя рашэння павінны быць у дакументах да праекту разам з дыяграмамі графа.

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