FastEmbed は、埋め込み生成用に構築された軽量で高速な Python ライブラリです。一般的なテキスト モデルをサポートしています。新しいモデルを追加してほしい場合は、GitHub の問題を開いてください。
デフォルトのテキスト埋め込み ( TextEmbedding
) モデルは Flag Embedding で、MTEB リーダーボードに表示されます。入力テキストの「クエリ」および「パッセージ」プレフィックスをサポートします。ここでは、取得埋め込み生成の例と、Qdrant で FastEmbed を使用する方法を示します。
軽量: FastEmbed は、外部依存関係がほとんどない軽量のライブラリです。 GPU は必要なく、何 GB もの PyTorch 依存関係をダウンロードせず、代わりに ONNX ランタイムを使用します。このため、AWS Lambda のようなサーバーレス ランタイムの優れた候補になります。
高速: FastEmbed は速度を重視して設計されています。 PyTorch よりも高速な ONNX ランタイムを使用します。また、大規模なデータセットをエンコードするためにデータ並列処理も使用します。
正確: FastEmbed は OpenAI Ada-002 よりも優れています。また、いくつかの多言語モデルを含む、拡大し続ける一連のモデルもサポートしています。
FastEmbed ライブラリをインストールするには、pip が最適に機能します。 GPU サポートの有無にかかわらずインストールできます。
pip install fastembed# または GPU サポート付きpip install fastembed-gpu
from fastembed import TextEmbeddingfrom testing import List# ドキュメントのリスト例documents: List[str] = [ "これは、他の埋め込みライブラリ (例: Transformers、Sentence-Transformers など) よりも高速かつ軽量になるように構築されています。", "fastembed は、によってサポートされ、保守されています。クドラント著。」、 ]# これにより、モデルのダウンロードと初期化がトリガーされますembedding_model = TextEmbedding()print("モデル BAAI/bge-small-en-v1.5 を使用する準備ができました。")embeddings_generator = embedding_model.embed(documents) # これはリマインダーですgeneratorembeddings_list = list(embedding_model.embed(documents)) # ジェネレーターをリストに変換し、それを numpy arraylen(embeddings_list[0]) # 384 次元のベクトルに変換することもできます
Fastembed は、さまざまなタスクやモダリティに対応するさまざまなモデルをサポートしています。利用可能なすべてのモデルのリストはここで見つけることができます
from fastembed import TextEmbeddingmodel = TextEmbedding(model_name="BAAI/bge-small-en-v1.5")embeddings = list(model.embed(documents))# [# array([-0.1115, 0.0097, 0.0052, 0.0195, . ..], dtype=float32),# array([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
スプライド++
from fastembed import SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indices=[ 17, 123, 919, ... ], value=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(インデックス=[ 38, 12, 91, ... ], 値=[0.11, 0.22, 0.39, ...])# ]
from fastembed import LateInteractionTextEmbeddingmodel = LateInteractionTextEmbedding(model_name="colbert-ir/colbertv2.0")embeddings = list(model.embed(documents))# [# array([# [-0.1115, 0.0097, 0.0052, 0.0195, ... ],# [-0.1019, 0.0635, -0.0332, 0.0522, ...],# ]),# array([# [-0.9019, 0.0335, -0.0032, 0.0991, ...],# [-0.2115, 0.8097 、0.1052、0.0195、...]、# ])、# ]
from fastembed import ImageEmbeddingimages = [ "./path/to/image1.jpg", "./path/to/image2.jpg", ]model = ImageEmbedding(model_name="Qdrant/clip-ViT-B-32-vision")embeddings = list(model.embed(images))# [# array([-0.1115, 0.0097, 0.0052, 0.0195, ... ], dtype=float32),# array([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
FastEmbed は GPU デバイスでの実行をサポートしています。 fastembed-gpu
パッケージのインストールが必要です。
pip インストール fastembed-gpu
詳細な手順、CUDA 12.x のサポート、一般的な問題のトラブルシューティングについては、例を確認してください。
from fastembed import TextEmbeddingembedding_model = TextEmbedding(model_name="BAAI/bge-small-en-v1.5", プロバイダー=["CUDAExecutionProvider"] )print("モデル BAAI/bge-small-en-v1.5 を GPU で使用する準備ができました。")
Python での Qdrant クライアントを使用したインストール:
pip install qdrant-client[fastembed]
または
pip install qdrant-client[fastembed-gpu]
zsh では引用符pip install 'qdrant-client[fastembed]'
使用する必要がある場合があります。
from qdrant_client import QdrantClient# clientclient を初期化します = QdrantClient("localhost", port=6333) # 本番用# client = QdrantClient(":memory:") # 小規模な実験用# ドキュメント、メタデータ、ID を準備しますdocs = ["Qdrant Langchain 統合があります", "Qdrant には Llama Index 統合もあります"]metadata = [ {"ソース": "Langchain-docs"}, {"ソース": "Llama-index-docs"}, ]ids = [42, 2]# モデルを変更したい場合:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# サポートされているモデルのリスト: https://qdrant.github. io/fastembed/examples/Supported_Models# upsert() の代わりに新しい add() を使用します# これは、設定された埋め込みモデルの embed() を内部で呼び出しますclient.add( collection_name="demo_collection",Documents=docs,metadata=metadata,ids= ids)search_result = client.query( collection_name="デモ_コレクション", query_text="これはクエリ ドキュメントです")print(search_result)