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

Больш чым адзін шлях пошуку: канонічныя веды, RAG і жывыя запыты для карпаратыўных агентаў

Чаму адзін канвеер пошуку не абслужыць усе віды карпаратыўных ведаў і як маршрутызатар можа раздзяліць канонічныя паняцці, пошук праз RAG і бяспечныя жывыя запыты.

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

Крыніцы: **I Don’t Think OKF Replaces RAG. I Think We’re Asking RAG to Do Too Much.**

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

У компаніі „знання“ включае дужа розныя рэчы. Рахуецца заявка на падтрымку. Таксама рахуецца 60-сторонній документ з дызайну, схема базы дадзеных, вызначэнне паметры чы інструкцыя па рашыранні інцыдэта. Таксама рахуецца і ныякі колькісны показнік затрымленых доставак. Гэтыя рэчы праявляюць ся по-рознаму, таму дзівна, што штучны інтэлектавы агент мусі доўгаць да ўсіх іх адной і той жа способам.

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

Звычная проблема падпрыемства

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

Але потым хтось запытаеся пра ступень своевчаснай доставкі, і сістэма паказвае тры разныя вызначэннія:

  • Команда з апрацоўкі дадзеных пісае колькасць вантажоў, якія прыбываюць у запаведзаны тэрмін.
  • Панель керування продуктам выкарыстоўвае дыякрэтнае вырачэнне.
  • Дакументы, назначаныя кліентам, не урахоўваюць анульваныя замовленні і вярненні.

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

Адносна значыць не ўзнака автантывнасці

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

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

Калі структура ёсць значэннем

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

Калі разбіць гэтую табліцу на часткі по 256 токенав, адна з частак можа мячыць толькі пару заголовкаў, напрыклад «рэгіон» і «дохады», тады як іншая — «Схід 2,1 мільйона» і «Захад 1,8 мільйона». Мадэль можа правільна восстановіць этыя адносы, а можа і не змагчыцца.

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

  1. пачніце з структуры
  2. ператворыце яе на тэкст
  3. разбіце тэкст на часткі
  4. вбудавыце часткі
  5. адзыскайце калькольку з іх
  6. запытайце мадэль восстановіць первінную структуру

У певны момент з’яўляецца пытанне, чы вообшча трэба было фрагментаваць даны. То ж самае стосуецца схем баз дадзеных, шляхоў з’ўязку, правіл канфігурацыі, формул для вычыслення показнікаў, умов службовага абслужвання і процедураў эксплуатацыі. У RAG структураваны контэнт не забаранены. Справа ў тым, што структура патрабуе спецыяльнага адносу, калі яе втрата зміняе значэнне.

База дадзеных у вектарнай форме ніколі не была аднакова достоверным джэрэлам

У вымышленай компаніі была ўсё тая ж знайомая проблема: знанні былі рассеяны. Схемы былі опісаны ў прымэтках да баз дадзеных, у вікі-рэсурсах GitHub, у Confluence і файлах для міграцыі. Вызначэнні показнікаў знаходзіліся ў панелях аналізу, тэхнічных характэрыстыках продукту, документах команды з апрацоўкі дадзеных і старых прэзентаціях. Інструкціі з эксплуатацыі былі розпылены ў Notion, тыкетах з інцыдэтамі, Slack і GitHub. Частка логікі з’ўязку знаходзілася пераважна ў галаве таго, хто давэўшы працаваў над праектам.

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

Што дадае OKF

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

type: metric
name: on_time_delivery_rate
owner: data-platform
reviewer: product
trust_tier: verified
stale_after: 1 day
related:
- shipments
- sla_definition

і продовжываецца адказам, напісаным для людзей:

# On-Time Delivery Rate
Percentage of shipments delivered on or before the current
promised delivery date.
## Excludes
- cancelled shipments
- test orders
- returns

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

OKF не заменяе RAG

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

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

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

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

Дзеякія ведамы не трэба выкарыстоўваць

Хтоць тут архітэктура становіцца ўсё цікавей. Падазроўцам, корыстувач прасіць паказаць пяць верхніх кліентаў за выручкай за гэты квартал. Адны з варыянтавых рашэнняў — запрашваць дакументы і даныя ў індэкс і дазваляць модэлю іх сортаваць. Гэта можліва, але існуе лепшы падход: агент шукае канонічны значэнне пярэдзі «выручка», стварае запіт і запускае яго ў сістэме зберагача даных. Напрыклад:

