WordCamp Asia 2024 AI (demo)
Product information
Free to use
Release date
Released at January 31, 2024
2024年2月に開催されたWordPressのカンファレンス、WordCamp Asia 2024のイベント情報やセッション情報について聞くことができるウェブアプリケーションです。非英語圏から参加するユーザーが、英語で書かれた情報を自身の言語で質問し、自分にとって興味・関心のあるトピックを紹介するセッションはどれかを知ることができます。
Product info
tools
Background
- 生成AIを利用したRetrieval-Augmented Generation (RAG) アプリを作ること
- セッション情報をGoogle翻訳で都度確認して参加するセッションを決めるのが煩わしくなったこと
この2点から開発を決めました。事前に実行委員メンバーにコンテンツを利用する許可をとり、WP APIを利用してコンテンツデータを取得しています。LangChain.jsやCloudflare Workers AI / Vectorizeなどの新しい技術について試行錯誤することも目的としており、事前に簡単なREST APIとしてテストを進めた上でUIを組み込んでいます。
Architecture
全く新しい挑戦のため、利用したツールについてもほとんどが初挑戦に近いものでした。
- インフラ: Cloudflare Workers
- ベクトルストア: Cloudflare Vectorize
- 生成AI: OpenAI
- RAGを実装したフレームワーク: LangChain.js (v0.1.0系)
- バックエンド: Hono
- フロントエンド: Hono
2023年内に開発していたため、VectorizeがCloudflare Pagesに対応していませんでした。そのためWorkersでHTMLを返すパスを用意する形でUIを提供しています。また、Workers AIが日本語に堪能なモデルを当時提供していなかったため、Open AIのAPIを利用して回答を生成させています。
フロントエンドまでHonoで共通化しているのは、CloudflareでDeveveloper Relationsとして働く@yusukebeさんの記事を参考にセットアップしたためです。当時Streamingのレスポンスを処理する方法などにも詳しくなかったため、UIや生成結果の表示部分の実装はほぼそのままコードを利用させていただいています。唯一、バックエンドの実装についてはLangChain.jsベースへ差し替えました。
バックエンドでは、質問に応じて参照するベクトルストアを変更しています。これはイベントについて知りたい場合と、セッションについて知りたい場合で期待する回答文章が大きく異なることがテスト時に判明したためです。事前に質問内容から呼び出すLCEL Chainをルーティングさせ、コンテキストに応じたデータを持つベクトルストアを検索、適切な形での回答文生成を行なっています。