Agentic OS 技術スタックを下から読む 補講(1):外の知識を、その場で引く ―― 意味で探すと、名前で外す
前回、第49回で、私は「この連載は、ここで閉じる」と書きました。
Agentic OS 技術スタックを下から読む 補講(1):外の知識を、その場で引く ―― 意味で探すと、名前で外す
連載を閉じた、その後に
前回、第49回で、私は「この連載は、ここで閉じる」と書きました。
下から上まで、一巡しました。最後には、「下から読む人は、流行が変わっても、足場を見失わない」とも書きました。
今回は、その後に足す補講です。
本筋で触れずに通り過ぎた現場が、いくつか残っています。ここからは、それを一つずつ開きます。最初に扱うのは、エージェントが外の知識を引く話です。
本筋では、何度も「関係するものを引いて、窓に入れる」と言ってきました。第44回でも、関係するものだけを窓に入れる、という形で見ました。けれど、その「引く」の中身は、ほとんど開いていません。
今回は、そこを見ます。
検索とは、ただ似た文書を探すことではありません。意味で探すことと、名前で当てることは違います。そして、現場の問いは、たいてい両方を要ります。
意味で探す
引き方の一つ目は、意味で探すことです。
問いと文書を、それぞれ、意味の近さを比べられる数値に畳みます。長い文も、短い問いも、そのままでは比べにくいので、いったん同じ形の数値列にします。そのうえで、問いの数値列に近い文書を探します。
このやり方は強いです。
たとえば、利用者が「支払いが通らない」と書いたとします。手元の文書には「決済が拒否された場合」と書かれているかもしれません。言葉は違います。けれど、起きていることは近いです。
言葉そのものを見ているだけなら、「支払い」と「決済」は別の語です。「通らない」と「拒否された」も別の語です。けれど、意味で見れば、どちらも金銭処理が失敗した話です。
意味で探す仕組みは、こうした言い換えに強いです。
利用者は、文書と同じ言葉を知らないことがよくあります。正式な名前も覚えていません。少し曖昧に、「ログインできない」「通知が来ない」「画面が固まる」と書きます。それでも、近い説明を引ける。ここに意味で探す力があります。
意味で探すと、名前で外す
ただし、意味で探すと、肝心の細部で外します。
たとえば、「有効にする」と「無効にする」です。
意味の上では近いです。同じ設定をめぐる言葉です。どちらも、ある機能の状態を変える話です。だから、意味の近さで見れば、この二つは近くに並びます。
けれど、実際の操作としては正反対です。
「通知を有効にする」手順を探している人に、「通知を無効にする」手順を渡したら、完全に逆です。近いから役に立つ、とは言えません。むしろ、近いから危ないのです。
同じことは、あちこちで起きます。
バージョン番号は、一文字違えば別物です。エラーの符号も、一桁違えば別の原因を指します。機能の名札、設定項目の名前、処理の名前も同じです。
意味で見れば、同じ仲間に見える。けれど、現場では別物です。
「起動時の失敗」と「保存時の失敗」は、どちらも失敗です。意味は近いです。しかし、直す場所は違います。「読み込みの権限」と「書き込みの権限」も近いです。けれど、許される動きは違います。
意味の近さは、こうした差をなめらかにします。細い段差を丸めます。正反対の細部まで、同じ地帯に置いてしまいます。
だから、意味だけで探すと、名前で外します。
名前で当てる
そこで、二つ目の引き方が必要になります。
意味ではなく、言葉そのもので照合します。
ここには、いくつかの勘所があります。
まず、珍しい言葉ほど重く数えます。どこにでも出る言葉は、あまり手がかりになりません。「設定」「場合」「確認」のような語は、多くの文書に出ます。これが合ったからといって、その文書が本当に欲しいものだとは限りません。
反対に、めったに出ないエラーの符号や、特定の設定名は強い手がかりです。文書全体の中で少数しか出ない語が問いにも文書にもあるなら、それは偶然ではない可能性が高いです。
次に、同じ言葉が何度出ても、効きは頭打ちにします。
ある文書に同じ設定名が十回出たとしても、それだけで十倍大事とは限りません。長い説明の中で繰り返しているだけかもしれません。一回出た時点で、その文書が関係していることはかなり分かります。二回目、三回目は少し効くとしても、十回目まで同じ重さで足すと、繰り返しの多い文書が得をしすぎます。
さらに、長い文書を、ただ長いというだけで得させないようにします。
長い文書は、当然、多くの言葉を含みます。すると、問いの中の語に当たりやすくなります。けれど、それは内容が近いからではなく、単に面積が広いからかもしれません。そこで、文書の長さによる偏りをならします。
こうすると、名前をきっちり当てられます。
エラーの符号。バージョン番号。設定名。処理名。一字も違えられない名札。意味で探すと近くの別物まで拾ってしまう場面で、名前による照合が効きます。
本物の問いは混じっている
現場の問いは、たいてい混じっています。
意味で汲むべき部分と、名前で当てるべき部分が、同じ問いの中にあります。
たとえば、「このエラーの符号が、なぜ起きるか」という問いです。
エラーの符号は、正確に当てたいです。一文字違えば別の話です。ここは名前の問題です。
一方で、「なぜ起きるか」は意味の問題です。原因、条件、前提、直し方。文書には「発生条件」と書かれているかもしれません。「原因」と書かれているかもしれません。「この状態では失敗します」と書かれているかもしれません。言い回しは揺れます。
名前だけで探すと、符号が出ているだけの文書を拾います。更新履歴の一行や、一覧表の端だけかもしれません。そこには、原因が書かれていないことがあります。
意味だけで探すと、原因説明らしい文書は拾えます。けれど、別の符号や別のバージョンの話を混ぜることがあります。
だから、両方が要ります。
何をしたいのかを意味で汲みます。同時に、どの機能か、どの番号か、どの符号かを名前で当てます。片方だけでは、足りません。
順位で混ぜる
では、意味で探す仕組みと、名前で当てる仕組みを、両方走らせればよいのでしょうか。
走らせるところまでは、よいです。問題は、その後です。
二つの仕組みは、それぞれ点を出します。意味の近さの点と、名前の当たり具合の点です。けれど、この二つは同じ物差しではありません。
意味の近さの点で、0.82と出た。名前の当たり具合で、13.4と出た。では、足して14.22にすればよいか。そうはいきません。
点の作られ方が違うからです。片方は近さを表す数値です。もう片方は、言葉の珍しさや文書の長さをならした点です。数字の見た目だけをそろえても、中身はそろいません。
これは、第29回と第37回で見た、別々の物差しは揃えられない、という話と同じです。無理に足すと、どちらかの尺に引きずられます。
そこで、点を足すのをやめます。
代わりに、それぞれの並びで何番目に来たかを見ます。つまり、順位で混ぜます。
意味で探した並びで三番目。名前で当てた並びで五番目。こういう文書は強いです。両方で上のほうに来ています。
反対に、意味では一番目でも、名前では百番目なら注意します。問いの意図には近いが、肝心の名札が合っていないかもしれません。名前では一番目でも、意味では百番目なら、符号だけ載っている薄い文書かもしれません。
順位で混ぜると、物差しの違いを避けられます。点の大小ではなく、それぞれの世界の中で上位かどうかを見るからです。
これが、別々の物差しを無理にそろえず、順位で迂回するやり方です。
最後に細かく見直す
順位で混ぜると、候補はかなり絞れます。
しかし、まだ終わりではありません。最後に、もう一段かけます。
ここまでの探し方は、あらかじめ文書を数値に畳んでおき、問いも数値にして比べるものでした。速いです。大量の文書から候補を拾うには向いています。
ただし、粗さがあります。
文書を先に畳むということは、細部の並びや否定の向きや条件のつながりを、ある程度まとめてしまうということです。「有効にする」と「無効にする」が近くなるのも、その粗さの一つです。
そこで最後は、候補の一つひとつについて、問いと文書を一緒に並べて見直します。
問いだけを畳む。文書だけを畳む。その二つを遠くから比べる。そうではなく、問いのどの部分が、文書のどの部分に合っているのかを、その場で細かく見ます。
「この符号」と文書中の符号は同じか。
「このバージョン」と文書中の対象は同じか。
「有効にする」話なのか、「無効にする」話なのか。
原因を聞いているのに、単なる一覧ではないか。
手順を聞いているのに、背景説明だけではないか。
こうした確認を、候補ごとに行います。
ただし、これは重いです。すべての文書に対してはできません。だから、上位の少数にだけかけます。
広く、荒く集める。狭く、細かく選ぶ。
第31回と第39回で見た、入口は広く、出口は狭く、という形が、検索にもそのまま現れます。
検索は行動の入口である
最後に、エージェントの話に戻します。
なぜ、ここまで細かくするのでしょうか。
ふつうの問答なら、検索が少し外れても、答えが少し外れるだけで済むことがあります。もちろん、それもよくありません。けれど、被害は言葉の中に留まる場合があります。
エージェントは違います。
エージェントは、引いた文書を見て、その先で動きます。手順書を読みます。権限の説明を読みます。道具の使い方を読みます。そして、実際に実行します。
ここで検索を取り違えると、ただ答えがずれるだけではありません。
無効にする手順を、有効にする手順だと思って実行する。
別のバージョンの直し方を、今の環境に当てる。
似たエラーの対処を、本来のエラーに使う。
読み取りだけ許された場面で、書き込みの道具を選ぶ。
検索の取り違えが、答えの誤りではなく、行動の誤りになります。
ここが、エージェントの検索の重さです。
だから、ただ「意味が近いもの」では足りません。意味で探し、名前で当てます。別々の点は足さず、順位で混ぜます。最後に、少数の候補を細かく見直します。
本筋で何度も通り過ぎた「関係するものを引く」という短い一言の中には、これだけの土台が畳まれていました。
検索は地味です。けれど、エージェントが外の世界に触れる、その最初の一手がここにあります。
補講は、まだ続く。
← 一覧へ