LLM+RAGでできること、RAGを導入するには?|自社データ活用による大規模言語モデルの拡張(RAG)
LLMで自社固有の回答を得るには
LLMにRAG(Retrieval-Augmented Generation:検索拡張生成)を用いることで自社固有の回答の生成が可能になります。
LLMの場合
LLMでは一般に公開されている既存の情報しか提供されません。
LLM+RAGの場合
RAGを用いたLLMでは社内情報や次のタスクについても提供されます。
そもそもLLM(大規模言語モデル)とはなにか
LLMとは、既存のデータを学習させた自然言語処理モデルです。
LLMにできること
テキストの抽出
ユーザの指定した重要な単語などに基づきながら、関連した
テキストを抽出することが可能です。
他言語への翻訳
テキストの他言語への翻訳や、他言語にしかない情報も翻訳
して日本語として提供することが可能です。
指定した粒度や体裁でのドキュメントの要約
「マークダウン形式でまとめて」、「100字でまとめて」
といった、粒度や形式を指定することが可能です。
LLMにできないこと
ハルシネーションによる誤答
LLMは誤った情報をさも事実かのように回答してしまうこと (ハルシネーション;幻覚) があります。
トレーニングカットオフ*による情報不足
トレーニングに用いられた時点以降に生じた情報について、LLMは回答することができません。
* GPT-4 Turboの場合、2023年4月までの情報に対応 (2024年1月時点)
独自情報なし
LLMのトレーニングには、一般公開されている情報しか利用されていません。
LLMとRAG(検索拡張生成)の違い
RAGではLLMの不足知識を補うために外部のデータベースを参照します。
LLM単体の構成
参照可能な外部DBがなく、トレーニング済みの知識に回答は留まります。
LLM+RAGシステムの構成
事前に資料をベクトル化してデータベースに保存します。ユーザからの命令文 (プロンプト) を実行する際には、その外部DBを参照して独自の回答を生成します。
RAGで何ができるようになるのか
RAGを用いることで社内情報を参照し、自社固有の回答が生成可能です。
RAGでできるようになること
ハルシネーションの低減
独自情報を追加することでデータベースの精度が上がり、
ハルシネーションを低減することができます。
独自資料の参照
議事録や取引履歴などの独自資料を参照することが
できるため、自社固有の回答が可能になります。
社内データ利用
データベースの情報も取り込むことで、自社データを用いた
簡単な集計なども可能になります。
RAGの活用案
社内専用QAシステム
社内規定ドキュメントを読み込んでおけば、「有給申請の方法を教えて」などの質問にも回答可能です。
最適な社員エキスパートの選定
社員プロフィールを読み込んでおけば、タスクに行き詰まった際、最適な相談相手を探してもらえます。
Web会議の録画データの議事録化
Web会議を録画しておけば、自動で議事録の形に整形し、次の打合せ時に瞬時にアクセス可能です。
RAGの基本的な仕組み
RAGでは資料をベクトル化したデータベースとLLMを連携させます
ドキュメント | 抽出 | チャンキング | インデックス化 |
---|---|---|---|
LLMに回答させたい内容を含むドキュメントを準備します。無益なデータが混在していると性能の低下を招くため、取捨選択します。 | データクレンジングを行い、PDFやHTML、Markdownなど形式の異なるファイルをプレーンテキストに変換します。 | 情報を小さな単位 (チャンク) に分割します。チャンクは検索に利用されますが、適切なサイズの設定で回答精度が大きく向上します。 | チャンクと埋め込むデータ (ベクトル) をキーと値のペアの形で保存できるようにし、将来的に素早く頻繁に検索できるようにします。 |
(単語)埋め込み | ベクトルDB | LLM(大規模言語モデル) |
---|---|---|
単語を多次元ベクトル化して割り当てます。これによって、文脈上意味が類似する単語がベクトル空間内で近いと判断できます。 | 埋め込みしたベクトルを、DBに格納します。ここの出力は、ユーザの質問に含まれる状況や文脈であり、これがLLMの入力になります。 | ここまでで作成した外部のベクトルDBと連携することで、RAGを実装したLLMとなります。実装後、性能をテスト/調整を行います。 |
参考「Best Practices in Retrieval Augmented Generation」https://gradientflow.com/best-practices-in-retrieval-augmented-generation/
RAGを導入するにはどうすればよいか
「言語モデル」「ベクトルDB」「サーバ」の3つを用意する必要があります
RAGの導入には様々なパターンがあり、実現内容や工数によって変わります。ここでは3つの導入例を紹介します。
TDSEでは、お客様のニーズに合わせた最適なソリューションを提供可能です。
導入例① OpenAIが提供するRAG ※2024年1月時点
Embeddings APIを利用することでドキュメントをベクトル化できます
OpenAI API導入のポイント
①埋め込み (Embeddings) APIを利用
GPT技術を用いた文章をベクトル化するためのモデルのAPIを利用し、RAGとして利用したいドキュメントを埋め込みます。
② 最新モデルの提供
OpenAI社が提供するモデルのうち、最新のモデル*が利用可能です。このため、常に最新の性能が得られます。* GPT-4、GPT-4 Turbo、GPT-3.5が利用可能 (24年1月現在)
③ ベクトルデータベースは別途用意が必要
APIはあくまで文書をベクトル化するためのAPIのため、別途、ベクトル化したデータを保存するDB*と組合わせる必要があります。* PineconeやChroma、Weaviateなど
参考「Embeddings – OpenAI API」https://platform.openai.com/docs/guides/embeddings
導入例② Azure OpenAIが提供するRAG ※2024年1月時点
Azureを利用することで様々なユースケースに適したRAGを実装可能に
Azure OpenAI導入のポイント
①クラウド環境で利用可能
Microsoft社の提供するクラウドサービスで、別途ハードウェアやソフトウェアを用意する必要なくすぐに始められます。
② Azure内に言語モデルがあり環境や請求を一元化
UX・アプリサーバ・Azure AI Search (情報取得システム)、Azure OpenAI (生成AI用LLM*) からなり、構成を完結できます。* 主にOpenAI社が提供するGPTシリーズが利用可能ですが、最新バージョンの対応までには時差有
③ 多様なチャネルと連携可能
様々なチャネルに対応しており、RAGを利用した社内QAボットなどを外部プラットフォーム*に連携して実装することが可能です。* Facebook、LINE、Messenger、Outlook、Slack、Teamsなど
参考「Azure OpenAI Service – 高度な言語モデル」https://azure.microsoft.com/ja-jp/products/ai-services/openai-service
導入例③ LangChainライブラリでの実装 ※2024年1月時点
ライブラリ利用でLLM活用サービス開発時に高度な機能を実装できます
LangChainライブラリ導入のポイント
①ライブラリの連携で高度な実装を実現
ライブラリを利用することで、必要なモジュールを組合せ、プログラミング言語*を通じて高度な機能を実装できます。* Python、JavaScript (TypeScript) に対応 (24年1月時点)
② 使用する言語モデルの選択から可能
言語モデルAPIを使用して利用する場合は、提供元のモデルしか使用できませんが、様々な言語モデル*から選択し使用できます。* GPT (Open AI) 以外にも、Palm (Google) やLLaMA (Meta)、AlexaTM (Amazon) など
③ “Retrieval”モジュールでRAGを実現
外部のドキュメントをベクトルデータベースに格納し、必要に応じて抽出や検索を行うモジュールで、RAGを実現します。
弊社へのRAG導入依頼後のフロー
RAG用のドキュメント抽出から実装まで、TDSEにご依頼いただけます。
活用アセスメント 期間:1か月~ |
ソリューション 期間:2か月~ |
運用・活用支援 期間:応相談 |
---|---|---|
「どのような利用を想定しているのか」「ユースケースは適切であるか」「利用可能な情報や環境は何か」などの観点から、導入するRAGの方向性を明確化します。 | 業務要件の詳細なヒアリングに基づき、ベクトルDBの構築・RAGを実装したLLMの貴社環境への導入を行います。 なお、開発後にシステムの性能評価を行いますが、精度目標は定量的な基準設定が困難なため、事前の擦り合せが必要です。 |
実装後の運用に関しても、必要に応じたチューニングの改善、データベースへの資料の追加、使用に際するエラーの対応など、支援を可能です。 |