FastEmbed est une bibliothèque Python légère et rapide conçue pour la génération d'intégration. Nous prenons en charge les modèles de texte populaires. Veuillez ouvrir un problème GitHub si vous souhaitez que nous ajoutions un nouveau modèle.
Le modèle d'intégration de texte par défaut ( TextEmbedding
) est Flag Embedding, présenté dans le classement MTEB. Il prend en charge les préfixes « requête » et « passage » pour le texte saisi. Voici un exemple de génération d'intégration de récupération et comment utiliser FastEmbed avec Qdrant.
Léger : FastEmbed est une bibliothèque légère avec peu de dépendances externes. Nous n'avons pas besoin de GPU et ne téléchargeons pas de Go de dépendances PyTorch, mais utilisons à la place le runtime ONNX. Cela en fait un excellent candidat pour les environnements d'exécution sans serveur comme AWS Lambda.
Rapide : FastEmbed est conçu pour la vitesse. Nous utilisons le Runtime ONNX, qui est plus rapide que PyTorch. Nous utilisons également le parallélisme des données pour coder de grands ensembles de données.
Précis : FastEmbed est meilleur qu’OpenAI Ada-002. Nous prenons également en charge un ensemble de modèles en constante expansion, y compris quelques modèles multilingues.
Pour installer la bibliothèque FastEmbed, pip fonctionne mieux. Vous pouvez l'installer avec ou sans support GPU :
pip install fastembed# ou avec support GPUpip install fastembed-gpu
from fastembed import TextEmbeddingfrom typing import List# Exemple de liste de documentsdocuments : List[str] = [ "Ceci est conçu pour être plus rapide et plus léger que les autres bibliothèques d'intégration, par exemple Transformers, Sentence-Transformers, etc.", "fastembed est pris en charge et maintenu par Qdrant.", ]# Cela déclenchera le téléchargement et l'initialisation du modèle. generateurembeddings_list = list(embedding_model.embed(documents)) # vous pouvez également convertir le générateur en liste, et cela en un tableau numpylen(embeddings_list[0]) # Vecteur de 384 dimensions
Fastembed prend en charge une variété de modèles pour différentes tâches et modalités. La liste de tous les modèles disponibles se trouve ici
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, ... ], valeurs=[0.71, 0,22, 0,39, ...]),# SparseEmbedding(indices=[ 38, 12, 91, ... ], valeurs=[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, ...],# ]),# tableau([# [-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),# tableau([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
FastEmbed prend en charge l'exécution sur les appareils GPU. Cela nécessite l’installation du package fastembed-gpu
.
pip installe fastembed-gpu
Consultez notre exemple pour obtenir des instructions détaillées, la prise en charge de CUDA 12.x et le dépannage des problèmes courants.
depuis l'importation fastembed TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", fournisseurs = ["CUDAExecutionProvider"] )print("Le modèle BAAI/bge-small-en-v1.5 est prêt à être utilisé sur un GPU.")
Installation avec Qdrant Client en Python :
pip install qdrant-client[fastembed]
ou
pip install qdrant-client[fastembed-gpu]
Vous devrez peut-être utiliser les guillemets pip install 'qdrant-client[fastembed]'
sur zsh.
from qdrant_client import QdrantClient# Initialisez le clientclient = QdrantClient("localhost", port=6333) # Pour la production# client = QdrantClient(":memory:") # Pour les petites expériences# Préparez vos documents, métadonnées et IDsdocs = ["Qdrant a des intégrations Langchain", "Qdrant a également des intégrations Llama Index"]metadata = [ {"source": "Langchain-docs"}, {"source": "Llama-index-docs"}, ]ids = [42, 2]# Si vous souhaitez changer de modèle :# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# Liste des modèles pris en charge : https://qdrant.github. io/fastembed/examples/Supported_Models# Utilisez le new add() au lieu de upsert()# Cela appelle en interne embed() du modelclient.add d'intégration configuré (collection_name="demo_collection", documents=docs, metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="Ceci est un document de requête")print(search_result)