ニュース
モデル
製品
keyboard_arrow_down
読者
URL を読み取ったり検索したりすると、大規模なモデルのサポートが向上します。
ベクトルモデル
世界クラスのマルチモーダル、多言語埋め込み。
並べ替え者
検索の関連性を最大化する世界クラスのニューラルレトリーバー。
ディープサーチ
最善の答えが見つかるまで、検索し、読み、推論してください。
もっと
keyboard_arrow_down
分類子
画像とテキストのゼロショットおよび少数ショットの分類。
スライサー
長いテキストをチャンクまたはトークンに分割します。

APIドキュメント
AIプログラミングアシスタントIDEまたは大規模モデル用のコードを自動生成
open_in_new


会社
keyboard_arrow_down
私たちについて
営業担当者に問い合わせる
インターンプログラム
参加しませんか
open_in_new
ロゴをダウンロード
open_in_new
利用規約


ログイン
login
リランカーとは何か
jina-reranker-v1-base-en を使用する理由
始める前に:LlamaIndex のノード後処理について
Google Colab で一緒に進める
結論
技術記事
3月 07, 2024

Jina Reranker と LlamaIndex による高精度な RAG

まさにそう! Jina Reranker と LlamaIndex であなたの RAG を次のレベルに引き上げましょう。
Collaborative graphic with "RERANKER" and "Llamalindex" logos over a purple background with crossed white abstract lines.
Francesco Kruk
Saahil Ognawala
Francesco Kruk, Saahil Ognawala • 7 読む時間

bi-encoder モデル(Jina Embeddingsなど)は事前に計算された埋め込みのデータベースから多くの一致ドキュメントを素早く取得できますが、リランカーモデルはユーザーのクエリと取得したドキュメントをクロスエンコーディングする、より遅いものの正確なアプローチを使用してこのセットを絞り込むことができます。Jina AI は最初のリランカーモデルであるjina-reranker-v1-base-enをリリースしました。この記事では、リランカーが RAG の精度を最適化するために不可欠である理由と、Jina Embeddings/Reranker、LlamaIndex、および Mixtral-8x7B-Instruct-v0.1 言語モデル(HuggingFace でホスト)を使用して最先端の RAG システムを構築する方法について詳しく説明します。

必要なもの:

  • Jina Embeddings と Reranker API の統合キー
  • HuggingFace アカウントとトークン
Reranker API
Maximize the search relevancy and RAG accuracy at ease

Jina Embeddings と Reranker モデル、および Mixtral はリモートで実行され、RESTful API を介してアクセスされるため、特別なハードウェアは必要ありません。

tagリランカーとは何か

チュートリアルを続ける前に、リランカーとは何かを理解することが重要です。リランカーとは何か、そしてなぜ Jina Reranker V1 があなたにとって最適な選択なのかを完全に理解するために、続行する前に Jina Reranker V1 のリリース記事をお読みください。

Maximizing Search Relevance and RAG Accuracy with Jina Reranker
Boost your search and RAG accuracy with Jina Reranker. Our new model improves the accuracy and relevance by 20% over simple vector search. Try it now for free!

要約すると、リランカーはクロスエンコーダーモデルで、ドキュメント-クエリのペアを入力として受け取り、その入力ペアに対する関連性スコアを出力します。リランカーを使用することで、ユーザーは特定のクエリに対してドキュメントを最も関連性の高いものから低いものまで並べ替えることができます。

tagjina-reranker-v1-base-en を使用する理由

リランキングは、埋め込みモデルのみを使用する場合よりもはるかに関連性の高い情報を提供します。私たちのモデルリリース記事では、Jina Reranker がオープンソースおよびクローズドソースの競合他社と比較して際立っており、ヒット率で 8%、平均逆順位で 33% の検索システムの改善を実現できることを実証しました。

これは、適用された RAG ソリューションを通じて得られる応答の品質に直接的な影響を与えます。この主張を裏付ける理論とともに、LlamaIndex で構築された RAG パイプラインに Jina Reranker がどのような効果をもたらすかを実例で示します。

tag始める前に:LlamaIndex のノード後処理について

LlamaIndex のノード後処理は、クエリエンジン内で検索後かつ応答生成前にノードを変換またはフィルタリングするモジュールです。このパッケージの一部として、LlamaIndex は組み込みオプションとカスタム追加のための API の両方を提供しています。

