自然言語の検索がどう解決されるか
自然言語の 検索条件が Company Search にどう当たり、なぜヒットしたかを説明します。
このページの内容14項目
Signal Foundry の自然言語検索は、単純な全文検索ではありません。 会社群の依頼も 1 社特定も、まず sf search で処理します。使い分けるのは、その後に Company Card を読むか、agent 側でローカル表にするかです。
まず結論
- 会社を解決したいときは
sf search <query> - テーマに反応している会社群を探したいときも、まず
sf search "<theme or criteria>" - 売上、利益、BS/CF、利益率、財務ランキングは
company_query.v1にしてsf query - 横断確認では候補と根拠を確認し、必要な会社だけ Company Card を読む
- 長い自然文をそのまま入れるより、短い 検索条件 と明示的な 絞り込み に分けた方が安定します
まず何が起きるか
自然文の依頼を受けたとき、内部では次の 4 段階で処理されます。
- 依頼が
会社検索か1社調査か有報差分かを決める - 選ばれた 機能ごとに 検索条件を正規化する
- candidate を作り、relevance を計算する
- なぜヒットしたかを
query_matchやobservation.summary / evidenceで返す
つまり、自然文 -> そのまま 1 本の search ではありません。最初にどの 機能を選ぶかが最重要です。
よくある依頼と内部の分岐
| ユーザーの依頼 | 最初に選ぶ 機能 | 理由 |
|---|---|---|
トヨタを調べて | sf search | 会社特定が先だから |
生成AIに積極的な会社を出して | sf search | 候補会社と根拠を最速で確認できるから |
前回の有報との差分を見たい | sf search -> sf company --card -> signals --include ir -> 必要なら company filings | v0 では差分は事前生成された IR Signals と evidence として読むから |
営業候補を作りたい | sf search | 母集団と根拠を先に確認する必要があるから |
company search の解決順
sf company search は、概ね次の順で 会社 候補を組み立てます。
- 入力を正規化する
sf_company_identifiersの exact match を見るcompany_idの exact candidate を見る- 正規化済み 会社 name の exact match を見る
- 必要なときだけ normalized name の prefix match を足す
- relevance で並べる
実用上の意味は次です。
7203のような code っぽい 検索条件 は強く exact 解決を狙うjpx_7203のような canonicalcompany_idも直接解決できるABEJAのような表記ゆれは正規化で吸収される- 自由入力 が曖昧なときは、社名 prefix と関連 field で補助する
company search で relevance に使われる field
高く評価されやすい順に、概ね次を見ています。
company_iddisplay_namelegal_namewebsite_domainwebsite_urlmarket_segmentindustry_33industry_17
さらに次の補正があります。
- identifier exact match は強い加点
listedの会社は少し優先
つまり、上場コード、社名、website domain のいずれかが分かっているとかなり強いです。
会社群検索の使いどころ
sf search は、自然文の会社群を高速に候補化する入口です。詳細 command として sf company search も使えます。
sf query --file company-query.json --json sf search "東証プライムの製造業" --json
対応しやすい条件は、上場状態、market segment、会社名/識別子、EDINET本文のkeyword/semanticテーマ検索です。財務指標のしきい値は company_query.v1 に構造化して sf query で実行します。CSV が必要なら、agent が JSON からローカル CSV を作ります。財務条件の変換手順は 財務条件の Company Query を見ます。
確認する key
companies[].company.company_idcompanies[].query_matchcompanies[].reasoncompanies[].matched_observations[].summarycompanies[].matched_observations[].evidencemeta.returned_companieswarnings[]gaps[]
company search で実際に何がヒットするか
例:
sf search 7203 --json
この場合は、7203 が identifier exact match として強く扱われ、jpx_7203 や関連 identifier が上位に来ます。
別の例:
sf search "トヨタ" --json
この場合は、社名正規化と prefix match が効きます。ただし、曖昧な社名では別会社が先に出ることがあるので、確実に進めたいなら証券コードや domain を使ってください。
テーマ検索で実際に何が起きるか
例:
sf search "情報・通信業の上場企業で生成AI CRMに関連" --json
この場合は、まず industry で候補 会社 群を絞り、そのあと 生成AI と CRM が summary type subtype source evidence などに入る observation を探します。返ってくるのは company 単位のまとめですが、内部では先に observation を集めてから 会社ごとにまとめています。
そのため、ユーザーが感じる なんでこの会社が出たのか の答えは、最終的には observations[].summary と evidence にあります。
良い 検索条件 と悪い 検索条件
悪い例:
{
"query": "東証プライムの情報通信企業で生成AIとCRMと営業効率化に積極的な会社"
}
良い例:
{
"query": "生成AI CRM",
"filters": {
"industries": ["情報・通信業"],
"market_segments": ["prime"]
}
}
構造条件は filters に移し、query はテーマ語だけに寄せてください。
まずは短く当てる
sf search "情報・通信業の東証プライム上場企業で生成AI CRMに関連" --json
結果が弱いときは、次の順で直します。
queryの token を減らす- 制約を
filtersへ移す - まず
sf searchでcompany_idを解決し、company_ids絞り込みを使う LLMGenAIのような短い英語略語だけなら、日本語同義語を 1 つ足す- それでも不足するなら
sourcesやobservation_typesを見直す
復旧方法
company search が曖昧な場合は、証券コード、canonical company_id、website domain の順で 検索条件を狭めます。unsupported 条件を返す場合は、完了扱いにせず条件を分解します。テーマ検索が弱い場合は、自然文を短いテーマ語と explicit 絞り込み に分け直してください。
Claude Code / Codex がやるべき分解
自然文の依頼を エージェントが受けたら、まず次のように分解すると安定します。
- 固有名詞がある:
company search - 対応済み条件の会社群:
company searchで候補を取り、必要ならローカル表にする - 財務条件つきの会社群:
sf data capabilities --jsonで catalog を読み、company_query.v1を作ってsf queryで実行する - テーマ語しかない会社群:
company searchで候補と根拠を確認し、必要な会社だけ Company Card を読む - 上場日や IPO 年で絞る会社群:
company searchで coverage を確認し、必要なら条件を分解する - 横断確認だけ:
company searchの JSON で止め、保存はローカル側で判断する 差分前回有報がある:signals --include irを先に読み、必要ならcompany filings保存しておきたいがある: CSV / Markdown / spreadsheet / 自社DB にローカル保存する
たとえば 生成AI に積極的な競合を出して、あとで見直せるようにして と言われたら、1 本の search に流すのではなく、次の 2 段階に分けます。
company searchでテーマ根拠を確認する- 候補条件を上場状態、業種、財務指標などの対応済み条件に分解する
- 対象会社数と coverage / warning を見る
- 必要な会社だけ
company profile --cardと signal を読む - agent 側でローカルの表、Markdown、CSV に整形する
この分解をしないと、検索は当たったが後で見返せない か、何を根拠に入れたか分からない のどちらかになりやすいです。
このページに含めないもの
自然言語検索の結果を無確認で publish queue に積み上げる導線は、現時点の公開 product core ではありません。公開導線では sf company search と Company Card / signals を正面にします。