Ranking APIを解説〜生成AI検索エンジンの品質をRerankで向上〜

記事タイトルとURLをコピーする

G-gen の又吉です。今回は、RAG の精度向上に役立つ、Rerank を容易に構成できる Ranking API について紹介します。

はじめに

RAG とは

RAG とは、Retrieval Augmented Generation の略称であり、生成 AI によるテキスト生成に、外部データソースを用いて情報の根拠付けを行うアーキテクチャのことです。

生成 AI が本来持っていない情報を外部から与えることで、業務に固有の情報を加味したテキストを生成させるとともに、生成 AI が誤った情報を生成してしまう「ハルシネーション」の抑制が可能となります。

Vertex AI Search とは、Vertex AI Agent Builder の1機能であり、高機能な RAG アプリケーションを低コストでスピーディに構築できる Google Cloud のマネージドサービスです。

Vertex AI Search の概要や使い方については、以下の記事をご参照ください。

blog.g-gen.co.jp

blog.g-gen.co.jp

Vertex AI APIs for RAG

Vertex AI APIs for RAG では、Vertex AI Search の各機能を、個別の API として提供(一部は提供予定)しています。Vertex AI Search の個別機能を部品として組み合わせて、独自の検索アプリケーションを開発したいときに利用します。

Vertex AI Search は高度な RAG アプリケーションを迅速に構築できる反面、マネージドサービスであるため詳細なチューニングが難しい場合があります。このような状況では、RAG アプリケーションをスクラッチで開発することが求められます。

Vertex AI APIs for RAG を用いることで、開発者は独自でカスタマイズしたい機能だけスクラッチで構築しつつ、他の部分は Vertex AI APIs for RAG のマネージドサービスを利用することができます。

今回は、その中でも特に Ranking API について解説します。

Ranking API

概要

Ranking API とは、RAG の精度を向上させるための手法の一つである Rerank をマネージドで実装することができる Vertex AI API です。

Rerank とは

Rerank とは、検索結果をクエリとの関連性が高い順に再度並び替える手法です。

通常、セマンティック検索を実行できる ScaNN のような近似最近傍法(ANN)アルゴリズムは、検索速度には優れていますが、正確なスコアリングや順序付けにはあまり適していません。そのため、Google 検索や Vertex AI Search では、二段階の検索アプローチ が採用されています。

二段階の検索アプローチとは、まず最初に ANN Retrieval で大量のデータに対しセマンティック検索を実行し、関連性の高い候補を高速に抽出します。その後、Rerank を使用してこれらの候補をさらに精査し、クエリとの関連性が高い順に再度並び替えます。このアプローチにより、検索結果の速度と精度を最適化します。

メリット

Retrieval で取得した対象に対して Ranking API を利用することで、クエリとの関連性が高い順に再度並び替えたり、不要な検索結果を除去したりでき、RAG の精度を向上させることができます。

料金

Ranking API の料金は、1000 クエリ当たり 1 ドルです。 ただし、1 クエリで 100 件を超えるドキュメントを指定した際は、100 の倍数で 1 クエリ増加します。

また、2024年7月現在、1回の Rangin API リクエストに投げれるドキュメント数は最大 200 件となります。

例: 
  
* ランク付けドキュメント数 50 件 = 1 クエリ
* ランク付けドキュメント数 100 件 = 1 クエリ
* ランク付けドキュメント数 101 件 = 2 クエリ

検証

サンプルコード(Python)

from google.cloud import discoveryengine_v1alpha as discoveryengine
  
PROJECT_ID = {プロジェクト ID}
  
# RankServiceClient の初期化
rank_client = discoveryengine.RankServiceClient()
    
# RankingConfig のパスを取得
ranking_config = rank_client.ranking_config_path(
    project=PROJECT_ID,
    location="global",
    ranking_config="default_ranking_config",
)
  
# RankRequest の作成
request = discoveryengine.RankRequest(
    ranking_config=ranking_config,
    model="semantic-ranker-512@latest", # 使用するモデルの指定
    top_n=3,  # 返される結果の数
    query="沖縄の観光スポットについて教えてください", # 検索クエリ
    records=[ # ランキング対象となるレコードのリスト
        discoveryengine.RankingRecord(
            id="1",
            title="沖縄のビーチリゾート",
            content="沖縄には万座ビーチ、アラハビーチ、砂山ビーチなど、美しいビーチが数多くあります。",
        ),
        discoveryengine.RankingRecord(
            id="2",
            title="沖縄のグルメガイド",
            content="沖縄にはゴーヤチャンプルー、沖縄そば、タコライスなど、地域ならではのグルメを楽しむことができます。",
        ),
        discoveryengine.RankingRecord(
            id="3",
            title="沖縄の人気観光地ランキング",
            content="沖縄には国際通り、沖縄美ら海水族館、首里城など数多くの観光スポットがあります。",
        ),
    ],
)
  
 # ランク付けリクエストの送信とレスポンスの取得
response = rank_client.rank(request=request)
  
# 出力
print(response)

出力

出力結果は以下になります。 沖縄の観光スポットに関連が高い順序に並び替えられつつ、スコアリングの出力も確認できました。

records {
  id: "3"
  title: "沖縄の人気観光地ランキング"
  content: "沖縄には国際通り、沖縄美ら海水族館、首里城など数多くの観光スポットがあります。"
  score: 0.6299999952316284
}
records {
  id: "1"
  title: "沖縄のビーチリゾート"
  content: "沖縄には万座ビーチ、アラハビーチ、砂山ビーチなど、美しいビーチが数多くあります。"
  score: 0.49000000953674316
}
records {
  id: "2"
  title: "沖縄のグルメガイド"
  content: "沖縄にはゴーヤチャンプルー、沖縄そば、タコライスなど、地域ならではのグルメを楽しむことができます。"
  score: 0.2199999988079071
}

又吉 佑樹(記事一覧)

クラウドソリューション部

はいさい、沖縄出身のクラウドエンジニア!

セールスからエンジニアへ転身。Google Cloud 全 11 資格保有。Google Cloud Champion Innovator (AI/ML)。Google Cloud Partner Top Engineer 2024。Google Cloud 公式ユーザー会 Jagu'e'r でエバンジェリスト。好きな分野は生成 AI。