生成AIの常識を変える!RAGで実現する、あなただけのパーソナルAIアシスタント

更新日:2024-09-22
生成AIとは?
生成AIとは、文章、画像、音楽など、まるで人間が作ったかのような新しいコンテンツを生成できる人工知能のことです。
Geminiや、Chat GPTなどが公開され、利用されています。
検索エンジンよりもより自然な言語で質問でき、質問に応じた回答を生成してくれることから、情報収集に活用したり、ちょっとした画像や文章の作成に用いられることがあります。
生成AIは、私たちの生活にも徐々に影響を与えています。
RAGとは?
RAGとは、Retrieval Augmented Generationの略で、検索拡張生成と訳されます。
RAGは、大規模言語モデル(LLM)が生成するテキストに、外部の知識ベースから検索した情報を組み込む技術です。
より具体的に言うと、RAGは、ユーザーの質問に対して、LLMが単に過去の学習データに基づいて回答するだけではなく、最新の情報を検索エンジンなどから取得し、その情報を加味してより正確で関連性の高い回答を生成するための技術です。
RAGが注目される理由は、従来のLLMが抱えていたいくつかの課題を解決できるからです。
- 情報の鮮度: LLMは、学習時に与えられたデータに基づいて回答するため、学習後の世界の変化に追従することが苦手でした。RAGは、最新の情報をリアルタイムで検索できるため、この問題を解決できます。
- 専門性の高い質問: LLMは、幅広い知識を持っていますが、特定の分野の専門知識については、必ずしも正確な回答ができるとは限りません。RAGは、専門的な知識が蓄積された外部のデータを参照することで、より専門性の高い質問にも対応できます。
- ハルシネーション: LLMは、存在しない事実をあたかも事実であるかのように生成してしまう「ハルシネーション」と呼ばれる問題を起こすことがあります。RAGは、外部の知識ベースを参照することで、ハルシネーションを減らすことができます。
RAGの設定に必要なもの
RAGの設定には、大きく分けて以下の要素が必要となります。
私は、GCP(Google Cloud Platform)を使った開発が多い環境で仕事をしているので、GCPのVertex AIを使った設定に触れる機会が多いです。
簡単なRAGの設定であれば、それほど細かい作業をしなくても行えます(Python の RAG クイックスタート)。
1. データ
- 知識ベース: RAGが参照する情報源となるデータベースです。テキストデータ、PDF、Webページなど、様々な形式のデータが利用可能です。
- ユーザークエリ: RAGに与えられる質問や指示です。このクエリと知識ベース内の情報との関連性を計算することで、適切な情報が検索されます。
2. モデル
- エンコーダー: テキストデータを数値ベクトルに変換するモデルです。BERTやRoBERTaなどの事前学習済みモデルが一般的に利用されます。
- 検索エンジン: 知識ベースから、ユーザークエリと最も関連性の高い情報を検索するモデルです。ベクトルデータベースや検索エンジンライブラリが利用されます。
- デコーダー: 検索結果とユーザークエリを組み合わせ、最終的な回答を生成するモデルです。LLM(大規模言語モデル)が一般的に利用されます。
3. ツール・フレームワーク
- RAGフレームワーク: Langchain、Haystackなど、RAGの構築を支援するフレームワークがあります。これらのフレームワークを利用することで、RAGの開発を効率的に行うことができます。
- ベクトルデータベース: エンコーダーで生成されたベクトルデータを格納し、高速な検索を可能にするデータベースです。Pinecone、Weaviateなどが代表的です。
- クラウドプラットフォーム: Google Cloud、AWS、Azureなどのクラウドプラットフォーム上で、RAGを構築するための様々なサービスが提供されています。
この数年で、AIがぐっと身近な存在となり、具体的な活用方法がどんどん出てきています。
技術を使いこなし、世に役立つサービスを生み出していきたいです。