意味的類似度と文埋め込み
Sentence-BERT、セマンティック検索のためのコサイン類似度、埋め込みのクラスタリングについて学習します。
「意味的類似度と文埋め込み」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
単語だけでなく文を扱う
単語埋め込みは単語を表現しますが、実際には文全体や文書を比較する必要があることがよくあります。単語ベクトルを平均すると細かな意味が失われるため、文全体の意味を捉える単一のベクトルが必要です。
文埋め込みとは
文埋め込みは、文全体を1つの高密度ベクトルに変換します。これにより、意味が似た文は近いベクトルになり、セマンティック検索やクラスタリングが可能になります。
sentence-transformersライブラリ
sentence-transformersライブラリを使うと、これを簡単に実行できます。このライブラリは、文ベクトルを直接生成するようファインチューニングされたTransformerモデルをラップしています。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")all-MiniLM-L6-v2を使う理由
all-MiniLM-L6-v2は、サイズが小さく高速で正確なため、よく使われるデフォルトモデルです。384次元のベクトルを生成し、ほとんどのアプリケーションで速度と品質のバランスに優れています。
文をエンコードする
model.encodeは、文のリストを埋め込みの行列に変換します。各文が1行に対応します。
sentences = [
"The cat sits on the mat.",
"A feline rests on the rug.",
"I am learning machine learning.",
]
embeddings = model.encode(sentences)
print(embeddings.shape) # (3, 384)類似度を測定する
コサイン類似度は、ベクトルの大きさを無視して、2つのベクトル間の角度を測定します。1に近い値は意味が非常に似ていることを、0に近い値は関連性がないことを示します。
from sentence_transformers import util
sim = util.cos_sim(embeddings[0], embeddings[1])
print(sim.item()) # high, both about a cat restingsklearn cosine_similarityを使う
scikit-learnを埋め込み行列に直接適用して、すべての組み合わせの類似度行列を取得することもできます。
from sklearn.metrics.pairwise import cosine_similarity
matrix = cosine_similarity(embeddings)
print(matrix) # (3, 3) pairwise similaritiesセマンティック検索の考え方
セマンティック検索は、キーワードではなく意味に基づいて文書を検索します。クエリとすべての文書をエンコードし、クエリベクトルとのコサイン類似度によって文書を順位付けします。
セマンティック検索の例
コーパスを一度エンコードしておき、クエリごとに類似度を計算して上位の一致結果を返します。
from sentence_transformers import util
corpus = ["How to reset my password", "Refund policy details", "Track my order"]
corpus_emb = model.encode(corpus)
query_emb = model.encode("I forgot my login")
hits = util.semantic_search(query_emb, corpus_emb, top_k=2)
print(hits)実際の応用例
文埋め込みは、FAQの照合、重複検出、クラスタリング、レコメンデーション、そして大規模言語モデルに関連するコンテキストを渡すRAGシステムの検索ステップで活用されています。
良い結果を得るためのヒント
タスク(セマンティック検索か言い換えか)に合わせて学習されたモデルを選びます。類似度指標で必要な場合は埋め込みを正規化し、大規模なコーパスでは高速な最近傍検索のためにベクトルデータベースを使います。
クイックチェック
文埋め込みに関する知識を確認しましょう。
まとめ
まとめ: 文埋め込みは、文全体をベクトルにエンコードします。SentenceTransformer("all-MiniLM-L6-v2")とmodel.encode(sentences)を使い、コサイン類似度で比較します。これによりセマンティック検索が可能になります。クエリとコーパスをエンコードし、類似度で順位付けします。FAQの照合、クラスタリング、RAG検索に欠かせない技術です。
よくある質問
「意味的類似度と文埋め込み」レッスンは無料ですか?
はい。「意味的類似度と文埋め込み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「意味的類似度と文埋め込み」で何を学びますか?
Sentence-BERT、セマンティック検索のためのコサイン類似度、埋め込みのクラスタリングについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「意味的類似度と文埋め込み」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。