メモの中から「空港近くの安い宿」を探したいとします。
Keyword Searchだけだと、「ターミナルに近いBudget Hotel」というメモを見落とすかもしれません。使われている単語が違うからです。
人間はすぐに意味が近いと分かります。
Computerでその近さを計算できるようにする方法の一つが**Embedding(埋め込み表現)**です。
EmbeddingはVector
**Vector(ベクトル)**は、順番を持った数値の列です。
たとえば [0.12, -0.48, 0.77, …] のような形です。
実際のEmbeddingは数百〜数千Dimensionを持つことがあります。
各Dimensionが単純に「犬らしさ」「高級さ」を意味するとは限りません。重要なのは、モデルが作るVector Space全体の位置関係です。
意味が似た文章は、Vector Spaceでも近い位置へ来るように学習されています。
巨大な「意味の地図」で考える
普通の地図は緯度と経度の2Dimensionです。
Embedding Spaceはもっと多くのDimensionを持つ地図だと考えられます。
「puppy」「young dog」「small canine」は近い地域に入り、「database backup policy」は遠い場所になるかもしれません。
辞書の意味を座標へ直接書いているのではなく、比較に役立つ数値配置をモデルが作っています。
近さをどう測る?
Vectorになれば数学的に比較できます。
よく使われるのは、
- Cosine Similarity
- Dot Product
- Euclidean Distance
などです。
今は式を覚えなくても大丈夫です。
二つの情報をVectorへ変換し、Vector同士がどれくらい近いか/似ているかを測る
という流れを理解してください。
Text以外にも使える
モデルによっては、
- 文
- Paragraph
- Image
- Product
- User
- Audio
- Code
などをEmbeddingへできます。
Multimodal Embeddingでは、TextとImageを互換性のあるSpaceへ置き、文章から似た画像を探すこともできます。
Semantic SearchとKeyword Search
Keyword Searchは、正確な単語が重要なときに強い方法です。
Embedding Searchは、言い方が違っても意味が近いものを探したいときに役立ちます。
実際には両者を組み合わせるHybrid Searchもよく使われます。
Embeddingも完璧ではない
Vectorの近さは、Embedding Modelが学習したPatternに基づきます。
Biasがあったり、専門分野の微妙な違いを捉えられなかったりすることもあります。
自分のDataで評価することが重要です。
Vectorが大量になったら?
数百万のEmbeddingから毎回全部を比較するのは大変です。
そこでVectorを保存し、近いものを効率よく検索する仕組みが必要になります。
それが次の第022回で扱うVector Databaseです。
今日の一文
Embeddingとは、文章や画像などを数値Vectorへ変換し、意味やSimilarityをVector Space上で比較できるようにする表現です。
コメント
質問、感想、補足したいことがあれば、ここに残せます。
まだコメントはありません。1Fになってみませんか。