公開日 2026年10月08日
更新日 2026年10月08日
JoruriAgent(チャットボット)のRAG機能の操作マニュアルです。
RAGのしくみ
RAGのしくみは下記の通りです。

事前準備
Webページをクローリングし、生成AIが参照できるようにインデキシングを実施します。
- WebページをクロールしてDBテーブルに登録
1日に1回、サイトの記事ページを取得(クロール)してDBテーブルに登録します。 - テキストをチャンキング(分割)
記事ページのテキスト(タイトルと本文)を一定のサイズに分割して、DBテーブルに登録します。 - テキストをBERTに入力
テキストをBERT(Bidirectional Encoder Representations from Transformers)に入力します。 - テキストをベクトルに変換
BERTがテキストをベクトルに変換します。 - Elasticsearch(検索エンジン)にテキストとベクトルを保存
テキストとベクトルをElasticsearchに保存して検索できるようにします。
これをインデキシングと呼びます。
生成AIによる回答作成
ユーザーが入力した質問からページを検索し、検索したページを参照して生成AIが回答を作成します。
- ユーザーの質問をBERTに入力
ユーザーの質問をBERTに入力します。 - 質問のテキストをベクトルに変換
事前準備の3.と同様にBERTが質問のテキストをベクトルに変換します。 - 検索処理を実行
質問のテキストで全文検索を実行、ベクトルでベクトル検索を実行します。
その後、各々の検索結果をRPF(Reciprocal Rank Fusion)で統合します。 - 検索結果に対応するWebページのテキストを取得
検索結果に対応するWebページのテキストを取得します。 - LLMへ入力するプロンプトを作成
ページのテキストをベースにLLMへ入力するプロンプトを作成します。 - プロンプトをLLMへ入力
作成したプロンプトをLLMへ入力します。この時、LLMへのシステム指示も入力します。 - LLMの出力を表示
LLMの出力を公開画面に表示します。
利用しているモジュール
| RAG | Python 3.11 |
|---|---|
| FastAPI + Transformers(エンベディングAPI) | |
| Elasticsearch 9.3.4 | |
| Gemini API |