16
13

RAGの精度向上! CohereからRerank 3 Nimbleが登場。SageMakerでリランク試してみよう

Last updated at Posted at 2024-07-23

Cohereの最新リランク用モデルが登場!

生成AIで有名なCohere社から、リランク用途の最新モデル「Rerank 3 Nimble」がリリースされました。英語版と多言語版が用意されています。

※ちなみにNimbleは「機敏な」という意味で、Turbo的な命名と捉えておけばよさそうです。

クラウドではAWSのみ対応。SageMaker JumpStartから利用可能です。

リランクって何だっけ?

生成AIでよく行われる「社内文書検索」などのユースケースを実現するRAG(Retrieval-Augmented Generation)アーキテクチャにおいて、検索精度を高めるために使われる手法の一つです。

検索して得られたドキュメントのチャンク(かたまり)複数を、ユーザーの質問と関連度が近い順番に並び替える(その後、関連度が低いものは適宜切り捨てる)ことによって、より正確な回答の生成に繋げることができます。

このリランク処理を行うための専用モデルも存在し、その一つがCohereのRerankシリーズです。

ちなみにCohere社はRAGに特に力を入れており、フラッグシップLLMのCommand RシリーズもRAGに特化したモデルとなっています。

有名なRAGの論文の筆頭著者であるパトリック・ルイス氏も、現在はCohereで研究員をされているようです。

なお、AWSでは生成AIモデルをサーバーレスで利用できるAmazon Bedrockというサービスがありますが、残念ながらCohereのRerankシリーズは長らくラインナップされていません。

AWSで実際に使ってみよう

前述のCohere公式ブログによると、Rerank 3 Nimbleは7/30よりSageMakerで発売予定とされていますが、すでにAWS Marketplaceからサブスクライブ可能でしたので試してみます。

上記をサブスクライブして、設定に進みます。

スクリーン ショット 2024-07-24 に 08.37.23 午前.png

SageMaker用の設定を利用すると、そのままマネジメントコンソールの作成ウィザードに進めます。

スクリーン ショット 2024-07-24 に 08.45.22 午前.png

エンドポイント(稼働用インスタンス)を設定すると、モデルをデプロイできます。

スクリーン ショット 2024-07-24 に 08.43.01 午前.png

これを実際にPythonで利用してみましょう。コードは以下を参考にします。

私は手元のMacでVSCodeから実施しました。

nimble.py
from cohere_aws import Client

co = Client(region_name="ap-northeast-1")
co.connect_to_endpoint(endpoint_name="ここにエンドポイント名を入れる")

documents = [
    {"Title":"カブトムシ","Content":"カブトムシは昆虫です"},
    {"Title":"人間","Content":"人間は哺乳類です"},
    {"Title":"サンマ","Content":"サンマは魚です"},
    {"Title":"ロボット","Content":"ロボットは機械です"},
    {"Title":"小麦","Content":"小麦は植物です"},
]

response = co.rerank(
    documents=documents, 
    query='この中で食べられるものはどれ?', 
    rank_fields=['Title','Content'], 
    top_n=5 #ドキュメントの上位何件をピックアップするか指定
)

print(response)

実行前に以下ライブラリのインストールが必要です。distutils が無いと怒られますが、Claude先生に聞いたところPython 3.12では setuptools をインストールすれば良いようでした。

pip install cohere_aws setuptools

実行すると、クエリーに従ってドキュメントをいい感じに並び替えてくれました!5つの文書が、食べられそうな順にちゃんとリランクされていますね。

[
    RerankResult<document: {'Title': '小麦', 'Content': '小麦は植物です'}, index: 4, relevance_score: 0.00075835997>, 
    RerankResult<document: {'Title': 'サンマ', 'Content': 'サンマは魚です'}, index: 2, relevance_score: 0.00031999825>, 
    RerankResult<document: {'Title': 'カブトムシ', 'Content': 'カブトムシは昆虫です'}, index: 0, relevance_score: 0.00024346047>, 
    RerankResult<document: {'Title': '人間', 'Content': '人間は哺乳類です'}, index: 1, relevance_score: 6.352189e-05>, 
    RerankResult<document: {'Title': 'ロボット', 'Content': 'ロボットは機械です'}, index: 3, relevance_score: 3.9751925e-05>
]

※SageMakerのエンドポイントはランニングコストが高くつきがちなので、検証後すぐに削除することを忘れないでください。

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13