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

Чаго схема не скажа агенту: Open Knowledge Format у BigQuery

Эксперымент з BigQuery і Gemini ADK: пакеты Open Knowledge Format у Git далі агенту тое, чаго не магла даць схема, стабілізавалі адказы і выправілі памылку GMV на 29%.

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

Крыніцы: **What Your Schema Cannot Tell Your Agent, Open Knowledge Format Can**

Файл з інструкціямі, які ніхто не прыяўляе

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

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

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

Фармат адкрытых знанняў (OKF) нацэлёваны самэ на гэтыя прасоцы. Бізнес-правіла больш не знаходзяцца ў строчках запытанняў або незрозумелых вектарных базах дадзеных, а стаюць звычнымі файламі Markdown з YAML-метаданнымі, якія зберагаюцца ў Git. Автарства стаюць явнымі, змены праходзяць праз pull requests, а тэрміны заканчэння дэйстывання ёсць відныя як для аналітыкаў, так і для інжынераў.

Скептыкі ствараюць прычыны, чырвоныя, што аднавіцейшыя мадэлі і большыя вікна кантэксту робяць гэта беспрагматычным, адколі агенту можна даць самыя первыя схемы і дакументы, і паставіць яго самога на выконанне задачы з выведэнняя вялічыні значэнняў. Кампактны эксперымент пераканаўся, якія наследкі мае прызначэння цэны непূরнага знання і якія змяні відбуваюцца пад час выкарыстоўвання методу OKF grounding. У ям было выкарыстоўвана два табелі BigQuery, адна бізнес-запытка і агент, створаны за дапамогою пакета Google Agent Development Kit (ADK), у разных настройках знанняў.

Сцэнарый тэста

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

Сколькі GMV прынеслі платэжы QRIS, якія былі успешна завершаны, у рэгіоне Jabodetabek у ліпені 2026 года?

Тры ўжотыя тэрміны патрабуюць адагу. GMV — гэта аб’ём выручкі з рэалізацыі тавароў, тое ўсьго, што было продана за певны перыяд. QRIS — нацыянальны стандарт платэжаў праз QR-коды ў Індонезіі. Jabodetabek — гэта назва метрапалітэнскага рэгіону Джакарты: Джакарта, Багор, Дэпок, Тангеранг і Бекасі.

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

  • Статус, які падтверджае, што грошы прыбылі. Платэжы маюць як status_code, так і transaction_status. Прываблівы код status_code = 200 проста паведамляе, што вызов платэжнага шлюза быў успешны, уключаючы скасаванні. Грошы прайшлі на рахунак продавца толькі тады, калі transaction_status = 'settlement'. Значэнні, якія вікорыстоўваюцца, копіююць публічны API рэальнага платэжнага шлюза.
  • Заказы, які маюць значэнне. Адзначаны платэж, прыўязаны да вярнутага заказа, ў сутнасці ўсё равна ўскладнюе сітуацыю, адколькі сістэма продавяле залішае статус settlement пакуль не будзе завершана процедура вярнення грошаў. Таму фільтр патрэбуе умовы orders.order_status = 'completed', прычаму схема ніяк не паводзіцца да гэтага.
  • Часовая метка, якая вялічыць перыад. Процедура адзначання платэжа запазджае за заказамі на гадзіны або нават на дні. Якшо разлічыць ліпень па значэнні orders.order_ts, то будзе атрымана адна сума, а якшо па payments.settlement_ts — іншая, таму заказ з 31 ліпня можа парадзіцца ў лістападзе.
  • Горады, якія складаюць рэгіон. Колонкі region не існуе. Назву Jabodetabek неабходна запісваць як трохце дзесяць трохце точных значэнняў destination_city, а Kota і Kab. пазначаюць два разныя месцы, а не разныя варыянты напісання.

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

Кантэкст проты веды

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

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

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

Што такое OKF

