前回の記事ではクラウド上でローコードで生成AIアプリを開発可能なDifyを使い、OpenAI用チャットボットを作成しそのAPIをPostmanから呼び出す手順を試しました。
今日は生成AIアプリ開発、ローカルのデータストアを用いたRAG開発おいてよく使われるJina AI
のAPIをPostmanから呼び出していきます。
Jina AI とは
https://jina.ai/
AIを用いた検索・情報抽出システムの一部です。Jinaは、特に画像、テキスト、音声、動画など、様々なメディア形式に対して効率的な検索や処理を行うためのツールを提供しています。その中で、Jina Readerは、情報を「読み取る」ために設計されたコンポーネントです。
これを用いることでRAGのベクトルデータベースにベクトル化して埋め込むデータソースに特定WebサイトのURL等を簡単にクローラーの開発不要で指定することが可能になります。
Jina AI 単独でもウェブ上の情報を検索し出力を得るAPIを操作することが出来ますので、今日はこちらのAPIをPostmanからコールしてみます。
さっそくやってみる
1. Jina AI の APIキー入手
Jina AI にはクレジットカードどころかログインも不要でテスト可能なAPIキーがなんとトップページに配置されています。この記事の手順ぐらいであればそれで完結します。(パフォーマンスや呼び出し回数などは制限がかかっていることに注意して下さい)
まずはトップページにアクセスしてください。
画面一番下のAPIキーをコピーしておきます。
2. Jina AI 上でのテスト
ブラウザから検索を実行可能なインターフェースがありますのでテストを行います。
https://r.jina.ai/https://example.com
にブラウザでアクセスすると以下の値表示されるはずです。
Title: Example Domain
URL Source: https://example.com/
Markdown Content:
This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
[More information...](https://www.iana.org/domains/example)
一方ブラウザで直接https://example.com/
にアクセスを行うと以下が表示されます。
何が行われているのか?
例えばこのサイトの情報をベクトル化してRAGで検索対象をすることを考えます。画面の見た目を構成するスタイルシートや画像、HTMLのタグなどは不要です。その純粋なHTMLに含まれている情報のみを必要としています。
Jina AIを通すことでこれらの情報を削除してくれています。
次に検索も試します。
ブラウザで読み込むだけではAPIキーが渡らないため、画面の少し右下にある部分をクリックします。
以下のような情報が出力されます。
[1] Title: ガンダムで「アムロ行きます!」って有名なセリフがありますが、実際には一回しか... - Yahoo!知恵袋
[1] URL Source: https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13138416088
[1] Description: ガンダムで「アムロ行きます!」って有名なセリフがありますが、実際には一回しか言ってないと会社の同僚に聞いたのですが本当ですか? 出動するたびに毎回言う決めゼリフだ思っていたのですが・・・ · ...
[2] Title: 「機動戦士ガンダム」のあのセリフ、実は一回しか言ってない?
[2] URL Source: https://dhits.docomo.ne.jp/feed/10013014
[2] Description: 「機動戦士ガンダム」の定番のセリフといえば、ガンダム出撃時に言う「アムロ、行きまーす」ですが、実はこのセリフはアニメでは一度しか言ったことがないというのをご存知でしょうか? 他の回で「アムロ、ガン...
[3] Title: アムロ行きます!全長18メートルの動くガンダム
[3] URL Source: https://twitter.com/ReutersJapan/status/1333643179254370304
[3] Description: アムロ行きます!全長18メートルの動くガンダム
<snip>
Jina AI自体はRAGではなく普通に検索エンジンとしてWebから情報を引っ張ってきているため、質問に対する直接的な答えではありません。これらの情報をベクトルストアに蓄積することで自然な回答が出来るようになります。
3. Postman でのAPIコールテスト
curl https://s.jina.ai/%E3%82%A2%E3%83%A0%E3%83%AD%E3%81%A8%E3%81%AF%E3%81%A0%E3%82%8C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F \
-H "Authorization: Bearer jina_ad6ed0a7198d491282d7cd82631106f0q_uZrvbg3BY_OPjWrRUQVjgEnCJx" \
-H "X-Retain-Images: none"
この画面で表示されるcurlコマンドをPostmanコレクションにインポートします。
インポート後は一度送信
ボタンをクリックしテストを行います。先ほどと同じレスポンスが戻るはずです。
ヘッダーは以下のようになっています。
4. 変数による質問文の入れ替え
質問を切り替えてテストを行いたい場合変数を使うと便利です。まず質問文を以下の通り{{query}}
に置き換えます。
環境を作成します。
環境が出来たら環境中に変数を登録します。
そして以下のようにコレクションから先ほど指定した環境を設定すると変数名が青く表示され中身を認識します。
5. いくつかのオプション
Jina AIにはレスポンスを戻す際にいくつかのオプションが存在しています。
・POSTオプション:通常はGETを用いますが、POSTを用いたい場合以下の通り単純に切り替えるだけです。Jina側の設定変更は不要です。
・Markdownオプション
以下のHTTPヘッダーをリクエスト時に渡すとレスポンスがmarkdownになります。
X-Return-Format: markdown
・画像出力オプション
最初から設定されている以下のヘッダーを外すと画像のurlが表示されるようになります。
X-Retain-Images: none
ただし画像そのものが表示されるわけではありません。
その他オプションはこちらから確認可能です。
https://jina.ai/api-dashboard