見出し画像

社内文書でRAGが出来るようにするために、どうするべきかという考察

前書き

筆者はLLMやRAGを構成する技術やアルゴリズム、計算式などに詳しいわけではなくなんとなくの理解しかしていません。そのへんの素人が書いたものとしてご承知おきください。

社内ドキュメントの「鮮度」を考えた

先日、あつまれデザイナエンジニアというイベントでLTをさせていただく機会を頂きました。LTのテーマは「鮮度」。登壇資料はこちらです。

ここから以下の文章は、このスライドの内容とLTで話した内容に付いてを文字でまとめているものになります。

社内ドキュメントは氾濫する

自分はいまは会社員をしていますが、就業するまでは10年ほどWeb開発を行うフリーランスとして活動していました。
結構いろいろな組織の方とお仕事をさせて頂く機会があったのですが、多くの組織で起こっていた現象として「文書はたくさんあるけど、何がどこにあるのかよくわからない、参照する文書がこれで良いのかもわからない」という状態でした。

ドキュメントは日々増え続ける

この状態に至るまで、ドキュメンテーションをサボっていたわけでは決してなく、むしろ逆に日々きちんと会議の議事録、設計書、PRD、インシデントレポート、取引先についての記録や、イベントの企画書などきちんと記録されていました。つまり人々は勤勉であり、そして日々何らかのドキュメントが増え続けていくことになります。

整然と増やし続けることは難しい

現在だとnotionが主流になっていそうですが、ドキュメント管理のための方法はたくさんあり、Google drive、esa、backlogやgithubのwiki、もしくは社内のサーバに何でも置き場を作ってあるなど、本当に様々です。
そして、ドキュメントの運用の強いルールを敷いても、完全に遵守した運用をすることはとても難しいことだと考えています。
それは人ごと、もしくは部署ごとに独自のローカルルールなどが発生してくることを防ぎ切ることが難しいためです。
一個人の経験則にすぎない話ですが、組織の規模が大きくなるほどこの現象が見られました。そしていろいろな場所に、いろいろな形でドキュメントが積み重なっていきます

ドキュメントは「作ること」は簡単だが「消すこと」は難しい

なぜこのようなことが発生してしまうのかというと、ドキュメントを作る・増やすことは簡単でも作ったものをずっと更新し続けることや、要らなくなったものを削除するということがめちゃくちゃ困難だからにほかなりません。
なぜ消すのが難しいか、その具体的な例を考えてみます。
例えば、以下のようなファイルに見覚えはないでしょうか。

  • 重要そうなタイトルが付いているが中身は空のファイル

  • 途中で追記されなくなっている何の検討議事録

  • 2年ぐらい前に作られた設計書

  • 何か複製されたらしく、似たようなものがある文書

  • 退職した人が書き残した手順書

  • そもそも自分以外が作った文書

どうでしょうか、こんな感じのファイルをためらわず削除することが出来るでしょうか。まだ誰か見てるかもしれない、いつか使うのかもしれない、無くなって困るよりは残しておいたほうが良いだろう…、そう判断するのではないでしょうか。
消すことが難しいというのは、こういった心理的な負荷、行動に対する責任についてを考慮しなくてはいけないからということから自分が考えていることです。

そして「どこに何があるのかわからない、これで良いのかもわからない」が発生する

ドキュメントを作った人や、長く組織に在籍している人はある程度の経験値からどこに何があるのかを判別出来るかもしれませんが、かつての自分のような業務委託の立場や新入社員となるとそうもいきません。
膨大な量のドキュメントは検索を行ったとて一筋縄で欲しい情報を探し当てることは困難です。そして、求めているものについてのそれらしい文書を見つけたとしても、作成日や現在状況からそれが正しい情報なのかどうかを判断する毒見が必要になります。
そして悲しいことに定義書類とかは腐敗して有毒化しているケース、つまり「今生きている情報じゃないものが残っている」ことが多いです。

マジでこの顔になる

じゃあRAGを使えばいいじゃん

RAG(Retrieval Augmented Generation)とはLLMに外部の情報源を提供し、回答に際してその情報を参照させることが出来る手法です。

RAGの超ざっくりイメージ

社内文書がめちゃくちゃ溢れかえってしまったのなら、今ある文書をRAGで使えるようにして聞きたいことを回答させるようにすればいいじゃん!天才!世界は平和になった!!
と、行きたいところですが、それは多分そのままでは難しいんじゃないか、と自分は思っています。

なぜ難しいのか

めちゃくちゃシンプルな話で、情報源とするべきものがカオス化しているからです。

ハルシネーションが起こってしまう原因を作っているのは、自分自身…!

というか、これは自分がnotionのAI検索で起こった実際の事柄です。結局、人間がもととなる文書群自体をメンテナンス出来ていなければ、どれだけ優れたアルゴリズムをもってしても社内文書RAGは機能しないのではと考えています。
そもそも人間にもどれが重要かわからないような文書をLLMが判別できるわけがないんじゃないですかね…?知らんけど…。

ではどうしたら良いのかを考える

カオス化している状態がRAGを機能させないことに繋がるのであれば、カオス化を解消してやればよいという話になります。

しかし、前項で述べた通り、現行で存在している文書を消す、というのは心理的なハードルが伴う作業になります。
では、治安を保つためのBOTなどを投入してみるのはどうでしょうか。

  • 最終更新から一定期間以上経過している

  • タイトルのみで中身がほぼ空の状態である

  • 同一内容の文書が見つかった

例えば上記の条件のような文書を検知してSlackなどに通知し、古い文書については更新を促し、リアクションがなければ自動でアーカイブや削除するなどの機能を持つものがあれば、人間の心理的負担を減らして、社内文書をある程度最新かつ不要なものを削除した状態に保てるのではないかと考えます。

母のAI…

そう、この存在はつまりAIおかあさん。おかあさんBOTこそが人類に必要なものなのではないでしょうか。

やはり削除してしまうのは怖い

これは余談みたいなもんなのですが、ある日実家に帰省したとき、母から突然数千円を渡され、何のお金かを訪ねたところ、昔集めていたポケモンカードやゲームをブックオフに売ってきたお金でした。
わくぷよダンジョンなどのプレミアゲーやかいりきリザードンが含まれていました。(価値に気づいたのはその後暫く経ってからでした。この話は分かる人だけわかればいいと思って書いてます)
実家に置きっぱなしにしており、収納リソースを占有していたことを考えれば、やむなしと言えなくはないかもしれませんが…、やはり取り返しがつかない状態にするのは怖いですね、という話です。

不要なものは適切なアーカイブをしていくことが重要

一見いらないだろうと思っても、実は重要だった、それを消してしまったという事故を防ぐことを考慮すると、削除ではなくアーカイブをしていくのが良いのかもしれません。
人間が文書を参照するときも、基本的にアーカイブ領域は見ない場所としての割り切りがされていれば、どこに何があるのかわからない、についても防ぐ事が可能だと考えます。

ということを考えているのですが、今のところまだ実行ができていません。
鮮度が高い情報を安定して得られるようにする工夫について、いろいろな知見を知りたいので知見がある方はぜひ教えていただけると嬉しいです✋