Closed4
Haystackチュートリアルをやってみる: Better Retrieval with Embedding Retrieval
Retriever
DocumentStoreから関連する文書の候補を抽出するのがRetriever。Reriverにはいくつかの種類がある。
疎
- 特徴
- 単語の出現数を基にして動作する
- 単語の出現に基づため、ベクトルは語彙のサイズに等しい非常に疎なものになる
- 例
- BM25
- TF-IDF
- メリット
- シンプルで高速
- 原理が直感的
- デメリット
- クエリとテキスト間でのキーワード完全一致に依存
密
- 特徴
- ニューラルネットを用いて、情報を「密」なベクトルとして表現する
- 2つのアプローチ
- シングルエンコーダー: クエリと文章の両方を埋め込むための1つのモデルを使用。
- デュアルエンコーダー: クエリと文章を別々に埋め込む2つのモデルを使用。
- 例
- REALM
- DPR
- Sentence-Transformers
- メリット
- 単なる単語の一致よりも、意味の類似性を捉えられる
- デメリット
- 計算負荷が高い
- 初回のモデル訓練が必要(ただし多くの事前学習済モデルが利用可能)
Embedding Retrievalで使用可能な主なモデル
以下のようなものが挙げられている
- Sentence Transformers: 文の類似性
- multi-qa-mpnet-base-dot-v1: 短いクエリでドキュメントを取得する
- all-mpnet-base-v2: ドキュメント間の類似性
- paraphrase-multilingual-mpnet-base-v2: 多言語
Colaboratoryで進める。
GPUを有効にする必要があるので、「ノートブックの設定」で"T4 GPU"を使用する。
インストール。今回はDocumentStoreにFAISSを使う。
%%bash
pip install --upgrade pip
pip install farm-haystack[colab,faiss,inference]
テレメトリー有効化。
from haystack.telemetry import tutorial_running
tutorial_running(6)
ロギング設定。
import logging
logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.INFO)
Haystackはちょっと自分の探していたものとは違うのと、最近はもう触っていないので、クローズ。
このスクラップは2024/02/14にクローズされました