FastEmbed ist eine leichte, schnelle Python-Bibliothek, die für die Einbettungsgenerierung entwickelt wurde. Wir unterstützen gängige Textmodelle. Bitte öffnen Sie ein GitHub-Problem, wenn Sie möchten, dass wir ein neues Modell hinzufügen.
Das Standardmodell zur Texteinbettung ( TextEmbedding
) ist Flag Embedding und wird in der MTEB-Bestenliste vorgestellt. Es unterstützt die Präfixe „query“ und „passage“ für den Eingabetext. Hier ist ein Beispiel für die Generierung von Retrieval Embedding und die Verwendung von FastEmbed mit Qdrant.
Leicht: FastEmbed ist eine leichtgewichtige Bibliothek mit wenigen externen Abhängigkeiten. Wir benötigen keine GPU und laden keine GB an PyTorch-Abhängigkeiten herunter, sondern verwenden stattdessen die ONNX-Laufzeit. Dies macht es zu einem großartigen Kandidaten für serverlose Laufzeitumgebungen wie AWS Lambda.
Schnell: FastEmbed ist auf Geschwindigkeit ausgelegt. Wir verwenden die ONNX Runtime, die schneller als PyTorch ist. Wir verwenden Datenparallelität auch zur Kodierung großer Datensätze.
Genau: FastEmbed ist besser als OpenAI Ada-002. Wir unterstützen auch eine ständig wachsende Reihe von Modellen, darunter einige mehrsprachige Modelle.
Um die FastEmbed-Bibliothek zu installieren, funktioniert pip am besten. Sie können es mit oder ohne GPU-Unterstützung installieren:
pip install fastembed# oder mit GPU-Unterstützungpip install fastembed-gpu
from fastembed import TextEmbeddingfrom typing import List# Beispielliste von Dokumentendocuments: List[str] = [ „Dies ist schneller und leichter als andere Einbettungsbibliotheken, z. B. Transformers, Sentence-Transformers usw.“, „fastembed wird von unterstützt und verwaltet von Qdrant.", ]# Dadurch wird der Modell-Download und die Initialisierung ausgelöstembedding_model = TextEmbedding()print("Das Modell BAAI/bge-small-en-v1.5 ist einsatzbereit.")embeddings_generator = embedding_model.embed(documents) # Erinnerung: Dies ist ein generatorembeddings_list = list(embedding_model.embed(documents)) # Sie können den Generator auch in eine Liste konvertieren, und zwar in ein Numpy-Arraylen(embeddings_list[0]) # Vektor mit 384 Dimensionen
Fastembed unterstützt eine Vielzahl von Modellen für unterschiedliche Aufgaben und Modalitäten. Die Liste aller verfügbaren Modelle finden Sie hier
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)# ]
SPLADE++
from fastembed import SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indices=[ 17, 123, 919, ... ], Values=[0.71, 0,22, 0,39, ...]),# SparseEmbedding(indizes=[ 38, 12, 91, ... ], Werte=[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 unterstützt die Ausführung auf GPU-Geräten. Es erfordert die Installation des fastembed-gpu
Pakets.
pip install fastembed-gpu
In unserem Beispiel finden Sie detaillierte Anweisungen, CUDA 12.x-Unterstützung und Fehlerbehebung bei häufigen Problemen.
from fastembed import TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", Provider=["CUDAExecutionProvider"] )print("Das Modell BAAI/bge-small-en-v1.5 kann jetzt auf einer GPU verwendet werden.")
Installation mit Qdrant-Client in Python:
pip install qdrant-client[fastembed]
oder
pip install qdrant-client[fastembed-gpu]
Möglicherweise müssen Sie Anführungszeichen pip install 'qdrant-client[fastembed]'
auf zsh verwenden.
from qdrant_client import QdrantClient# Initialisieren Sie den Clientclient = QdrantClient("localhost", port=6333) # Für die Produktion# client = QdrantClient(":memory:") # Für kleine Experimente# Bereiten Sie Ihre Dokumente, Metadaten und IDs vordocs = ["Qdrant hat Langchain-Integrationen“, „Qdrant hat auch Llama-Index-Integrationen“]metadata = [ {"source": "Langchain-docs"}, {"source": "Llama-index-docs"}, ]ids = [42, 2]# Wenn Sie das Modell ändern möchten:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# Liste der unterstützten Modelle: https://qdrant.github. io/fastembed/examples/Supported_Models# Verwenden Sie das neue add() anstelle von upsert()# Dadurch wird intern embed() des konfigurierten Einbettungsmodells aufgerufen.client.add(collection_name="demo_collection", document=docs, metadata=metadata, ids= ids)search_result = client.query(collection_name="demo_collection", query_text="Dies ist ein Abfragedokument")print(search_result)