Праект Google — гэта OKF, і ён спецыяльна просты. Пакет — гэта проста папка з файламі у фармаце Markdown з YAML-фронтматэром, якія дзеляцца праз Git, без удзеле базы дадзеных, сховішча вектараў чы SDK. Адзін файл опісвае адну концэпцію, type — гэта ўзельдзевы ключ фронтматэра, а звычайныя гіпертэкстовыя звязкі у фармаце Markdown спаўнаюць файлы, чыяму пакет стае графам у замест на проста купку файлаў.

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

  • tables/ і datasets/ адзначаюць, што ўключаюць даны: што паводзіцца на радок, як з’яўляюцца столбцы, якія значэнні enum існуюць. Што стосуецца гэтай часткі, яе можна вывесты з хранілні, як пакажае наступны крок.
  • metrics/ пояснюе, што значыць тое чы інша цыфра. Сюды патрапляе GMV і чатыры яго умовы.
  • references/ містыць доменныя знанні, якія не маюць ніякіх столбцоў, такія як трохце мяста Jabodetabek, таксаномія продуктав або спіс внутрашніх тэстовых акаунтаў.
  • policies/ храніць дакумент, які ўтварае адпаведна правду, на які вказвае вызначэнне, напрыклад, правілу відзначэння дохода, якое фінансавыя віддзелы падаюць занова ў кожны студзень.
  • computations/ і attesters/ зберагаюць затверджаны SQL для певнага показніка, а таксама код, які пераканальваецца, чы рэзультат дзейсна выйшаў з яго.
  • skills/ фіксуе процедуры: калі ўжываць тое чы іншае, якія ўмовы ўжыцця і якія крокі трэба выконаць.
  • Справядлівы крытэрый для таго, чы ўсё гэта належыць да пакета: чы можна было б гэта поясніць новаму аналітыку ў першы тыдзень яго працы? Калі так, то гэта палягае ў файле.

    Версія v0.2 спецыфікацыі дагаўляе тры поля frontmatter, якія безпасэродна рашаюць проблему пачатку. Поле sources пераказвае, з чаго была запоўнена даная концэпцыя. Поле verified сабральвае падтверджэнняя сведчэння у фармаце {by, at}; концэпцыя, у якой такіх падтверджэнняя няма, пазначаецца як unverified. Поле stale_after вказвае абсалютную момент часу, пасля якога концэпцыя вважаецца застарэлай. Што дае ўсе разам: власніка, процедуру перагляду і тэрмін дзейнасці, прычым усё гэта знаходзіцца ў файле, які аналітык можа рэдагаваць, а пераглядач – чытаць у відпаведным запітаў на перагляд.

    Чы можа команда проста стварыць свой сабе структуру папак? Чы можа, але спяшчаная тэрміналогія дазваляе робіць тое, чаго не можа прыватная структура. Агент для рэферэнса, які будзе опісаны далей, можа стварыць палову частку пакета, таму што ён вялікі ўжо розумее, што такое концэпцыя BigQuery Table. Рэвізоры знаюць, к чаму прызводзіць падпісванне комітов, пазначаных як verified. Фармат таксама ёсць нейтральны ўжа працэдурах, не прыкрэплены да якога-небудзь агента, фрэймворку чы прадаўцы модэляў, таму знанні, напісаныя сёньдзе, застаюцца актуальнымі пасля змены тэхналогічнага стэку.

    Багато чытачоў будуць думаць, што гэта ўмеласць агента з дадатковымі крокамі, і такая перасяганне ёсць настолькі рэальным, што яго трэба рашыць. OKF включае type: Skill як простае парадыгатнае значэння. У прыкладнай пакетазе Google файл skills/run-on-bq.md структуруўаны як «Калі вжываць», «Умовы» і «Крокі», што адпоўна падобнае да звычайных умеласцэў агента. Умеласці ў OKF ёсць падскупам, а не сынонімам. Умеласць інструктуе агента, як дзеяць, тады як OKF пояснюе, што значаюць тыя чыны, хто ўпэўніўся ў іх пасляледні раз і калі адпаведзь стае недзейна. Яе вжыць складаецца з трохоў крокаў: стварыць тое, што ве зберага, запісаць тое, што ведаюць толькі людзі, і дазволіць агенту прачытаць аба варыянты.

    Першы крок: стварыць тое, што ве зберага

    Калі табела BigQuery ужо задокументавана, няма прычыны пісаць усё вручную. У рэпазітарыі OKF ёсць агент для стварэння контэнту, і адна команда ператварае набор дадзеных BigQuery у пакет.

    uv tool install git+https://github.com/GoogleCloudPlatform/open-knowledge-format
    
    reference-agent enrich \
      --source bq \
      --dataset "$PROJECT_ID.marketplace" \
      --out bundles/generated \
      --no-web
    

    Ён выдаеў дакумент datasets/, дакумент tables/ для кожнай табліцы, а таксама апцэнтаваныя файлы index.md у всім. Адключэнне параметра --no-web прыменшвае неабяжны крок з адналічэнням існуючай дакументацыі, што дазволяе павтараць першы запуск.

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

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

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

    Сярод гэтага і выклікаецца практычна польза знака verified. Кожны створаны документ фіксуе generated: {by: reference_agent/...}, але не мае знака verified, таму сам фармат пазначае яго як непераглянуты. Куплет дакументаў фіксуе ўсе даны пра ўсходжанне дакументаў, а разлік машыннага выходу ад людскіх рашэнняў не выклікае ніякіх проблем.

    Другі акт: запісаць тое, што ведаюць толькі людзі

    Два рукапісных файлаў у тым жа куплеце і тым жа фармаце дастатковы, каб зафіксаваць чатыры схованыя рашэнні. metrics/gmv.md ўсё бол важлівы з іх, а яго фронтмат паказвае, дзе поля доверы знаходзяць свае месца.

    ---
    type: Metric
    title: Gross Merchandise Value (GMV)
    description: Total settled transaction value for a period in IDR, excluding cancellations, reversals and returns.
    tags: [metrics, finance, headline-metric]
    generated: { by: human:analytics-lead@marketplace.example, at: 2026-09-01T09:00:00+07:00 }
    verified:
      - { by: human:analytics-lead@marketplace.example, at: 2026-09-01T11:00:00+07:00 }
    stale_after: 2027-01-31T00:00:00+07:00
    ---
    

    У тэксце чытрачы ўсе чатыры умовы і чытра чытама, што схема не задае жадных з іх. Затварэнне адначасова значыць transaction_status = 'settlement', а не status_code = 200. Заказы павінны маты статус order_status = 'completed' без можлівасці ўсунуць зворотныя дзеянні. Для данага перыоду крэткай межай выступае settlement_ts; перыод адзначаецца як напалоўсь адкрытый дыяпазон з явным зсувам +07: ад 2026-07-01 00:00:00+07, уключаючы гэты час, да 2026-08-01 00:00:00+07, не уключаючы гэты час. Выкарыстоўванне оператора BETWEEN з звычнымі строкамі дат прыводзіць да таго, што апошні дзень не берэцца ў расчыт, а кожны момент часу спрацоўваець як UTC, таму кожная межа сустрэчаецца на сем гадзін адносна.

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

    У другім файле, references/jabodetabek.md, перыяктуецца трохце точных значэнняя destination_city і паветранае ад LIKE '%Jakarta%', якое могла б таямна працягнуць адсутнасць восьмі з іх.

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

    Трэці акт: агент, які чытае іх

    Для адзёрвання даўных агент выкарыстоўвае кераваны сервер BigQuery MCP ад Google Cloud за адрэсай https://bigquery.googleapis.com/mcp; ён запускаецца як толькі API BigQuery ўвядзена для праекта. Не трэба нічога размешчаць.

    Едыны спецыяльны код у праекце — гэта інструмент, які чытае файл.

    def read_okf_concept(path: str) -> dict:
        """Read one OKF concept document from the local bundle.
    
        Args:
            path: Path relative to the bundle root, for example "metrics/gmv.md".
                Call this with "index.md" first to find which concepts exist.
    
        Returns:
            'status', and on success 'content' with the raw markdown and frontmatter.
        """
        doc = (OKF_BUNDLE / path.lstrip("/")).resolve()
        # `path` is model-controlled. Block anything that escapes the bundle.
        if not doc.is_relative_to(OKF_BUNDLE) or not doc.is_file():
            return {"status": "error", "error": f"no concept at {path}"}
        return {"status": "success", "content": doc.read_text(encoding="utf-8")}
    

    А потым сам агент выклікаецца.

    bigquery_mcp = McpToolset(
        connection_params=StreamableHTTPConnectionParams(
            url="https://bigquery.googleapis.com/mcp",
            headers={
                "Content-Type": "application/json",
                "Accept": "application/json, text/event-stream",
            },
            sse_read_timeout=300.0,
        ),
        header_provider=_bigquery_auth_header,
        tool_filter=[
            "list_dataset_ids",
            "list_table_ids",
            "get_dataset_info",
            "get_table_info",
            "execute_sql_readonly",
        ],
    )
    
    root_agent = Agent(
        name="marketplace_analytics_agent",
        model="gemini-3.7-flash",
        instruction=(
            "Before writing any SQL: call read_okf_concept('index.md'), then read every "
            "concept the question touches: the metric, the payment status, the geography.\n"
            "Use only the filters, joins and period cuts those concepts define. "
            "Never invent a status value or a metric formula.\n"
            f"Run queries with execute_sql_readonly, passing projectId='{PROJECT_ID}'.\n"
            "Show the SQL you ran, and name the concepts you relied on."
        ),
        tools=[read_okf_concept, bigquery_mcp],
    )
    

    Пасля чаго эксперымент запускаў гэтыя дыялогі.

    Што на самай працоўцы адбылася

    Агент, запыт і пачатковыя даны застаўаліся аднаковымі ў всіх конфігураціях. Змініўся толькі каталог, на які вказываў OKF_BUNDLE, і кожная конфігурацыя запускалася чатыры разы.

    Без шару знанняў, калі інструмент чытання вказываў на порожню папку і едынай апорам была толькі інтроспекцыя схемы сервера MCP, чатыры запускі таго ж запыту далі тры разныя цыфры: IDR 371,251,000, 333,020,000 і 371,886,000. Найвышэйшая з іх перакрыла правду на 29%.

    За дапамогою створанага пакета, пасля аднаго запуску reference-agent enrich, цыфры перэсталі мяніцца. Кожны раз выходзіў IDR 329,590,000 — стабільны і павторны, але на 15% занадта высокі.

    Даўжынкаванне двух рукапісных канцэпцый даўала ў кожны раз IDR 286,740,000. Гэта правільна, і ў адпаведзі называюцься канцэпцыі, на якія было робленае апыланне.

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

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

    Што гэты падход не рашае

    Адаптаванне залежыць ад інструкцыйяў, таму модэль можа яго ігнараваць, і нічога не заважае запісваць SQL-запыты раней, чым будзе прачытана якая-небудзь канцэпцыя. Тыя, хто хочаць аб абавеснай гаранцыі, можа дадаць ADK before_tool_callback, які адхіляе запыт, калі за той раунд не была прачытана жадная канцэпцыя.

    Markdown таксама не абавярае верыфікацыю схемы. Аналітык можа задаць некорэктную канцэпцыю, а OKF спецыяльна застаецца прагаматычным, вымагаючы ад корыстнікаў тольераваць невядомыя тыпы і зламаныя лінкі. Рэальная захоўка вырабляецца за дапамогою перагляду коду ў pull request, а таксама за дапамогою атрыбутаў verified і stale_after, якія адкрываюць непераглянутыя або прыніклыя вызначэннія для агента пад час ўскарыстання іх. У спецыфікацыі рангі доверы пазначаюцца як сігналы-рады, таму ўжыцце іх залежыць ад таго, хто стварае агента. Агент тут іх чытае, і іншыя таксама должны яны чытаць.

    Этыя показнікі таксама не ўтвараюць стандарту: адна запітанне, адна мадэль і чатыры запускі за наладкай на дадзеннях, створаных для стварэння «пастак». Яны паказваюць механізм, але нічога не кажуць пра сярэжны эфект OKF на точнасць.

    Урок, які застаецца актуальным

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

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

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

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

    Супаўзвязаныя матэрыялы

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