Skip to main content
Glama
requirement-asset-recommender

requirement-asset-recommender

by 14shi

ニーズ → データ資産 インテリジェントマッチングシステム

tests python license

FastAPI · BM25 + ベクターハイブリッド検索 · クロスエンコーダによる精並(再ランキング) · キーリブレーショユン可能な判定器を備えたエージェントがいのクロースド・ルー · MCP

2026-04-11 システムラ自然言語インの記述、ニギタートのスクーンショット、任意のレイアウトのExcelま受け取り、データ資産のカタログから利用可能なベースをマッチングし、フィールド単位の証拠えを伴った推奨案を出力します。

マッチングの過程そエージェントのクロースド・ループであり、一方的一方の呼び出しですくありません。検るラウンドが本わる度に、決定器が候補資産とニーズの関連性を1件ずつ評価します。しきい値に達しない場合は、システムは検索の中間状態から得られた診断の結と論に基づいて自律的に修正するを実行し、再検索します。カタログの中にニーズを支える場合が本に存しい場合が、類似結果で穴埋めせずに、支えられない(対応)ないとして判定理由と根拠を出力します。ユーザーは戻、結果に対して修正意見を提案することができ、システムは過去の判定のコンテキストを保したまま反復を続けます。


エージェントのクローズドループ

セルフレビュー

検索ラウンドごとの後に、判定器は候補資とニーズとの関連性(関連 / 部分関連 / 非関連)を 1件ずつ判断し、集計をはスコア化してしきい値と比較します。しきい値に達しない場合は修正に移ります。

match(检索)→ judge(逐条判相关性)→ 达标?
                                      ├ 是 → 交付
                                      └ 否 → 选纠偏动作 → 重新检索 → 再判

自律修正 — 検索策は変更できる、判定基は基準変更できません

修正は固定のリストから選び、権限の境界はコードで制約され、プロンプトの自律性に頼って訳はありません。

自律的に調整可能

不可た以上

検索のキーワ

ユーザーが明示的に設定したフィル条件(周期 / レイヤー / ドメイン)

検索パラメータ(戻る件り、再ランキングの深さ、各ルートの重)

件受け入れのしきい τ、判決のしきい値

システムにより推論されたフィルー条件の緩

ユーザーがチェック入りする必須フィールド

元の入力を上確認する

—

判決のしきいを放することは、モデルの検収基準を下げて結果を成り立させることを許すの同等であり、それによって「支えられない」という判定が無効になります。よって、調整可な白リスの外とし、テス・トにより制約しています。

事実と根拠

修正する前、コードは検索の中間状態から証拠付の診断結果を計算して判定器に渡します。同じ現象にも異なる原因があり、かつ処置の方向が逆である場合が多いため、診断の役目はその二つを区別することです。

| 現象 | 因 A | 因 B | | 候補プールが過小 | 呼び出し(リコースト)不足 → パラメーターを調整 | フィルター過剰 → 推論条件を緩和 | | 網羅率が全般的に低い | フィールド抽出ミス → 抽出を修正 | カタログに実際に存在しない → 対応不可と判定 |

マルチラウンドの共同

  • 解析後の確認:抽出結果をユーザに確認・増減してもらい、確認後に検索を開始——修正コストが最小になる工程が、上流に配置します。

  • 結果の追に質:ユーザーが修正意見を出すと、エージェントが過去の会話履歴たを持ちたまま修正を続け、コンテキストを切れません。

  • 会話の存続化:会話の状似像をデイスに保存し、サービースの再起動後も session_id が利用できます。

監査可能で中断で

各ステップを報告・記録 action / reason / verdict / effect(実行アクション、決定根拠、判定の原文、変更前後の差分)として、結果と果に付けて返し。最初のアクションが常に完全な全量検索であるため、どの時点で中断しともてます結果が返って、最悪の場合でも純粋の検索と同価です。長時間タスクは協力式のキールセッに対応しています。

忠定器は先行キャリブレーションが必要です

