RERANK
より関連性の高い検索出力を取得するために、結果の初期セットを再評価および並替えするには、DBMS_VECTOR.RERANK
ファンクションを使用します。
用途
類似検索シナリオと検索拡張生成(RAG)シナリオの両方で検索結果の関連性と品質を向上させます。
再ランク付けは、最も関連性の高いドキュメントまたはチャンクが優先されるようにすることで、LLMに取り込まれた情報の品質を向上させます。これにより、ハルシネーションを減らし、生成された出力の精度を向上させることができます。
この操作では、Oracle AI Vector Searchは、CohereおよびVertex AIが提供する再ランク付けモデルをサポートしています。
警告:
データベースの特定の機能により、たとえば、REST APIへのアクセスを容易にするJSON仕様を使用して、第三者によって個別に提供されるサービスにアクセスできる場合があります。
お客様によるこれらの機能の使用は、お客様自身の責任においてのみ行われ、お客様は、当該第三者サービスの使用に関連するあらゆる条件を遵守する責任を負います。第三者のサービスに関するその他の条件にかかわらず、お客様は、かかるデータベース機能の使用によって、そのリスクを受諾し、当該アクセスにより生じた一切の損害について、Oracleの責任または法的責任を明示的に除外することになります。
構文
DBMS_VECTOR.RERANK(
QUERY IN CLOB,
DOCUMENTS IN JSON,
PARAMS IN JSON default NULL
) return JSON;
このファンクションは、問合せを含む入力をCLOB
として、ドキュメントのリストをJSON
形式で受け取ります。次に、この情報を処理して、再ランク付けされたドキュメントのリストを含むJSON
オブジェクトをスコアでソートして生成します。
{
"index" : "1",
"score" : "0.99",
"content" : "Jupiter boasts an impressive system of 95 known moons."
}
-
index
は、入力テキストのリスト内のドキュメントの位置を示します。 -
score
は、関連スコアを示します。 -
content
は、索引に対応する入力テキストを示します。
QUERY
検索問合せ(通常は初期検索の)をCLOB
として指定します。
DOCUMENTS
文字列のJSON配列(再ランク付けする関連している可能性のあるドキュメントのリスト)を次の形式で指定します:
{
"documents": [
"string1",
"string2",
...
]
}
PARAMS
JSON形式で次のパラメータのリストを指定します。これらのパラメータはすべて必須です。
{
"provider" : "<service provider>",
"credential_name" : "<credential name>",
"url" : "<REST endpoint URL for reranking>",
"model" : "<reranking model name>",
...
}
表12-10 RERANKのパラメータの詳細
パラメータ | 説明 |
---|---|
|
再ランク付けでアクセスするためにサポートされているRESTプロバイダ:
|
|
次の形式の資格証明の名前:
資格証明名には、REST APIコールを行うためのプロバイダにアクセスできるようにする認証資格証明が保持されます。 まず、資格証明を作成および格納するために 「CREATE_CREDENTIAL」を参照してください。 |
|
「サポートされているサードパーティ・プロバイダの操作およびエンドポイント」にリストされている、各RESTコールのサードパーティ・プロバイダ・エンドポイントのURL。 |
|
次の形式の再ランク付けモデルの名前:
モデル名がスキーマ修飾されていない場合は、プロシージャ実行者のスキーマが使用されます。 |
追加のRESTプロバイダのパラメータ:
オプションで、再ランク付け用のプロバイダ固有の追加パラメータを指定します。
重要:
-
次の例は説明のための例です。使用する追加パラメータに関する正確で最新の情報については、サードパーティ・プロバイダのドキュメントを参照してください。
-
サポートされているすべてのRESTエンドポイントのリストは、「サポートされているサードパーティ・プロバイダの操作およびエンドポイント」を参照してください。
{
"provider" : "cohere",
"credential_name" : "COHERE_CRED",
"url" : "https://api.cohere.example.com/rerank",
"model" : "rerank-english-v3.0",
"return_documents": false,
"top_n" : 3
}
{
"provider" : "vertexai",
"credential_name" : "VERTEXAI_CRED",
"url" : "https://googleapis.example.com/default_ranking_config:rank",
"model" : "semantic-ranker-512@latest",
"ignoreRecordDetailsInResponse" : true,
"topN" : 3
}
表12-11 追加のRESTプロバイダのパラメータの詳細
パラメータ | 説明 |
---|---|
|
検索結果とともに元のドキュメントまたは入力テキスト(
ノート: Cohereをプロバイダとして使用する場合、Oracleでは、パフォーマンスを向上させるためにこのオプションを無効にしておくことをお薦めします。元のテキストを表示する必要がある場合に、デバッグのために有効にすることもできます。 |
|
検索結果とともに元のレコードの詳細または入力テキスト(
ノート: Vertex AIをプロバイダとして使用する場合、Oracleでは、パフォーマンスを向上させるためにこのオプションを有効にしておくことをお薦めします。元のテキストを表示する必要がある場合、デバッグのために無効にすることもできます。 |
|
返される最も関連性の高いドキュメントの数。 |
例
-
Cohereを使用した場合:
declare params clob; reranked_output json; begin params := ' { "provider": "cohere", "credential_name": "COHERE_CRED", "url": "https://api.cohere.com/v1/rerank", "model": "rerank-english-v3.0", "return_documents": true, "top_n": 3 }'; reranked_output := dbms_vector.rerank(:query, json(:initial_retrieval_docs), json(params)); dbms_output.put_line(json_serialize(reranked_output)); end; /
-
Vertex AIを使用した場合:
declare params clob; reranked_output json; begin params := ' { "provider": "vertexai", "credential_name": "VERTEXAI_CRED", "url": "https://discoveryengine.googleapis.com/v1/projects/1085581009881/locations/global/rankingConfigs/default_ranking_config:rank", "model": "semantic-ranker-512@latest", "ignoreRecordDetailsInResponse": false, "topN": 3 }'; reranked_output := dbms_vector.rerank(:query, json(:initial_retrieval_docs), json(params)); dbms_output.put_line(json_serialize(reranked_output)); end; /
エンドツーエンドの例:
この関数を使用してエンドツーエンドのシナリオ例を実行するには、「RAG結果を向上させるのための再ランク付けの使用」を参照してください。
親トピック: DBMS_VECTOR