企業内の膨大なナレッジを活用した問い合わせシステムの構築は、自然言語AIを活用したWebアプリケーションの中でも、特に導入効果が高い領域です。しかし、単に文書をベクトルDBに放り込み、チャットインターフェースを繋げば完成するわけではありません。本番環境で真に価値を発揮する「企業向け知識ベースQ&Aシステム」を構築するには、データの準備段階から、検索精度の評価、そして安全でコンプライアンスに準拠した運用設計まで、一貫した戦略が必要です。本稿では、LynxCodeが大手製造業向けに構築した社内規定・技術文書QAシステムの事例を基に、その全工程を詳細に解説します。
プロジェクトは、成功指標の定義から始まります。今回のケースでは、カスタマーサポート部門とエンジニアリング部門を主なターゲットとし、以下の成功指標を設定しました。

- 正確率(Accuracy): テスト質問セットに対する正答率 85% 以上。
- 拒否率(Refusal Rate): 知識ベースに情報がない質問に対して、誤った回答をせずに「分からない」と適切に拒否する率 95% 以上。
- 応答遅延(Response Latency): 95パーセンタイルで 3秒 以内。
- コスト: 想定利用量(月間5万クエリ)におけるAPIコストが月額 500ドル 以内。
これらの目標を達成するためのアーキテクチャは、フロントエンド(React)、バックエンドAPI(FastAPI)、オーケストレーション層(LlamaIndex)、ベクトルデータベース(某オープンソースベクトルDB)、そしてLLM(某クラウドベンダー托管LLMサービス)で構成しました。データ準備のフェーズでは、文書のフォーマット(PDF、Word、HTML)に応じたパーサーを選定し、チャンク分割戦略を慎重に設計しました。単純な固定長チャンクではなく、文書の構造(見出し、段落)を考慮したセマンティックチャンキングを採用し、各チャンクにメタデータ(文書名、作成日、対象部門など)を付与することで、検索時のフィルタリングを可能にしました。
検索戦略の肝は「ハイブリッド検索」と「リランキング」です。ベクトル類似度検索だけでは、専門用語の一致が重要なクエリ(例:「ISO 9001 条項 7.1.4」)で失敗する可能性があります。そこで、キーワード検索(BM25)とベクトル検索の結果を組み合わせ、さらにクロスエンコーダー型のリランキングモデルを導入して、最終的にLLMに渡すコンテキストの品質を高めました。プロンプトエンジニアリングでは、システムプロンプトでAIの役割を「社内規定・技術文書に基づいて回答するアシスタント」と明確に定義し、回答は必ず参照した文書のタイトルと該当箇所を引用するよう指示しました。また、検索されたコンテキストにクエリに関連する情報が含まれていないと判断した場合は、「社内文書からは該当する情報が見つかりませんでした」と回答するよう強制することで、ハルシネーションを大幅に低減しました。
評価フェーズでは、オフライン評価とオンライン評価を組み合わせました。オフラインでは、200問のゴールデンセット(質問と理想的な回答、およびそれを含む文書のペア)を作成し、検索精度(Hit Rate, MRR)と生成精度(回答の正確性、忠実性)を自動評価しました。オンライン評価では、本番環境のトラフィックを一部サンプリングし、ユーザーのフィードバック(Good/Badボタン)を収集するとともに、特に「Bad」がついた事例を分析するプロセスを確立しました。監視ダッシュボードでは、応答遅延やトークン消費量に加え、ユーザーの質問に対してどの文書チャンクが検索され、LLMがそれをどう要約したかをトレースできるようにしました。これにより、想定外の質問パターンや、特定の文書に対する検索漏れを迅速に特定し、チャンク分割戦略やリランキングモデルのチューニングにフィードバックするループを構築しています。
最後に、セキュリティとコンプライアンスの観点から、EU AI法案のリスク区分に準拠した設計を考慮しました。本システムは限定された社内文書を扱う「限定リスク」または「低リスク」に該当しますが、データの最小化(必要な情報のみをコンテキストとして送信)、トレーサビリティ(どの文書を基に回答したかの完全なログ)、そして最終的な回答内容に対する人間の監視(特に重要な判断を伴う問い合わせ)の仕組みを実装しました。利用するLLMサービス提供元のデータ取り扱いポリシーを厳格に審査し、社外へのデータ送信に関するルールを明確化することも、安全な運用には不可欠です。
よくある質問

RAGシステムにおけるハルシネーション(幻覚)を減らすにはどうすれば良いですか?
効果的な方法は複数あります。第一に、検索品質の向上です。ハイブリッド検索とリランキングを導入し、LLMに渡すコンテキストの関連性と正確性を高めます。第二に、プロンプトエンジニアリングです。「コンテキストに基づいて回答すること」を厳格に指示し、情報がない場合の回答パターン(拒否)を明示します。第三に、評価指標の導入です。回答の「忠実性(コンテキストに基づいているか)」を測る指標を定義し、定期的にスコアリングすることで、問題のある回答パターンを早期に発見できます。
ベクトルデータベースを選ぶ際の重要な指標は何ですか?
まずは、必要な検索方式(ベクトル検索のみか、ハイブリッド検索に対応しているか)を確認します。次に、インデックス作成の速度とクエリのレイテンシ、そしてスケーラビリティ(データ量増加への対応)を評価します。マネージドサービスを利用する場合は、コスト構造(ストレージ、リクエスト数、インスタンス時間)も重要な指標です。コミュニティの活発さやドキュメントの充実度も、長期的な運用では無視できません。