Hugging顔データセットによる埋め込みインデックスの構築



この記事はチュートリアルシリーズの一部ですtxtai , AI動力セマンティック検索プラットフォーム
この記事はどのようにTxtaiはインデックスを検索することができますし、顔を抱き合って検索Datasets 図書館.DataSetsは、公的に利用可能なデータセットの大きく成長しているリストへのアクセスを開きます.データセットは、各データセットに格納されているデータを選択、変換、フィルタリングする機能を備えています.
この例では、TXTIをデータセットのインデックスとクエリに使用します.

依存関係のインストール


インストールtxtai すべての依存関係.インストールもdatasets .
pip install txtai
pip install datasets

データセットをロードし、Txtaiインデックスを構築する


この例では、ag_news ニュース記事の見出しのコレクションです.これだけのコードの行を取る!
次に、TXTIはデータセットの最初の10000行をインデックスします.文類似性モデルを用いて文埋込みを計算した.センテンストランスは数あるpre-trained models それはスワップできます.
埋め込みインデックスに加えて、関連性のために検索ヒットを再ランク付けする類似のインスタンスも作成します.
from datasets import load_dataset

from txtai.embeddings import Embeddings
from txtai.pipeline import Similarity

def stream(dataset, field, limit):
  index = 0
  for row in dataset:
    yield (index, row[field], None)
    index += 1

    if index >= limit:
      break

def search(query):
  return [(result["score"], result["text"]) for result in embeddings.search(query, limit=50)]

def ranksearch(query):
  results = [text for _, text in search(query)]
  return [(score, results[x]) for x, score in similarity(query, results)]

# Load HF dataset
dataset = load_dataset("ag_news", split="train")

# Create embeddings model, backed by sentence-transformers & transformers, enable content storage
embeddings = Embeddings({"path": "sentence-transformers/paraphrase-MiniLM-L3-v2", "content": True})
embeddings.index(stream(dataset, "text", 10000))

# Create similarity instance for re-ranking
similarity = Similarity("valhalla/distilbart-mnli-12-3")

データセットを検索する


今、インデックスは準備ができて、データを検索しましょう!次のセクションでは一連のクエリを実行し、結果を示します.基本的な検索エンジンのように、Txtaiはトークンマッチを見つけます.しかし、Txtaiの本当の力は意味論的に類似した結果を見つけることです.
センテンストランスには大きな展望があるinformation retrieval それは読む価値がある.
from IPython.core.display import display, HTML

def table(query, rows):
    html = """
    <style type='text/css'>
    @import url('https://fonts.googleapis.com/css?family=Oswald&display=swap');
    table {
      border-collapse: collapse;
      width: 900px;
    }
    th, td {
        border: 1px solid #9e9e9e;
        padding: 10px;
        font: 15px Oswald;
    }
    </style>
    """

    html += "<h3>%s</h3><table><thead><tr><th>Score</th><th>Text</th></tr></thead>" % (query)
    for score, text in rows:
        html += "<tr><td>%.4f</td><td>%s</td></tr>" % (score, text)
    html += "</table>"

    display(HTML(html))

for query in ["Positive Apple reports", "Negative Apple reports", "Best planets to explore for life", "LA Dodgers good news", "LA Dodgers bad news"]:
  table(query, ranksearch(query)[:2])

肯定的なアップルレポート


スコア
テキスト
0.9886
米国の顧客満足度インデックス(ACSI)によって発表された最近のデータは、アップルの顧客満足度の高い消費者コンピュータ業界をリードしています.
0.9876
アップルリモートデスクトップ2アップルリモートデスクトップ2をコンピュータの世界では、Yuval Kosovvsky書き込みます私は、私が見つけたものが好きでした148菅147号私は、Ad 2が優れたアップグレードで、よくお金の価値があると言います1488月19日

マイナスアップルレポート


スコア
テキスト
0.9847
アップルは、15インチのPowerbookアップルで売られる28000の不良バッテリーを思い出します彼らの15インチのPowerBookで使用のために売られた28000のノートブック・バッテリーを思い出してください.2004年1月と2004年8月の間に販売された不良電池が過熱して火災危険をもたらすことがあるとアップルは報告している.
0.9733
アップルは、その15インチのPowerbook G 4ラップトップのために28000の不完全なバッテリーを思い出している悪いバッテリーについて警告します.

人生を探る惑星


スコア
テキスト
0.9110
小型の「デビッド」望遠鏡は、小さな、4インチの望遠鏡によって発見された新しい惑星を発見し、惑星発見の新しい時代のカスプであることを証明します.すぐに、新しい世界は加速しているペースに位置するかもしれません.
0.8705
火星の生命は、科学者主張(スペース. com)スペースです.デンバー、コロラド-火星で働いているそれらの双子のロボットは、微生物生命が赤い惑星の上に存在するかもしれないという見通しを強化する退屈な見解を伝えました.

ラ・ドジャース


スコア
テキスト
0.9990
グリーンのスラムは、土曜日にアトランタブレーブス7 - 4を過ぎてロサンゼルスドジャースをリードするために、壮大なスラムと独唱家の上で、ショーングリーンをつなぎます.
0.9961
ショーンGreenは、グランドスラムとソロ・ホーマーとしてロサンゼルスビートマイクハンプトンとアトランタブレーブス7 - 4 -土曜日の午後にベルを鳴らしました.

ラ・ドジャース


スコア
テキスト
0.9880
エクスポズは8 - 7勝(AP)APとベイでドジャースを維持-ジョヴァンニCarraraは、ロードされたベースと9回目の月曜日の夜に2つのアウトで、モントリオールの6つのランカムバックを台無しにしてドジャースの上で8 - 7の勝利を渡して、Expoを歩いた.
0.9671
Gagneは彼の2 Dを保存ピンチ打者レニーハリスは、第9の2つのアウトで3つの実行ダブルオフエリックGagneを配信し、ロサンゼルスで最後の夜ドジャース、6 - 4過去フロリダフロリダマーリンズをラリー.