Inspiration

  • 従来のRAGアプローチの限界:明確で単純な質問なら回答できるが、質問内容と情報源の関連が曖昧になると検索精度が下がってしまう
  • 上記に対して、以下2つのアプローチを組み込むことで、より精度の高いRAGを実装することを目的とした
    • Graph RAG:グラフデータベースを参照して検索するRAG。グラフ由来の点と点を繋げるような検索が可能で、従来のRAGに比べて複雑な情報を推論する際のパフォーマンスに優れている
    • エージェント:1回の検索や一つのツールでは回答できないような質問に対して、複数ステップの計画を立て、必要に応じて検索ツールを切り替えながら検索することで対応範囲が広がる

What it does

  • Streamlitのアプリケーション
    • 織田信長、豊臣秀吉、徳川家康、明智光秀について、チャットボット形式で詳しく回答できる
    • ブラウザのチャットUIで質問できる

How we built it

  • Wikipediaから織田信長、豊臣秀吉、徳川家康、明智光秀のデータを用い、グラフデータベースを作成
  • グラフデータベースから検索するツールを2つ作成
    • TextからCypherクエリを生成するツール
    • グラフ内のDocumentラベルを持つノードを参照するベクトル検索ツール
  • 2つのツールを利用できるエージェントを作成
  • エージェントを使ってGCEで動作するStreamlitアプリを作成

Challenges we ran into

  • Geminiを使ってGraph RAGを実装している例がかなり少なく、手探りで実装した
  • 実装に用いたライブラリ(LangChain)が内部でGoogleの認証情報を利用しており、デプロイする際に認証回りを解決するのに苦労した
    • 元々はCloud Runを用いる予定だったが、認証回りを解決できずGCEを用いた

Accomplishments that we're proud of

  • Graph RAG、エージェントという2つの最新技術を盛り込んだチャットボットを作成したこと
    • 上記どちらも盛り込んだアプリを実装している例は少ない
    • これらの技術に関してGeminiを用いている例はさらに少なく、最新技術の実装事例を1つ確立できた
    • Graph RAGやエージェントを使ったアプリをデプロイまで行っている事例も少なく、知見として確立できた

What we learned

  • ナレッジグラフについての基礎的な知識
  • Graph RAGの実装方法
  • エージェントの実装方法
  • GCE、VPCなどGoogle Cloudサービスの基本的な使い方

What's next for ナレッジグラフを使った歴史QAチャットボット

  • セキュリティなども考慮してWikipediaのデータを用いたが、本来は社内データや専門的なドキュメントを用いて同様のアプリを作成したい
    • RAGはLLMの知らない情報を付加できるのが強みなので、より専門的なデータに対して威力を発揮すると考えている
    • 今回はシングルエージェントでの実装を行ったが、より複雑なタスクへの対応や精度向上を目指してマルチエージェントでの実装も行いたい
    • 例えば回答内容のフィードバック、ユーザーの入力内容から想定される質問を複数作るなど、タスクを複数に切り分けるなど
    • エージェントだけでなく、人のフィードバックを組み合わせることでの精度向上も組み込んでみたい(ヒューマンインザループ)
    • デプロイについて、Cloud Runやロードバランサー、ユーザー認証などの機能を追加したい

Built With

Share this project:

Updates