Jina Reranker は現在、LlamaIndex にノード後処理として統合されています。応答の精度を向上させるために、取得されたノードはクエリとの関連性に基づいて再順序付けされ、上位 N 個のノードが返されます。

tagGoogle Colab で一緒に進める

このチュートリアルには、Google Colab またはローカルで実行できる付属のノートブックがあります。

llama_index/docs/docs/examples/node_postprocessor/JinaRerank.ipynb at main · run-llama/llama_index
LlamaIndex is a data framework for your LLM applications - run-llama/llama_index
GitHubrun-llama

tagデータセット:2024 Nike Kids 製品カタログ

RAG アプリケーションにおける Jina Reranker のパフォーマンス向上を示すために、2024 Nike Kids 製品カタログをデータセットとして選択しました。このドキュメントには、2024 年に Nike が提供する子供向け製品の構造化されたセットが含まれています。このデータセットを選んだのは、リランカーの効果が明確に示され、多くのユーザーに分かりやすいためです。

tag前提条件のインストール

必要な要件をインストールするには、以下を実行します:

pip install llama-index-postprocessor-jinaai-rerank
pip install llama-index-embeddings-jinaai
pip install llama-index
pip install llama-index-llms-huggingface
pip install "huggingface_hub[inference]"

tagMixtral LLM へのアクセス

Mixtral-8x7B-Instruct-v0.1 LLM を使用するには、HuggingFace トークンが必要です。

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

hf_inference_api_key = "<your HuggingFace access token here>"

mixtral_llm = HuggingFaceInferenceAPI(
    model_name="mistralai/Mixtral-8x7B-Instruct-v0.1",
    token=hf_inference_api_key,
)

tagJina Embeddings と Jina Reranker へのアクセス

Jina Embeddings と Jina Reranker を使用するには、専用のAPI キーが必要です。これを api_key という変数に保存し、LlamaIndex から Jina Embeddings モデルを呼び出します:

from llama_index.embeddings.jinaai import JinaEmbedding

api_key = "<your Jina key here>"
jina_embeddings = JinaEmbedding(api_key=api_key)

同様に、Jina Reranker モデルを呼び出すことができます。top_n パラメータを設定することで、最終出力で返される最も関連性の高いドキュメントの数を決定できます。この場合、top_n=2:

from llama_index.postprocessor.jinaai_rerank import JinaRerank

jina_rerank = JinaRerank(api_key=api_key, top_n=2)

tag2024年 Nike キッズ製品カタログのダウンロード

データをダウンロードするには、以下のコードを実行します:

from llama_index.core import SimpleDirectoryReader
import requests

url = '<https://niketeam-asset-download.nike.net/catalogs/2024/2024_Nike%20Kids_02_09_24.pdf?cb=09302022>'
response = requests.get(url)

with open('Nike_Catalog.pdf', 'wb') as f:
    f.write(response.content)

reader = SimpleDirectoryReader(
    input_files=["Nike_Catalog.pdf"]
)

documents = reader.load_data()

tagJina Embeddings によるエンベディングの生成とインデックス作成

セットアップが完了したので、エンベディングベクトル(ノード)を生成してインデックスを作成します。Jina Embeddings v2 モデルは最大 8192 トークンの入力を受け付けるため、このような文書の場合、さらなるテキストの分割やセクションのトークン数のチェックは必要ありません。文書のエンベッドとインデックス作成を行うには、以下のコードを実行します:

from llama_index.core import VectorStoreIndex

index = VectorStoreIndex.from_documents(
    documents=documents, embed_model=jina_embeddings
)

tagJina Reranker を使用しないクエリ結果の取得

このテキストセットから特定の情報を検索する際、LlamaIndex の query_engine は以下の処理を行います:

  1. Jina Embeddings V2 を使用してクエリのエンベディングを作成します。
  2. インデックスを使用して、クエリエンベディングとのコサイン類似度が最も高い top_k = 10 の保存されたエンベディングを取得し、そのインデックス内の位置を返します。
  3. ベクトルデータ配列内の対応するテキストを検索します。

最高の Nike ジャージの生地について質問してみましょう:

query_engine = index.as_query_engine(
    similarity_top_k=10, llm=mixtral_llm
)
response = query_engine.query(
    "What are the best padded pants that Nike sells?",
)

print(response.source_nodes[0].text)

結果:

