Dify のRAGバックエンドベクトルストアにTiDB Vector Search を設定する その3 Jina AI
前回までの記事で、個人情報保護委員会のPDFの内容をベクトル化してTiDB Serverless Vector Search に格納し、自然言語で検索可能となるRAGを構成しました。
この記事ではさらにその環境に対してとあるウェブサイトを情報ソースとして追加します。つまり指定したURLの内容をチャンクに分割しベクトル化しTiDB Serverless Vector Searchに格納します。
前回同様Dify経由でノーコードで作業が可能です。
Webサイトの読み込みにはJina AIを用います。
Jina AI リーダーとは
文書やテキストデータを解析し、ユーザーが求める情報を迅速に取り出すためのAIツールです。例えば、質問応答や要約、情報検索などに特化した機能を持ち、様々な業界で活用されています。特にURLの読み取りは便利で、例えばhttps://www.pingcap.com/
を解析したい場合単純にhttps://r.jina.ai/https://www.pingcap.com/
へアクセスするだけで構造解析結果が出力されます。
さっそくやってみる
1. Jina AI リーダー API Keyの取得
https://jina.ai/reader/
へアクセスします。
ログイン不要でAPIキーが入手できます。
2. Dify で 追加ナレッジの構築
画面上部のタブでナレッジ
をクリックします。
ナレッジを作成
をクリックします。
ウェブサイトから同期
→Jina Reader
をクリックし、先ほどのAPIキーをセットします。
このURLを指定し実行
をクリックします。デフォルトでは最大10のサイトまで再帰的にクローリングしてくれます。
保存して処理
をクリックしてしばらく待ちます。以下のように順次ページがクローリングされます。
スタジオからナレッジの追加
読み取りが完了したら過去作成したアプリケーションに対して追加でナレッジを投入します。
プレビューテストを行うと以下のようになります。
正しく動作しない場合reranker
をオフにしてみて下さい。
TiDB側では以下のようにナレッジごとにテーブルが別に作成されベクトル化されたデータが保有されています。
通常ベクトルデータは同じモデルにより生成された同じ次元を保有する物のみをテーブルに格納しないと検索が正しく動作しません。このDifyの仕組みは複数のモデルや複数の次元を混在できるので便利です。
Discussion