マルチテナントのB2B動画配信プラットフォームの開発。文字起こしパイプラインやRAGチャットなど、AIまわりはほぼ自分が実装。
マルチテナント構成のB2B動画配信プラットフォームを開発しています。全体管理者、クライアント管理者、視聴者の3ロール構成で、クライアント企業ごとにテナントを提供する形です。文字起こしやRAGチャットなど、AIまわりはほぼ自分が作りました。インフラや認証などの基盤も担当しています。
文字起こしパイプライン
アップロードされた動画から文字起こしを作る一連のパイプラインです。
- AWS Transcribeで文字起こし。Transcribeの2GB制限に当たる動画があるので、先に音声だけ抽出してから投げるパイプラインにした
- 手動起動用のAPIと管理画面のボタン、完了を受けるWebhookを用意
- 話者分離の結果からSpeakerレコードを自動生成し、動画フレームのOCRと顔検出を組み合わせて話者名の候補を自動で付ける。登壇者のプロフィールはClaudeとWeb検索で自動生成する仕組みも作った
視聴者向けAIチャット
動画の内容について視聴者が質問できるチャットです。
- 文字起こしをembedding化して pgvector に保存し、RAGで回答を生成
- チャットUIはストリーミング対応。回答には該当箇所の時刻リンクが入り、クリックすると動画がその位置にシークする
- 話者認識のembeddingを使ってRAGの精度を上げる改善も入れた
- Redisベースのレート制限とクォータ管理で、テナントごとの利用量を制御
基盤・運用
- Cognito認証、S3 + CloudFrontの配信、ECSデプロイ。ハードコードされていたクレデンシャルをIAM Roleに移行
- GDPR対応として、登壇者が自分の情報を削除できるオプトアウトフローを実装。AI生成プロフィールにはソース信頼度の防御層を入れた
- 環境変数をローカルとAWS間で双方向同期するスクリプト、MUIからTailwindへのUI統一
使った技術
- Next.js / TypeScript / Prisma
- AWS (Transcribe / Cognito / S3 / CloudFront / ECS / Lambda)
- pgvector / OpenAI / Claude API
- Redis