はじめに
こんにちは! kintone 開発チームで EM をしている池田 (motacapla) です。
今回は、生成 AI 技術を活用した kintone の新機能について紹介します。 本機能は、Cybozu Days 2024 での Keynote と共にプレスリリースが発表されました。
こちらの機能を実現しているシステムの概要についても触れます。
用語
kintone AI アシスタント (仮称) とは
生成 AI 技術の Retrieval-Augmented Generation (RAG) を活用した新機能になります。 チャット形式で会話可能な UI を介して、kintone に蓄積されたデータを活用し、大規模言語モデル(LLM) が回答を生成します。
現時点では、kintone のアプリレコードのデータのみ活用できます。 各環境で複数の AI アシスタントを作成することができ、AI アシスタント管理者が利用するアプリといった設定を行うことで、AI アシスタント利用者が質問を投げかけられるようになります。
Retrieval-Augmented Generation (RAG) とは
LLM によるテキスト生成に外部情報の検索を組み合わせることで、回答精度を向上させる技術です。
kintone にはアプリに蓄積されたデータを検索する機能があります。 この蓄積されたデータを参照して、ユーザーからの質問に対して回答を生成することで、通常の LLM よりも特定のドメインに特化した回答が生成できます。
特徴
一般に実装されている RAG と比較した特徴について紹介します。
アクセス権
kintone の特徴として、アプリ・レコード・フィールドといった多様な粒度でアクセス権を設定できます。 本機能では、kintone で設定されたアクセス権も考慮した上で検索および回答生成を行うため、ユーザーにとっての非公開情報を除くことができます。
AI アシスタント管理者が複数のデータソースをカスタマイズ可能
管理者が、どのアプリをデータソースとするか複数選択することができます。 さらに、アプリの中でもフィールドの粒度で検索や回答生成に利用されるかを選択することができます。
システム概要
構成図
システムの概要図はこちらになります。
Cybozu DC (Neco) 基盤では、kintone の様々な機能を実現するために使われている MySQL/Elasticsearch があり、本機能では以下の用途で利用しています:
- ユーザーからの質問に関連するアプリレコードの検索
- アプリレコードの実際の値の取得
また、Amazon Bedrock による推論を利用するために AWS 基盤を整備しています。 これは kintone.com の基盤開発の経験を持つメンバーがチーム・組織内に在籍していることに加えて、以下のような様々な理由により選定しています:
kintone を提供している AP サーバーから、AWS 基盤の lambda インスタンス上で動いているサーバーを介してリクエストを送信し、Amazon Bedrock 上で動く LLM を呼び出しています。 Bedrock の LLM からの応答には時間を要すことがあり、AP サーバーからのコネクションが長時間張られた結果、コネクションプールが枯渇する可能性があります。 これを回避するため、ElastiCache に生成結果をキャッシュしておき、生成結果は別のGETリクエストで取得しています。
また、マルチテナント環境の共有リソースとして AWS 基盤上のサービスが存在していますが、お客様同士のデータは混ざらないように分離しています。
処理フロー
処理フローは、以下のようになっています:
- ユーザーからの質問を自然言語で受け付ける
- LLM によって質問文から検索キーワード抽出
- 抽出したキーワードを元に Elasticsearch からレコードを検索
- 検索したレコードを元に MySQL からレコードのフィールド値を取得
- 取得したフィールド値と質問文を LLM に渡して回答生成
特徴のセクションでアクセス権を考慮した RAG が提供できると話していたのは、処理フローの 3 および 4 で kintone のアプリに設定されたアクセス権限が考慮されるためです。
終わりに
今回は、生成 AI 技術を活用した kintone の新機能の紹介とシステム概要について簡単に紹介しました。
本テーマは、今年 5 月から始まったプロジェクトの成果になります。 チーム結成〜これまでの活動の変遷や詳細な技術の話についても、後続の記事でご紹介できればと思います。
We are Hiring!
生成AIチームでは、今回紹介した RAG に加え、他の機能も検討を進めています。
我々と一緒に生成 AI 技術を活用した機能開発に取り組みませんか?
是非、エントリーをお待ちしております!