Text reranking#
aidb.rerank_text()
ファンクションを使用して、クエリーとの関連性によって一連の候補テキストパッセージを並べ替えます。再ランキングは通常、取得後のステップとして適用され、候補の初期セットがナレッジベースから取得された後、最も関連性の高い結果を上部に表示します。
ステップ1リランキングモデルを登録する
SELECT aidb.create_model(
my_reranker,
nim_reranking,
config => aidb.nim_reranking_config(
api_key => nvapi-...,
model => nvidia/nv-rerankqa-mistral-4b-v3
)
);
ステップ2:候補セットを再ランク付けする
SELECT * FROM aidb.rerank_text(
query => What is retrieval-augmented generation?,
inputs => ARRAY[
RAG combines retrieval and generation to produce grounded answers.,
Vector databases store high-dimensional embeddings for similarity search.,
RAG systems retrieve relevant documents before generating a response.
],
options => {"model": "my_reranker"}
)
ORDER BY relevance_score DESC;
__OUTPUT__
id | relevance_score
- ---+-----------------
2 | 0.97
0 | 0.91
1 | 0.43
(3 rows)
id 列は、 inputs
配列内の各文字列のゼロベースのインデックスに対応し、元のデータに結合して戻すことができます。
完全なパラメーターのリファレンスについては、 Models reference を参照してください。
ナレッジベースの取得後に再ランキングを使用する#
一般的なパターンは、ナレッジベースから初期候補セットを取得し、結果を再ランク付けすることです。
WITH candidates AS (
SELECT
source_id,
content
FROM aidb.retrieve_text(my_kb, What is RAG?, 20)
JOIN my_source_table ON source_id = id::TEXT
)
SELECT
c.source_id,
c.content,
r.relevance_score
FROM candidates c
JOIN aidb.rerank_text(
query => What is RAG?,
inputs => ARRAY(SELECT content FROM candidates),
options => {"model": "my_reranker"}
) r ON r.id = (
SELECT array_position(ARRAY(SELECT content FROM candidates), c.content) - 1
)
ORDER BY r.relevance_score DESC
LIMIT 5;
!!!注
再ランキングモデルは、クエリに対してパッセージをスコアリングしますが、テキストは生成しません。リランキングモデルを登録するには、プロバイダーに適切な モデル構成ヘルパー を使用します。たとえば、NVIDIA
NIMリランキングエンドポイントの場合はaidb.nim_reranking_config()
です。