NIKE KIDS  EQUIPMENT87NIKE BRASILIA SMALL DUFFEL 9.5 
DM3976 $37.00
SIZES: Misc  OFFER DATE: 07/01/22  END DATE: 07/01/25
Tough 600D polyester • Durable 300D polyester • Detachable shoulder
strap • Ventilated shoe or wet/dry storage • Secure zip pocket • 
Limited lifetime guarantee • Screened Swoosh design trademark
DIMENSIONS:  20" L x 10" W x 11" H 
010 Black/Black/(White) 068 Iron Grey/Black/(White)
...
Three Nike Brasilia Small Duffel Bags, $37 each, in black, grey, navy with features listed and offer dates from 07/01/22 to 0

tagReranker を使用したクエリ結果の取得

次に、RAG アプリケーションが異なる、より関連性の高い結果を生成するかどうかを確認するために、reranker を適用します。そのためには、query_engine に node_postprocessors を追加する必要があります:

query_engine = index.as_query_engine(
    similarity_top_k=10, llm=mixtral_llm, node_postprocessors=[jina_rerank]
)
response = query_engine.query(
    "What are the best padded pants that Nike sells?",
)

print(response.source_nodes[0].text)

reranker を使用しない前のケースと比較して、query_engine には [jina_rerank] に設定された node_postprocessors パラメータが含まれるようになったことに注意してください。

結果:

NIKE KIDS  FOOTBALL – STOCK10
DJ5731 $47.00
SIZES:  XS, S, M, L, XL, 2XL, 3XL
FABRIC:  Body/panels lining: 100% polyester. Pad: 100%
ethylene vinyl acetate.
OFFER DATE:  04/01/23
END DATE:  04/01/27
Take the field ready to give it your all in the Nike Recruit
Pants. They're made from lightweight, stretchy fabric with
sweat-wicking power to help keep you dry and moving freely
when the game heats up. With integrated pads shaped for a
comfortable fit, you'll be prepared for a performance you can
be proud of. Choose from 6 different colors to outfit your
team. Nike Dri-FIT technology moves sweat away from your skin
for quicker evaporation, helping you stay dry and comfortable.
Lightweight knit fabric stretches with you to let you move
naturally. Thigh, knee, hip and tailbone pads are shaped for
an optimal fit, without compromising on coverage. A
body-hugging fit is designed to help keep the padding in place
and close to the body. Belt at the waist lets you dial in your
perfect fit to maximize comfort. Elastic at hems.
Hip width: 15", Inseam length: 11.75" (size medium).
010 Black/(White) 060 Team Anthracite/(White) 100 White/(Black)
419 Team Navy/(White) 493 Team Royal/(White) 657 Team Scarlet/(White)

Product display of boys' Nike DF Stock Recruit Pants with sizes, pricing, and various color options highlighted.

tag結論

見ての通り、reranker を使用しないクエリでは、「通気性のためのメッシュバック」と「ソフトな肌触りのスリムフィット」に言及したトップ結果が得られました。対照的に、reranker を使用することで、「最適な通気性のために設計」され、「試合当日のプレッシャーの下でも乾燥した状態を保つ水分吸収デザイン」を備え、「リラックスした、着やすいフィットの軽量生地」を特徴とするトップ結果が得られました。

2 番目の結果は、私たちが投げかけたクエリに対してはるかに正確で適切なものでした。最後の 2 つの投稿で、私たちは理論的および実践的な観点から、RAG パイプラインに Jina Reranker を追加することで検索精度が向上し、それから得られる応答の質が改善されることを示しました。

カテゴリー:
技術記事
rss_feed
オフィス
location_on
カリフォルニア州サニーベール
710 Lakeway Dr、Ste 200、サニーベール、CA 94085、アメリカ合衆国
location_on
ドイツ、ベルリン(本社)
Prinzessinnenstraße 19-20、10969 ベルリン、ドイツ
location_on
中国、北京
中国北京市海淀区西街48号ビル6号5階
location_on
深セン、中国
ルーム 402、4 階、福安テクノロジービル、深セン、中国
検索ベース
読者
ベクトルモデル
並べ替え者
ディープサーチ
分類子
スライサー
APIドキュメント
Jina APIキーを取得する
レート制限
APIステータス
会社
私たちについて
営業担当者に問い合わせる
ニュース
インターンプログラム
参加しませんか
open_in_new
ロゴをダウンロード
open_in_new
条項
安全性
利用規約
プライバシー
Cookieを管理する
email
Jina AI © 2020-2025.