Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自社サービスのマニュアルをAIがクイズ化! クイズで社員の知識向上

Yohei
October 29, 2024

自社サービスのマニュアルをAIがクイズ化! クイズで社員の知識向上

### 主な内容:
1. **プロジェクト背景**:
- 自社サービスは多機能で、全てを把握することが難しいため、社員の知識を効率的に向上させる手段が求められていました。
- サービス理解を促進するため、マニュアルを基にしたクイズをSlackアプリとして開発し、AIを活用して自動生成。

2. **技術的アプローチ**:
- **RAG(Retrieval-Augmented Generation)**を活用し、サービスマニュアルからクイズを生成。
- データはマニュアルをクロールして収集、サニタイズ処理を行った後、Embeddingモデルを使用してベクターデータ化。
- **LangChain**と**ChromaDB**を組み合わせてクイズを作成し、Slackで自動的に出題・解答が行われる仕組み。

3. **成果と課題**:
- クイズによる社員の知識向上が期待される一方、運用中にクイズの正確性に関する問題が発生。
- AI生成されたクイズデータの精度を高めるため、再度検証プロセスを導入し、クイズの品質を向上させる取り組みを実施。

4. **今後の展望**:
- クイズ生成の精度向上に向け、ハイブリッド検索(キーワード検索とベクトル検索の組み合わせ)を導入予定。
- 他のサービスや技術分野への応用も視野に入れ、社内全体の知識向上を図る。

Yohei

October 29, 2024
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介:趣味 アプリ開発 (Chrome拡張) • Meet2text Google Meetでの会議の議事録をAIで自動作成&管理 • Git Branch

    Name Generator for GitLab & GitHub GitLab、GitHubで、IssueのタイトルからAIでブランチ名候補を生成 • Page2Markdown Webページの指定箇所をMarkdownに変換しコピー or ダウンロード ChatGPTなどのAIアシスタントと相性バツグン
  2. ベクターデータをChromaDBに保存 • ベクターデータを効率的に検索・取得するためのデータベースとして ChromaDBを採用 • 高速で効率的なベクトル検索が可能 • テキストだけでなく、画像などのマルチモーダルデータも扱える collection.add( ids=["id1",

    "id2", "id3", ...] documents=["マニュアルデータ1...", "マニュアルデータ2...", "マニュアルデータ3...", ...], metadatas=[ {"title": "xx機能", "source": "https://example.com/xxx1"}, {"title": "〇〇機能", "source": "https://example.com/xxx2"}, {"title": "□□機能", "source": "https://example.com/xxx3"}, ...], )
  3. LangChainでRAGを用いてクイズ生成 • マニュアルのページタイトルをランダムに取得し、そのタイトルをクイズテーマと する • search_type="similarity_score_threshold", "score_threshold": 0.5 を指定し、類似度が0.5を満たすデータを用いるよう設定 ConversationalRetrievalChain.from_llm(

    llm, chroma_client.as_retriever( search_type="similarity_score_threshold", search_kwargs={"score_threshold": 0.5, "k": 4}, ), combine_docs_chain_kwargs={"prompt": chat_prompt}, response_if_no_docs_found="作成できませんでした", )
  4. 実際のクイズデータ { "question": "BIZTELバージョン3.10.0でのエージェントコントロールの改修内容として正しいものはどれですか?", "choices": [ "内線番号をクリックすると直接発信できるようになった。", "エージェントのログイン回数が記録されるようになった。", "チャットメッセージの送信上限が5000文字に増えた。", "エージェントのステータスに影響を与える新たなロールが追加された。"

    ], "answer": 0, "explanation": "BIZTELバージョン3.10.0以降では、エージェントコントロールにおいて内線番号をクリックすると直接発信できる ように改修されました。", "hint": "この改修は通話関連の操作性向上に関連しています。", "source_urls": [ "https://manual.biztel.jp/hc/ja/articles/900006252926" ] }
  5. 生成したクイズデータを評価してからクイズとして採用する • RAGで生成したクイズデータを、再度RAGに渡し、正解であればクイズとして採 用するプロセスを導入 { "question": "『ニャー』と鳴く動物はどれでしょう?", "choices": [ "犬",

    "猫", "鳥", "カエル" ], "answer": 1, "explanation": "『ニャー』と鳴く動物は猫です。猫は柔軟で俊敏な動物で、人々に愛されているペットです。", "hint": "この動物は時々高いところに登るのが好きです。", "source_urls": [ "https://ja.wikipedia.org/wiki/%E7%8C%AB" ] }