RAGのハルシネーションとFunction Calling(ファンクションコーリング)の導入記

2024-10-06
tony

多くの企業がRAG(Retrieval-Augmented Generation)を活用して、業務用AIエージェントを構築しています。RAGは、大規模なデータを検索し、それをもとに応答を生成する方式で、LLMの限界を補える技術です。私たちもRAGを活用してすべてのデータを検索し、業務用AIエージェントを作ることを目指しました。しかし多くの問題が発生し、それを解決していく過程をお伝えします。

数値とデータ統計のテスト

実際に私たちは、ソフトウェアの使用量が収集されたデータを、RAGベースで正確に集計できるかテストしました。私たちが集計するデータは、利用者のPCにクライアントをインストールして、あらゆる種類のソフトウェアの使用履歴を収集するものです。これにより、ユーザー1人あたり1日に約1,000〜3,000件のデータが収集されます。

1次集計でカテゴライズ作業を経たDBを.mdとして抽出し、学習させました。このとき、Vector Storeに保存したDBの行数は数百万件に達します。そのうえで、次の質問をしました。「開発チームはきちんと働いている?」 この質問の意図は、ソフトウェアの使用量を分析して、開発チームがどの種類のソフトウェアを使っているかを統計的に把握し、きちんと働いているかどうかについて意見を求めるものです。まさに、人が人に指示するような内容です。

‍

‍

結果を見ると、質問の意図を正確に理解して、ソフトウェアの使用量を収集していました。しかし、ソフトウェアの使用時間が1日平均4736分というありえない回答をしました。ありえない数値です。この結果を正確に調整するために、プロンプトエンジニアリングとデータの正規化を試み続けましたが、きちんとした回答は得られませんでした。

理由を調べてみると、LLMそのものは言語モデルであって数値モデルではないため、基本的な数値計算でも誤りを出すなど、さまざまな計算ミスが発生するとのことでした。

数値ではない情報の正確性テスト

数値ではない場合に、正確に回答できるかをテストしました。社内規程や就業規則のような固有の情報については、本当にきちんと回答してくれます。もちろん、嘘をつかないように、プロンプトで学習済みの情報には一切答えないようにし、RAGベースでのみ回答するようにしました。ところが、ここでも致命的な誤りがありました。

それはデータの混同です。

「今、うちの会社の営業状況はどうなっている?」と質問したところ、CRM、wiki、議事録のすべてを調べ上げ、はるか昔の情報を複合的に取り違えて回答しました。

‍

‍

そこで質問を少し変えて、特定の情報(直近の議事録)からのみ取得するよう指示したところ、まずまずうまく回答しました。

‍

‍

しかし、まだ別の問題があります。人はこれほど親切に質問してくれないからです。実際の会社生活では、雑な質問をしても、分析された回答が返ってこなければなりません。そこで私たちは、そのようなエージェントを作るための代替手段を探しました。それがFunction Callingです。

Function Calling(ファンクションコーリング)の導入記

Function Callingは、OpenAIが2023年7月に発表した技術で、データをもとに精緻な情報を要求したり、ユーザーのニーズに合わせてAIがアクションを実行したりできるようにした技術です。これを適用するために、私たちのバックエンドAPIに、以下のようなAIが理解できるAPI名、説明、パラメーターを定義する作業を行いました。

‍

functions = [
    {
        "name": "get_asset_status",
        "description": "Retrieve the status of company assets",
        "parameters": {
            "type": "object",
            "properties": {
                "asset_id": {
                    "type": "string",
                    "description": "The ID of the asset to retrieve status for"
                }
            },
            "required": ["asset_id"]
        }
    }
]

‍

その後、驚くべき結果が現れました。頭の中にある意図を質問しても、ぴたりと理解して回答するAIエージェントが完成したのです。その結果は、画像ではなくデモでご覧いただけます。結果をご覧になりたい方は、ぜひ導入のお問い合わせをお願いします!

‍

サービスについて知りたいですか?