🎉

Pineconeでrerankが使用できるようになったので試してみた(パブリックプレビュー)

2024/08/29に公開

こんにちは。そのだです。
Pineconeでrerankが使用できるようになった(パブリックプレビュー)ので、試してみました。
https://www.pinecone.io/blog/introducing-reranking-to-pinecone-inference/

前提

以下の工程が済んでいる前提で行います。

  • Pineconeのアカウントを作成する
  • PineconeのAPI_KEYを取得する

rerankとは

rerankとはRAGにおける検索精度を高めるために使用される手法の一つで、クエリの文脈やニュアンスを考慮しながら、各ドキュメントとクエリの関連性を評価します。これにより、ベクトルを使った事前計算された単純な類似度だけでなく、クエリの意図や文脈に応じたスコアを付けることが可能になり、精度が向上すると言われています。

rerankについて具体的に知りたい方は、以下のドキュメントを参照ください。
https://www.pinecone.io/learn/series/rag/rerankers/#References

現在、Pineconeで使用できるrerankのモデルはbge-reranker-v2-m3です。
ドキュメントを確認したところ、多言語対応しているモデルでした。
https://huggingface.co/BAAI/bge-reranker-v2-m3

Pineconeでrerankを試してみる

インストール

下記のコマンドでライブラリをインストールします。

pip install -U pinecone-client
pip install -U --pre pinecone-plugin-inference==1.1.0rc0

検証

「Tell me about Apple's products(アップルの製品について教えて)」と言う質問に対し、下記のドキュメントからrerankingします。

  1. Apple is a popular fruit known for its sweetness and crisp texture.(アップルは、その甘さとシャキシャキした食感で知られる人気の果物である)
  2. Apple is known for its innovative products like the iPhone.(アップルはiPhoneのような革新的な製品で知られている)
  3. Many people enjoy eating apples as a healthy snack.(多くの人がリンゴをヘルシーなスナックとして楽しんでいる)
  4. Apple Inc. has revolutionized the tech industry with its sleek designs and user-friendly interfaces.(アップル社は、その洗練されたデザインとユーザーフレンドリーなインターフェイスでハイテク業界に革命を起こした)
  5. An apple a day keeps the doctor away, as the saying goes.(1日1個のリンゴは医者を助ける)

パッと見た感じ、2の文章が質問と関係のある文章であることがわかります。
検証するために、以下のコードを実行します。

from pinecone import Pinecone

pc = Pinecone(API_KEY)

query = "Tell me about Apple's products"
results = pc.inference.rerank(
    model="bge-reranker-v2-m3",
    query=query,
    documents=[
"Apple is a popular fruit known for its sweetness and crisp texture.",	
"Apple is known for its innovative products like the iPhone.",
"Many people enjoy eating apples as a healthy snack.",
"Apple Inc. has revolutionized the tech industry with its sleek designs and user-friendly interfaces.",
"An apple a day keeps the doctor away, as the saying goes.",
    ],
    top_n=3,
    return_documents=True,
)
print(query)
for r in results.data:
  print(r.score, r.document.text)

すると、下記の結果が得られます。

Tell me about Apple's products
0.83991605 Apple is known for its innovative products like the iPhone.
0.23102611 Apple Inc. has revolutionized the tech industry with its sleek designs and user-friendly interfaces.
0.17438118 Apple is a popular fruit known for its sweetness and crisp texture.

2の文章のスコアが0.83991605で一番良いことがわかります。
次は質問の内容を日本語にして、同様に検証してみます。
以下が結果です。

アップル製品について教えてください
0.72222126 アップルはiPhoneのような革新的な製品で知られている
0.32898772 アップルは、その甘さとシャキシャキした食感で知られる人気の果物である
0.2791388 アップル社は、その洗練されたデザインとユーザーフレンドリーなインターフェイスでハイテク業界に革命を起こした。

日本語の場合でも、2の文章が一番スコアが良いことがわかります。
これにより、きちんとリランキングされていることがわかりました。

まとめ

まだプレビュー版ですが、Pineconeでrerankが使用できることがわかりました。Amazon Bedrockではまだrerankモデルを使用できないはず(2024年8月29日時点)なので、VectorDBとしてPineconeを使っている身からするととても嬉しいアップデートです。料金に関してですが、2024年8月31日まではすべてのユーザーに無料でパブリックプレビューとして提供され、9月以降はbge-reranker-v2-m3へのリクエストごとに0.002ドルかかるそうです。これを機に試してみてはいかがでしょうか。

Fusic 技術ブログ

Discussion