SELECT
customer_name,
SUM(revenue) AS total_revenue
FROM sales_data
WHERE quarter = 'Q3_2026'
GROUP BY customer_name
ORDER BY total_revenue DESC
LIMIT 5;

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

Адны агент, тры шляхі знанняў

З урахоўваннем гэтага разліку калькі прыкладных запытаў праходзяць по-разнаму:

  • Што значыць своевчасная доставка? Абмовіцеся з канонічным адзначэннем метрыкі.
  • Калькі ў сёгоднішні дзень стаўка своевчасной доставкі? Аднойдзіце логіку вычыслення з канонічнага адзначэння, а пасля запытае жывы склад.
  • Чаму стаўка знізілася ў пярэднім квартале? Спаўніце канонічнае адзначэнне з історычнымі дадзеннямі складу, а можа і з RAG на аднойках пра інцыдэты і нотатках перавазчыка.
  • Што адбылося з Кліентам X у першым квартале? Адкруціце пошук сярод паказаных раней заявок, запісаў і атласаў.
  • Устаўлены прызнакі базы дадзенаў, тады што робіць? Іспользуйце стандартны практычны атлас.
  • Агент застаецца тым самым, а маршруты разныя. Гэта ўжо болей практычная тэма для дыскусій, чым пытанне пра замену вектарных баз дадзенаў.

    Маршрутазначальнік пераходзіць у цэнтр

    Калі існуе калькі маршрутаў, хтось абавязкова павінен выбраць адны з іх. Першы маршрутазначальнік можа быць намерна простым.

    class HybridKnowledgeRouter:
        def __init__(self, okf, rag):
            self.okf = okf
            self.rag = rag
    
        def classify(self, query: str) -> str:
            q = query.lower()
    
            if any(word in q for word in [
                "schema", "column", "definition",
                "metric", "sla", "runbook"
            ]):
                return "canonical"
    
            if any(word in q for word in [
                "history", "report", "example",
                "case study", "what happened"
            ]):
                return "exploratory"
    
            if any(word in q for word in [
                "today", "current", "now",
                "latest value", "how many"
            ]):
                return "live"
    
            return "hybrid"
    

    Яго метод кантэкста выглядае так:

    def get_context(self, query: str):
        query_type = self.classify(query)
    
        if query_type == "canonical":
            return self.okf.lookup(query)
    
        if query_type == "exploratory":
            return self.rag.search(query)
    
        if query_type == "live":
            concept = self.okf.lookup_relevant_schema(query)
            return {
                "concept": concept,
                "requires_live_query": True
            }
    
        return {
            "okf": self.okf.search(query),
            "rag": self.rag.search(query)
        }
    

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

    Чаму не проста BM25 або лепшыя метаданы?

    Перш чым дадаць яшчэ адны механізм, ідэя павінна перажыць належную перапытку.

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

    Шэрэй метадаў RAG. Гэта таксама разумна. Можна прыўязаць такія полья, пры чым дапышваецца агрэсыўнае філтраўванне:

    document_type
    owner
    version
    effective_date
    trust_tier
    source
    

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

    Жывыя запыткі ствараюць проблему безпекі

    У той момент, калі LLM-у разрэшаецца ствараць запыткі да оператыўных сістэм, рызыкы рошчоўна зрастаюць. Ніхто не хоча гэтага:

    DROP TABLE shipments;
    

    Нават гэта не:

    SELECT * FROM shipments;
    

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

    data_source: analytics.shipments
    allowed_columns:
      - shipment_id
      - customer_id
      - carrier_id
      - status
      - promised_delivery_date
      - actual_delivery_date
    
    required_filters:
      - tenant_id
    
    max_result_rows: 1000
    access_mode: read_only
    

    Потым сгенераваны запіт перакантролюецца па адпаведнай політыцы:

    def validate_query(query, policy):
        checks = [
            uses_allowed_table(query, policy),
            selects_allowed_columns(query, policy),
            contains_required_filters(query, policy),
            respects_row_limit(query, policy),
            is_read_only(query),
        ]
    
        if not all(checks):
            raise UnsafeQueryError()
    
        return True
    

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

    Канонічныя знанні патрабуюць власніка

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

    owner: data-platform@company.io
    reviewer: product-analytics@company.io
    stale_after: 7 days
    

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

    for table in database.tables():
      generated = generate_okf_schema(table)
      save(generated)
    

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

    Версіяванне мае больш значэння, чым здаецца

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

    versions:
      - version: "2.0"
        active: true
        effective_from: 2026-06-10
        change: "Denominator changed to delivered shipments"
    
      - version: "1.0"
        active: false
        effective_from: 2025-01-01
        effective_to: 2026-06-09
    

    Два запітання цяпер адаптуюцца да разныя адказы. Запітанне пра адзначэнне OTD выкарыстоўвае чынную версію, тады калі запітанне пра тое, чаму у звятыні за першы квартал 2026 года гэта было вырахавана інакш, выкарыстоўваецца версія, якая дзейнуць у тым часе. «Канонічны» не значыць «незменны». Гэта значыць «контролюемы».

    Калі RAG і канонічныя знанні не сходзяцца

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

    if contradiction(okf_context, rag_context):
      log_conflict(…)
      prefer(okf_context)
    

    Ён нават можа сказаць корыстніку: стары дакумент суперасункоўваецца з чынным вакуумам метрыкі, і была выкарыстоўвана чынная, перакананая вярнасцю вакуумам. Тады агент выконвае больш, чым проста адпавядае; ён выяўляе „дзявочы кант“ у знаннях, што можа быць аднам з найценнейшых парадуктаваў такога дзялёвага падходу.

    Зважанне больш, чым толькі фінальнай адпаведзі

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

    % queries routed to correct source
    % canonical lookups with stale concepts
    % live queries rejected by policy
    % RAG/OKF conflicts detected
    % concepts past stale_after
    % concepts with no active owne
    

    Неправільны ўснавальныя адпаведзіць можа выйсці з вельмі разных прычын. Мадэль могла паслужыць некорэктна. Рутэр мога выбраць RAG там, дзе была патрэбна канонічная інфармацыя. Канонічныя паняванні моглі быць застарэлымі. Запыт мога быць правым, але ваказанне метрыкі — некорэктным. Гэта разны інжынерныя проблемы, і можлівасць абзірнае аналізу павінна дапамагчы разлучыць іх.

    Калі гэта ўжо перэінжынераванне

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

    Гэты падход становіцца прыемным, калі выпало калькі з гэтых умов:

    • Калькольныя каманды кожна парадыграфуе тыя ж самыя паняці
    • Агенты выкананяюць аперацыйныя дзеянні
    • Схемы і паметры часта мянююцца
    • Некарэктныя ведамасці коштаюць бізнесу рэальных губернаванняў
    • Парадыграфы выклікаюць наявнасць адпаведных адпаведальных і апісацыю ўсіх змян
    • Жывыя даны павінны быць супараднаваны з канонічнымі сэмантыкамі

    Чым больш пунктавае, тым больш эфектыва ўсё гэта.

    Дзе падходзіць MCP

    Калі агенты выкарыстоўваюць калькольныя і данневыя крыніцы, MCP стае натуральным пунктом інтэграцыі. Агент можа бачыць такія можлівасці, як:

    get_canonical_metric_definition
    get_schema
    search_historical_documents
    query_warehouse
    get_runbook
    

    Раутэр выбірае адпрацоўны варыянт. OKF опісвае канцэпцыі і абмежэнні, MCP адкрывае інструменты і рэсурсы, жывыя сістэмы застаюцца власнікамі чынных дадзэнняў, а RAG застаеяцца шаром для аднаходжэння неструктураванай історыі. Што стосуецца гэтых абавязакаў, іх лепш залішыць окрэмымі, калі толькі няма сільных прычын для ўзаеднання.

    Разумны першы варыянт

    Пачаць з 300 канцэпцый было бы памылкай. Крашчэ — дзесяць, а саме дзесяць канцэпцый, пра якія людзі ужо сперачынаюць спарчы. Напрыклад:

    3 metrics
    2 schemas
    2 SLAs
    2 runbooks
    1 business rule
    

    Потым трэба вымерыць калькі параметраў. Чы можа агент знайсці канонічную канцэпцію? Чы ён ведае, калі гэтая канцэпцыя стала застарэлай? Чы маршрутызацыя выбірае правільны шлях? Чы можна без апасцярынь выкананы жывыя запіты? Чы людзі насправдзе падтрымліваюць гэтыя канцэпцыі? Хорашыя рэзультаты параджуе пашырэнне масштаба, а паслабыя — завершэнне эксперымента. Эксперымент з архітэктурай павінен магчымае паразіць без вялікіх збыткаў.

    Большая наука

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

    • Афіцыйная дэфініцыя: канонічныя знанні.
    • Адпаведная інфармацыя: выкарыстоўванне для пошуку.
    • Тэчасная істыня: жывы запіт.
    • Што павінен зрабіць агент: аб’еднанне всіх вышэйзгаданых элементаў па правілах.

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