コンテンツにスキップ

BestRAG - ハイブリッド RAG ストレージ・検索 チートシート

BestRAG - ハイブリッド RAG ストレージ・検索 チートシート

BestRAG(Best Retrieval Augmented Generation)は ハイブリッド RAG パイプライン構築向け Python ライブラリ。DenseSparse後期相互作用エンベディングをベクトルストアとして Qdrant で結合、効率的にドキュメント保存・検索。考えは単純:各チャンク 1 回ストアで複数表現を保有、融合関連性でリトリーブして Dense ベクトル意味的リコール + Sparse(BM25 スタイル)正確語精度を両立。

インストール

方法コマンド
pippip install bestrag
要件Qdrant インスタンス(ローカル Docker または Qdrant Cloud)
エンベディングFastEmbed を内部使用
確認python -c "import bestrag; print('ok')"

ハイブリッドな理由

リトリーバルタイプ強み弱み
Dense(ベクトル)意味、パラフレーズ正確 ID、数字、稀語
Sparse(BM25)正確語、識別子同義語、パラフレーズ
後期相互作用細粒度トークンマッチングコスト
融合(ハイブリッド)Dense + Sparse 最良

BestRAG はすべての表現を保存して 1 つクエリが すべての恩恵受ける。

基本的な使用

from bestrag import BestRAG

rag = BestRAG(
    url="http://localhost:6333",     # Qdrant
    api_key="...",                   # Qdrant Cloud 使用時
    collection_name="docs",
)

# ドキュメント取り込み(Dense + Sparse + 後期相互作用 埋め込み、Qdrant にアップサート)
rag.store_pdf("handbook.pdf")
rag.store_text("Nick prefers concise answers.", metadata={"source": "prefs"})

# 融合ハイブリッド関連性でリトリーブ
results = rag.search("what does the refund policy say?", limit=5)
for r in results:
    print(r.score, r.text)
メソッド説明
BestRAG(url, collection_name, ...)Qdrant 接続、collection 指定
store_pdf(path)PDF 解析 + チャンク + 埋め込み + アップサート
store_text(text, metadata=...)生テキスト取り込み
search(query, limit=k)ハイブリッド(融合)リトリーバル
delete(...)ドキュメント削除

取り込み時の処理

ステップ詳細
Parseテキスト抽出(例 PDF から)
Chunkパッセージに分割
EmbedDense + Sparse + 後期相互作用ベクトル / チャンク
Upsertすべてベクトル + payload を Qdrant に保存

検索時の処理

ステップ詳細
Embed queryDense + Sparse(+後期相互作用)
Query Qdrant表現毎に候補リトリーブ
Fuseランキング融合(RRF スタイル)1 つリストに
ReturnTop-k パッセージ(スコア + メタデータ)

LLM にフィードバック結果

# リトリーブ、then グラウンドプロンプト構築
hits = rag.search(user_question, limit=5)
context = "\n\n".join(h.text for h in hits)
prompt = f"Answer using only this context:\n{context}\n\nQ: {user_question}"
# → LLM に prompt を送信

チューニング

レバー効果
Chunk size/overlapリトリーバル粒度
Dense modelセマンティック品質(FastEmbed 経由)
Sparse model正確語マッチング(BM25)
limit(k)Recall vs prompt サイズ
メタデータフィルター検索スコープ制限 / アクセス制御

BestRAG vs 自作

項目BestRAG手動(LangChain/LlamaIndex)
ハイブリッド設定ビルトイン(Dense+Sparse+LI)手動配線
ストアQdrant、意見的任意、柔軟
制御シンプル、少ないノブ完全制御
最適用途高速ハイブリッド RAG スタートカスタムパイプライン

FastEmbedQdrant に基づく。完全パイプライン制御が必要な場合は LangChain または LlamaIndex に。

リソース