検定器を自動判決チェーンに入り前に、人工金主(ゴールド・スタンダード)との一致率を測定してください(Cohen's κ)。κ > 0.6 の時のみ自自動判定に利用で。モデルの変更、プロンプトの修正、計分ルールの変話がある場合、再校正が必要です。


Related MCP server: toad-mcp-server

優先度は自律的に推薦

関連度と資産の優先度(発注済みかどうか、資産型タイプ、データーウェアハウスのレイヤ)は量紀が異なるため、直接加すみ合は人工での調整が必要で、重みがデータ分布の移動に伴なって失効でいざるをえません。代わりに、自然なブレーク対象のグループ化 + グループ内の辞書順を採り、グループ幅はデータで決ます。

  1. 判定可能な最小の差分(JND)を推定:今回のクエリの候補の関連度降順において、正のギッャップの中央値 ρ をとり、このクエリでは典型的な分差がどれだけかを示します。

  2. 自然な to bu san:現在の最高点から下がっていき、隙 > gap_factor × ρ 有意差大型段のはまでを扩张します。は、若隙の大きさを以たしら断切れに区切れ。スコスが密に集まった(同率位に近い)際には切らない、グループ内の順に従ます。明らかに大きな段が存在す場合、関連度が優勢です。

  3. グループ内の固定ソート:「優先度最悪優ベクタ → 関連度 → カバル率 → テーブル方が少い」の辞書並で選ります。組の合の順位はメンバーの最下位グループを取るので、1つの高いテーブルで下位グループ全員を上に持ち上げることませません。

グループの幅はデータによります。クエリの形態に応じて前提とブーを行ないません——「利用者何の問いか」を if-else に書ておく手法は、人手の重みと同じ類のプロブレムです。

優先度のグループは「発注済みかどうか + 資産タïプ + 文字ウェアウスのレイヤ」を辞書順に組み合わせて構成し、すべてのマッピングは設定に由来します。

# config/config.yaml → matching.ranking.priority
ordered_rank: 6         # 已订购(由订购清单 vlookup 标记,最高档)
asset_type_rank: {...}  # 资产类型 → 档位
layer_only_types: [...] # 仅这些类型内部再按数仓层级细分
layer_rank: {DWA: 5, DIM: 5, DWV: 4, DWI: 3, ODS: 2, STG: 1}
# config/config.yaml → matching.layering
gap_factor: 2.0         # 间隙达 JND 几倍算断层:越大同档越宽,越偏向优先级
min_jnd: 0.02           # JND 绝对下限,仅兜底分数全等 / 单点等退化情形

その他の機能

機能

説明

任意のレイアウト解析

テキス/スクーリーンショット(ヴャジュアルモデルの転写) / Excel(任意のレイアウト)/統一の入り口を持つ。レジョン割り、純コードによる5段階のデューングードを実装し、未見のレイアウトでも確実とに出力

混ぜ合検索

BM25 + ベクタル意味 (dense) + フィールド逆索引の3ルートで再喚 → RRFF融合 → クロース・エンコーダで再順位。セグメントごとのコーデをと top2 プーリングにより、テーブル名の意味が大量のフィールドに薄ましない

組み合わせの案

単一のテーブルでは網できない場合、共同接続キーで括ら数けて複数テーブを組み合わせてます。

三接続

Webペーンル / REST API / MCP(6ツール + 互套期タスク + 協調作キャンセル)

自動步ダウングルード

GPUが存在しない、重みファイルが鎖る場合は、利用可能なリソースに応じして自動的にダウングレード。品責は落ちるが、プロセスは途切れには。ダウングレード項目は /api/health で報告し、監視視に接続できます


スターの素早速

python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

# 可选:安装后启用语义召回 / 精排 / 本地大模型;未安装则自动降级为词法检索 + 规则解析
pip install sentence-transformers
pip install torch --index-url https://download.pytorch.org/whl/cpu

python -m uvicorn src.api.app:app --host 127.0.0.1 --port 8001

Web ページは読み出し。 http://127.0.0.1:8001.

冒呼び出しの例:

# 一步式:解析 → 检索 → 自我审阅 → 交付
curl -X POST http://127.0.0.1:8001/api/agent/run \
  -F "text=分析会员复购行为,需要用户ID、订单数、支付金额"

# 多轮:对上一轮结果提出修正意见,携带历史继续纠偏
curl -X POST http://127.0.0.1:8001/api/agent/resume \
  -F "session_id=<上一轮返回的 session_id>" \
  -F "feedback=当前结果不符合预期,需要履约时效相关的资产"

リポジトリに付属される加サンプル・カタログ(data/samples/、3,Β→ 3, has a table complement Template...`. This), covers cover 10 fields. Data, order, or no effort, CPU environment works.

初回のリクエストは索索引の構築とモデルのロードを—CPU 3,000テーブル needed minutes; The first one. Result: data/.cache/ 落,再リ... Then name by content fingerprint of hit cache and server再起 in no rebuild.


消失了更改自户的 tags

システムは、推奨される object のタイプにハードコーデしを持ち合わせるもの、を想をしていません。有無データを“エント(項目)+属源+性質・待遇”の形に整理ければそのまま使います。テーブル、ドキュメント、商品、API、ナレッジ記事などでも、カタログの構造を変更するだ,無理検索・ランキング・エージェントのフルプレートをそのまま使用できます。

1. 必タ変更の: "目录 data"

CSV 的结构を持 (サンプルファイル: data/samples/assets.sample.csv):

列

み

他のサシンには

表名

一意なデータ識別

ドキュメントID / 製品コード / API 名

表中文名

表示名,検索に参加

ドキュメント見出し / 商品名

字段中文名

**属性リーー*(|`区切)フィールドルの対応根拠と

ドキュメント章家/段/ル的製品属性 / APIア英文参数

业务分类名称

分類、セグメントの意味的のエンコーヴドに参加

自ルの分類系(一级/二级)

模型概述

説明、「意味」の主要な根拠として

要約 / 紹介分

技術口径

補足説明

利用条件 / 更新頻率

周期 ↔ 期/层级/数据域`

3つのハードフルタの次元

任意の列挙で、フィルの二次元;フィルが不要のときは列空に

是否上架 / 資産类型

業務優先度とルタ

対対応がなれ, interested

"同期空"

如果不对, fill fixed

系统名称 / 库名 / 是否UCX表名

所属と表示

未_concept don't fix

# config/config.yaml
data:
  assets_file: data/自有目录.csv      # 默认按 gb18030 读取

デフォールトの読み込みは gb13030 エンコーディング。ルドの file as UTF-8 かどうかを確 ...

デフォルトの読み込みは gb18030 エンコーデングです。カタルグ・ファイルが UTF-8 の場合、条文いéパンコーデを前にするかは、src/data_loader.py の読み込みエンコーデを変えてもので、ここが唯一のエンコーデングと結合する所です。

**列挙値はランキング・ロジックと一させてください。**この工程はフィールド19特定的答案: "列挙(枚举)値はランキングのロジックに合わせる必要があります。。资产类型 フィールド, etc. It must be:

列挙値 must be aligned with the matching logic: "列挙値はソートの順と対してきっています。"

  • 资产タイプ / 层级 / 周期 three join priority group and hard filter, その値が対応する mappingの表にあるなければ、needsであればラオ's fall sweеп in the highest, and でし可能 is け" wait:

Let me precise: "は whatever list の対応するマッピング表に存在しない場合、その行は最下位のグループにはまり、永遠に対象にされまへん。"

Table:

| 列 | が須の value | 対応すしない場合 | | 资产类型 | matching.listing.priority.asset_type_rank のキー | グループ順が 0 となり、すべての既知のタイプより後になります | | 层级 | matching.ranking.priority.layer_rank のキー | レイヤー階層の分层区分が働かない(layer_only_types で挙がったタイプだけ) | | 周期 ... | src/matching/normalize.py の CYCLE_ALIAS | 周期によるハドフィルターで選択されない |

After replacement:

"置き換えた後、自前列挙を、そのマッピングを ingに追する" — In Japanese: "カタログを置き換えた後、特有の値で次ぎの上位のマッピング入り込り or、データを既存の列挙に正規化す等、いずれかを行する。"

"数据域 は単一の粒 (scale) in one的 in ミ不同 combined in the hierarchy...

"を保持て..." etc.

"ordered_rank(已購買)は data.ordered_file の列挙リストに依存します。例の設定では該当ファイルは提供されてないので、このキーワは発動しませんが、自分用のリストを接続すれぶ自 動します。"

2. 提案の差し替え: 4つのドメイン(直接用の検索品質にて)

Table:

ファイル

役

サンプルのまました時の

data/samples/synonyms.s ample.json

同義語グループ、ニーズの語とカタログの呼びの違い

まだ頻れのない

data/topic_aliases.json

口語み形や別名 → 体系的なトピック語("物流と" 物流 → "配送轨道)

口語の検索のヒッ率留

data/category_keywords.csv

業務分類 → キーワードヒント、は分類を推Iしました

分類推の精度が低下

data/domain_urms.txt

ドメインの専門用語、分か割の丸と折り_, 防止(析)

多字の名前分解が

「同一義語のマップ表 Verlination」: "同義語表は data.synonys_file で路の変更はでします。後ろ2つのパスは pipeline.py と normalize.py でハーtoコーデされ、元のパスを上替えして置くだけを。先の再は 4 ファイルは、起の規模(同義語 8組、分類 64 条、専門67 条)であるので、自有のドメインはに応じて拡充してください。"

その中、同義マップの収益が高いです。形式は {"规范词": ["别名1", "别名2"]}。カタログのフィールド名に現でた同概念の別書法を1グルプにま取りまとめれば、頻度高い概念10グールプにおれさえ先行マッピングで効果します。

3. オプション:抽出プロンプトの exampleを差し替え

src/maching/extractor.py と src/maching/llm_parsser.py の fampi... のプ ーincludes ドメインの例が利用の"様に、何が 니ズで何が在フィールド"と定し。分り画します。ドメインの違いが大きたす、本ドメインのみvernの例を 2..3 に差し替えれば解の質が大きく向上します。

4. 替れの後、キャリブーショは必ず再実施

  • 意界のしきい値:field_match.retrieve_min_sim と min_ce はモデルの調整項であり、値は埋め込み vector とドメイン語彙の分布に応じて変わります。ドメイン内から「真の同義」と「無関係のフィルド」を十数ペアとそれぞれ取り、両グループの境界のスコアで値走代ます。

  • 判定器κ:関連判定はドメインに依つ、他ドメインの舊結の論は無効です。このドメインのアノをトーショ ン・水準で、再測 Cohen's κ(κ > 0.6 条件)します。

  • 検証集:このス・トには状況 do not hold. 金制標準がないため、指標は domain size の own に / but has build in, different domains of *数字 cannot compare.


3つはung接続

  • Web:/ 1ページ。ニーズを記よい → ドラフト確認 → 案を生成 → Excel 出される。複数検索 resultこの補正、タスク取消に対応。

  • REST:/api/agnet/run(1回引き出し)、/api/agn/resume(追加問)、/api/match(検索のみ)、/api/parse` + 確認(2ステップ)を提供。ファイルが含まれる request は自動的に async タスクとなり、取消が可能です。

  • MCP:/ api/mcp/で6つのツール(parse_requirement/revise_draft/match_asset/refine_results/submit_feedback/ist_sset_acts`)+ 非同期 task + 独力作キャンセルを提供し、会話プラットフォームがツールを自動的に発見できます。

呼び出コントランの全相は ocs/API接口文档.md を参照。


ドキュメント

ドキュメント

内容

docs/架构讲解.md

リクエストベースの時間順序で全リンクチェーンを説明

イン

Rスト、MCP、非同期タスク、認証を含む呼出

契約の全体像を定義

docs/MODELS.md

モデルのウェアハウスとキャッシュについて

CONTRIBUTING.md

エンジニアリングの同意,変更を仕様


工学的原則

  • セマンティックの判断はモデルに、機械的な断分は法にはコードにまかせます。要件文書的版面 (layout) にハードコードの仮説はありません

    • 静的ダウングレードを行いません:切隆・破棄・逐能的にルード等服务に /api/health もしくは診断チャネル経由で必ず上送します

  • 判定器を自動判決チェーンに入れる前にキャリブレーション必要;能力の拡張は設定にのみ実山し、コードは変わりません

  • それぞれの修正した不具合には入退の with ,記録 the fail mechanism.


補足事項

このリポジトリは再利用しやすい方法論、に身方の骨繁組みを提供します。ここのリポジトリに収録されたモノ・カタログは構造例として (3,000 テーブル、構造実在のらら生サー図のカタログと合わせし),統計し分布が align); 語彙跟

Related MCP Connectors

Related MCP Servers