🤖

Dify のRAGバックエンドベクトルストアにTiDB Vector Search を設定する その3 Jina AI

2025/01/11に公開

前回までの記事で、個人情報保護委員会の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/へアクセスするだけで構造解析結果が出力されます。
https://jina.ai/reader/

さっそくやってみる

1. Jina AI リーダー API Keyの取得

https://jina.ai/reader/へアクセスします。
https://jina.ai/reader/
ログイン不要でAPIキーが入手できます。

2. Dify で 追加ナレッジの構築

画面上部のタブでナレッジをクリックします。

ナレッジを作成をクリックします。

ウェブサイトから同期Jina Readerをクリックし、先ほどのAPIキーをセットします。

https://ja.wikipedia.org/wiki/機動戦士ガンダム
このURLを指定し実行をクリックします。デフォルトでは最大10のサイトまで再帰的にクローリングしてくれます。
保存して処理をクリックしてしばらく待ちます。以下のように順次ページがクローリングされます。

スタジオからナレッジの追加

読み取りが完了したら過去作成したアプリケーションに対して追加でナレッジを投入します。


プレビューテストを行うと以下のようになります。


正しく動作しない場合rerankerをオフにしてみて下さい。

TiDB側では以下のようにナレッジごとにテーブルが別に作成されベクトル化されたデータが保有されています。

通常ベクトルデータは同じモデルにより生成された同じ次元を保有する物のみをテーブルに格納しないと検索が正しく動作しません。このDifyの仕組みは複数のモデルや複数の次元を混在できるので便利です。

Discussion