PyCon JP 2024

低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発
2024-09-27 , 20F Track2

昨今における大規模言語モデル(Large Language Models, LLM)の技術進化は目まぐるしいものがあります。そのようなLLMの活用先の一つに、RAG(Retrieval-Augmented Generation)という技術があります。
RAGとは、LLMによるテキスト生成に外部情報の検索を組み合わせることで、回答精度を向上させる技術です。
本トークでは、AIチャットボットの要件・要求定義といった導入プロセスから、Slack AppとLangChainを用いた開発方法、RAGに必要な文書のベクトル化など、社内文書に基づく回答を行うことのできるRAG機能を搭載したAIチャットボットを、Pythonを用いて低コストで実現した取り組み全般についてご紹介します。


Overview

私の所属するコネヒト株式会社では、LLMを用いた施策のPoCや業務改善に取り組んでいます。
その中で、AIと気軽に触れ合える環境を提供することが非常に重要であると考え、OpenAI APIのリリース後にSlackからAIを体験できるSlack Appを開発しました。
また、社内文書を参照してAIに回答させたいというニーズの高まりと、RAG(Retrieval-Augmented Generation)という技術の登場により、社内文書に基づいた回答を生成する機能を追加で実装しました。

このRAGシステムをゼロから構築するためには、以下の点を考慮する必要があります。

  • データの収集と管理
  • ベクトル検索データベースの構築
  • コスト管理
  • ユーザーインターフェース etc ...

特に、コスト面については多くの方が気になる点ではないでしょうか。LLMを活用する際に避けて通れない考慮事項として、運用コストが挙げられることが多いと思います。

本トークでは、Slackを活用したAIチャットボットの構築と、そのチャットボットに社内文書に基づいた回答を生成させる機能(RAG)を低コストで実装した方法についてお話しします。

前半では、Slack Appで実現するシンプルなAIチャットボットの開発方法について説明し、後半では、AIチャットボットに社内文書に基づいた回答を生成させる仕組み(RAG)の紹介や、RAGを実現する上でのポイントや低コストで実現するTipsについて紹介します。

Outline

  • 導入(3分)
    • 自己紹介
    • 概要説明
      • LLMやRAGといった前提知識の共有
      • このトークを聞いて得られるものの共有
  • OpenAI APIとLangChainを用いたAIチャットボットの開発(10分)
    • システム構成図の紹介(AIチャットボットの部分)
    • Slack Appとは
    • LangChainとは
    • OpenAI APIとLangChainを用いたAIチャットボットの開発方法
  • RAG機能の開発(10分)
    • システム構成図の紹介(RAG機能も取り入れた全体像)
    • Notion APIを用いた社内文書取得方法
    • LlamaIndexを用いた文書のベクトル化、ベクトル検索機能の実現方法、低コストで実現するためのTips
  • AIチャットボットをより使いやすくするためのTips(2分)
    • プロンプトの工夫
  • まとめと今後の展望について(2分)

Why did you choose this topic?

昨今における大規模言語モデル(LLM)の技術進化は目まぐるしいものがあります。その中の1つにRAG(Retrieval-Augmented Generation)という技術があり、各社RAG関連のサービスをリリースしたり、自社でRAGを構築していたりと、需要が高まってきていると感じています。

しかし、RAGは実装や運用コストがそこそこ高い割に、いざ運用してみると思った回答が得られなかったりと、不確実性が高いのも事実です。

そこで本テーマでは、なるべくコストをかけずにRAGを構築することを目的としたTipsを共有することで、多くの人や組織でRAG技術を検証する一歩目を踏み出しやすくできればと考えています。

Knowledges and know-how the audience can get from your talk

基本的にはRAGシステムの要件定義周りから、そのシステムをPythonで実現する方法までをお話する予定です。

  • RAGシステムを導入する際のプロセス、プロジェクトの進め方
  • PythonでSlack Appを開発する方法
  • OpenAI APIとLangChainを用いたメモリ機能搭載のAIチャットボットを開発する方法
  • 低コストでRAGを実装する方法
Prior knowledges speakers assume the audience to have
  • Pythonを用いたプログラミング経験
  • ChatGPTなど、生成AI関連サービスを触ったことのある経験
  • (ある良い※任意)Slack Appの開発経験
  • (ある良い※任意)ベクトル検索の仕組み
Audience experiment

Intermediate

Language of presentation

日本語

Language of presentation material

日本語

コネヒト株式会社でMLエンジニア、ML PM、EMなどをしています。