い-02
IT-開発-ミドルウェア
検索エンジンやそれにまつわる自然言語処理を中心にサークル主が興味を持ったことを日々アウトプットしています。 HP:https://sashimimochi.netlify.app/
自然言語処理の定番手法となっているWord2Vecを使ってみたい初心者やちょっと手の込んだことをしてみたい中級者向けにWord2Vecを使い倒すべく、私個人の観点から可能な限り役立ちそうなTIPSを詰め込みました。
最近はもっぱらBERTやGPTシリーズの登場によってWord2Vecは過去の技術という印象があるかもしれません。
ですが、垢まみれになった今だからこそ、知見も溜まっており、安定して使えるようになったとも言えます。
そこで、私見を多分に含みますが、まとまった形でWord2Vecを使い倒すためのノウハウをまとめました。
1つ1つの内容は、どこかの記事などでみたことがあるものかもしれませんが、これ1冊だけでだいたい事足りるよう、使いやすく編集したつもりです。
使い倒しブックということで、理論的な点よりも、使い方に重点を置きました。
実装例をたくさん載せましたので、結果を見ながら理解できると思います。
本書とは別にGoogle Colaboratoryでサンプルコードも公開しているので、そのままなぞれるようになっています。
これを読んで、Word2Vecを使い倒してもらって、みなさんのサービス開発、アプリ開発ライフの一助になれば幸いです。
StreamlitというPython用のWebアプリ作成フレームワークの魅力について、短時間で概観できる一冊です。
Streamlitの特徴を3点でまとめると
普段、Pythonなどのバックエンドが中心のあなた!Streamlitを知ってしまったからには「自分、HTML書けないんで」はWebアプリを作らない理由にはできません。
これを機にあなたもWebアプリを作ってリリースしてみましょう!
※著者の過去のイベントトークが元になっているので、そちらと合わせてみるとより魅力が伝わると思います。
本書は、全文検索エンジンである Apache Solr のバージョン 9 から導入された密ベクトル検索機能について、その特徴と使い方を紹介する本です。
ベクトル検索は従来のキーワード検索では実現が困難だった、ニュアンスの検索や類似画像検索、レコメンド、テキストから画像や音声などメディアの垣根を越えたマルチモーダルな検索などなど、ユーザーにまったく新しい検索体験を提供できる可能性を秘めた検索手法です。
その魅力の反面、Solr 上でのベクトル検索は、全文検索エンジンの知識に加えて、機械学習分野の素養も求められます。
そのため、導入の敷居が高いと感じられているチームが多いのではないでしょうか。
その証拠というべきか、ビジネスでの実用実績はおろか、使ってみたという記事さえほとんど見つかりません。
そこで、本書では、追加された Solr の機能の使い方はもちろん、肝となるベクトル生成部分の実現例についてもご紹介します。
これを読めば、検索チームが少なくとも機械学習チームとコミュニケーションを取ってベクトル検索を実現、あわよくば検索チームオンリーでもベクトル検索を活用スタートできるようになることを目指した一冊です。
稀有だと思いますが、これからSolrを使ってみたい、あるいは検索チームとコミュニケーションを取りたいMLチームの方でもなんとか読めるよう、最低限のSolr知識も1章、2章で解説しています。
サクッと雑感を知りたければ、以前書いたブログ記事もあるので、先にこちらを読んでもいいかもしれません。
本書の内容のうち Solr の機能紹介にフォーカスした部分を記載しています。
https://zenn.dev/sashimimochi/articles/1957974d64d571
======================
目次
はじめに
第 1 章 全文検索エンジン Apache Solr
1.1 全文検索とは
1.2 なぜ全文検索エンジンを使うのか
1.3 転置インデックス
1.4 Apache Solr
1.5 Solr の特徴
1.6 冗長化の実現
1.6.1 ノードとコレクション
1.6.2 シャーディング
1.6.3 レプリケーション
1.7 クラスター構成
1.7.1 スタンドアローン構成
1.7.2 Master Slave 構成
1.7.3 SolrCloud 構成
1.7.4 構成まとめ
1.8 その他の Solr 機能
1.8.1 コンテンツ抽出
1.8.2 管理者向け GUI
1.8.3 プラグインによる機能拡張
1.9 テキストの解析と評価
1.9.1 トークン化
1.9.2 形態素解析
1.9.3 N-Gram
1.9.4 日本語固有の課題と tokenizer
1.9.5 適合度
コラム: Solr の読み方は?
1.10 参考文献
第 2 章 全文検索エンジンとして動かしてみる
2.1 環境構築
2.2 まずは検索
2.3 solrconfig
2.4 managed-schema
2.5 ストップワード
2.6 データ投入
2.7 基本的な検索機能
2.7.1 メインクエリ
2.7.2 フィールドリスト
2.7.3 ソート
2.7.4 ファンクションクエリ
2.7.5 フィルタークエリ
2.8 高度な検索機能
2.8.1 リランキングクエリ
2.8.2 グルーピング
2.8.3 ファセット検索
2.8.4 ハイライト
2.8.5 ジョイン検索
2.9 表記や表現の揺れに強くする
2.9.1 フレーズ検索
2.9.2 あいまい検索
2.9.3 シノニム検索
2.9.4 MoreLikeThis
2.10 2 章のまとめ
第 3 章 ベクトル検索の理論とその要素技術
3.1 ベクトル検索がもたらす検索体験
3.2 ベクトル検索とは
3.3 埋め込み表現
3.4 ベクトル検索における類似度計算
3.4.1 ユークリッド距離
3.4.2 ドット積
3.4.3 コサイン類似度
3.4.4 どれを使うとよいのか
コラム: ベクトル検索は本当にベクトルを検索しているのか
3.5 モデルと学習
3.6 全文検索とベクトル検索の違い
3.7 近似最近傍探索
3.8 ベクトル検索をめぐるこれまで
コラム: ANN に代わる新たな近傍探索手法!?
第 4 章 Solr 上でベクトル検索を動かす
4.1 Solr 定義
4.2 インデックスデータの作り方
4.3 メインクエリでの使い方
4.4 フィルタークエリでの使い方
4.4.1 fq での基本的な使い方
4.4.2 fq で使うときの注意点
4.5 リランククエリでの使い方
4.5.1 rq での基本的な使い方
4.5.2 rq で使うときの注意点
4.6 ベクトルフィールドを複数使う
4.7 実用案
4.7.1 キーワード検索と組み合わせる
4.7.2 ファセットと組み合わせる
4.7.3 グルーピングと組みわせる
4.7.4 ジョイン検索でベクトル検索をする
第 5 章 実データを使ってベクトル検索をする
5.1 ニュース記事でベクトル検索
5.1.1 テキストデータのインデックスの作り方
5.1.2 テキスト検索リクエストの実装
5.2 画像でベクトル検索
5.2.1 画像データでのインデックスの作り方
5.2.2 画像検索リクエストの実装
コラム: ChatGPT を使った Embedding は?
5.3 パフォーマンスを測る
コラム: Elasticsearch でのベクトル検索
付録
付録 A 本書で扱うモデル
A.1 Word2Vec
A.2 CLIP
A.3 Sentence BERT
付録 B フレームワークとサービス
B.1 Streamlit
B.2 Hugging Face
B.3 メトリクスの可視化
付録 C Hierarchical Navigate Small World
C.1 グラフ理論における NSW
C.2 近似最近傍探索アルゴリズムとしての NSW
C.3 Hierarchical NSW
C.4 参考文献
あとがき
======================
新刊
同人誌・110ページ・電子・500円本書は「今日から始めるSolrベクトル検索」の付録本です。
ChatGPTを始めとするLLM大ブームの到来によって、執筆以降ベクトル検索を取り巻く環境にもいろいろなアップデートが入りました。
そういったアップデート情報や前作では書ききれなかった一部補足内容をまとめた一冊になっています。
前作に記載の事項は前提知識として冒頭から本筋に入っていくので、前作と合わせてお楽しみください。