LlamaIndexでは、さまざまな埋め込みモデル(Embeddings)を利用できます。
この記事では、OpenAI、HuggingFace、Ollamaの3つの埋め込みモデルの使い方を解説しています。
LlamaIndex Embeddingsとは(OpenAI・HuggingFace・Ollama)
埋め込みモデル(Embeddings)とは、テキストや画像等のデータを数値ベクトルとして表現する手法です。
これにより、単語や文章の意味的な類似性を数値化して、RAGでの検索や分類、類似度計算が行えるようになります。
この記事では、LlamaIndexにおけるOpenAI、HuggingFace、Ollamaの3種類の埋め込みモデルの使い方を紹介します。
- 埋め込みモデルによりRAGでの検索や分類、類似度計算が行えるようになる
- LlamaIndexで使えるOpenAI、HuggingFace、Ollamaの3種類の埋め込みモデルを紹介
OpenAI Embeddingsの使い方
OpenAIの埋め込みモデルの使い方を紹介します。
OpenAIの埋め込みモデルを使用するには、APIキーの発行が必要になり、OpenAIの公式サイトから発行できます。
必要なパッケージをインストールします。
pip install llama-index llama-index-embeddings-openai
OpenAIのAPIキーを環境変数に設定します。
APIキーはOpenAIの公式サイトから発行できます。
import os
os.environ["OPENAI_API_KEY"] = "***************"
OpenAIの埋め込みモデルを読み込みます。
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
embed_model = OpenAIEmbedding(model=”text-embedding-3-small”)
OpenAIEmbedding
:OpenAIの埋め込みモデルtext-embedding-3-small
を読み込んでいます。
text-embedding-3-small
はコストとリソース効率に優れる埋め込みモデルです。Largeモデルのtext-embedding-3-large
を指定した場合、性能が向上しますが、その分コストと応答時間がかかります。
埋め込みモデルを使用して、テキストを数値ベクトルに変換します。
text = "これは埋め込みモデルのテストです。"
embeddings = embed_model.get_text_embedding(text)
print(embeddings[:10])
[0.021757090464234352, 0.03871193900704384, -0.00824466347694397, -0.05321666598320007, 0.0003585218801163137, 2.6869998691836372e-05, -0.0034026079811155796, 0.018241163343191147, 0.0114543242380023, -0.02156108058989048]
embed_model.get_text_embedding(text)
指定したテキストを数値ベクトル(埋め込みベクトル)に変換します。
HuggingFace Embeddingsの使い方
HuggingFaceの埋め込みモデルの使い方を紹介します。
HuggingFaceの埋め込みモデルにはGPU環境が必要になります。
GPU環境の構築方法は別の記事で解説しています。
必要なパッケージをインストールします。
pip install llama-index llama-index-embeddings-huggingface
HuggingFaceの埋め込みモデルを読み込みます。
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(model_name="intfloat/multilingual-e5-large")
HuggingFaceEmbedding(model_name=”intfloat/multilingual-e5-large”)
HuggingFaceのモデル intfloat/multilingual-e5-large
を使って埋め込みモデルを読み込んでいます。このモデルは日本語性能が高く、無料で使える埋め込みモデルです。
埋め込みモデルを使用して、テキストを数値ベクトルに変換します。
text = "これは埋め込みモデルのテストです。"
embeddings = embed_model.get_text_embedding(text)
print(embeddings[:10])
[0.02069464884698391, -0.014187865890562534, -0.02731310948729515, -0.06284146755933762, 0.027987537905573845, -0.026079582050442696, 0.014470797032117844, 0.07950162887573242, 0.05525951832532883, -0.02208035998046398]
embed_model.get_text_embedding(text)
指定したテキストを数値ベクトル(埋め込みベクトル)に変換します。
Ollama Embeddingsの使い方
Ollamaの埋め込みモデルの使い方を紹介します。
Ollamaの埋め込みモデルにはollama-pythonの環境構築が必要になります。
ollama-pythonの環境構築は別の記事で解説しています。
必要なパッケージをインストールします。
pip install llama-index llama-index-embeddings-ollama
Ollamaで使用する埋め込みモデルをダウンロードします。
!ollama pull mxbai-embed-large
Ollamaの埋め込みモデルを読み込みます。
from llama_index.embeddings.ollama import OllamaEmbedding
embed_model = OllamaEmbedding(
model_name="mxbai-embed-large",
base_url="http://localhost:11434",
ollama_additional_kwargs={"mirostat": 0},
)
OllamaEmbedding()
model_name="mxbai-embed-large"
:埋め込みモデルを指定しています。
base_url="http://localhost:11434"
:LinuxにインストールしたOllama ServerのURLを指定しています。
ollama_additional_kwargs={"mirostat": 0}
:mirostatは出力の安定性に関するパラメータで、ここでは無効化(0に設定)しています。
Ollamaで使える埋め込みモデルは公式サイトをご覧ください。
埋め込みモデルを使用して、テキストを数値ベクトルに変換します。
text = "これは埋め込みモデルのテストです。"
embeddings = embed_model.get_query_embedding(text)
print(embeddings[:10])
[-0.4648051857948303, -0.6819150447845459, 0.01403755135834217, 0.5371492505073547, 0.021027207374572754, -0.5542749762535095, 0.2752455770969391, 0.3418479561805725, 0.6338890194892883, 0.6366513967514038]
embed_model.get_query_embedding(text)
指定したテキストを数値ベクトル(埋め込みベクトル)に変換します。
生成AI・LLMのコストでお困りなら
GPUのスペック不足で生成AIの開発が思うように進まないことはありませんか?
そんなときには、高性能なGPUをリーズナブルな価格で使えるGPUクラウドサービスがおすすめです!
GPUSOROBANは、高性能GPU「NVIDIA H200」を業界最安級の料金で使用することができます。
NVIDIA H200は、生成AI・LLMの計算にかかる時間を大幅に短縮することが可能です。
クラウドで使えるため、大規模な設備投資の必要がなく、煩雑なサーバー管理からも解放されます。