FastEmbed es una biblioteca Python ligera y rápida creada para la generación de incrustaciones. Admitimos modelos de texto populares. Abra una incidencia de GitHub si desea que agreguemos un nuevo modelo.
El modelo de incrustación de texto predeterminado ( TextEmbedding
) es Flag Embedding, presentado en la tabla de clasificación MTEB. Admite prefijos de "consulta" y "paso" para el texto de entrada. A continuación se muestra un ejemplo de generación de incrustación de recuperación y cómo utilizar FastEmbed con Qdrant.
Liviana: FastEmbed es una biblioteca liviana con pocas dependencias externas. No requerimos una GPU y no descargamos GB de dependencias de PyTorch, sino que utilizamos ONNX Runtime. Esto lo convierte en un gran candidato para tiempos de ejecución sin servidor como AWS Lambda.
Rápido: FastEmbed está diseñado para la velocidad. Usamos ONNX Runtime, que es más rápido que PyTorch. También utilizamos el paralelismo de datos para codificar grandes conjuntos de datos.
Preciso: FastEmbed es mejor que OpenAI Ada-002. También admitimos un conjunto de modelos en constante expansión, incluidos algunos modelos multilingües.
Para instalar la biblioteca FastEmbed, pip funciona mejor. Puedes instalarlo con o sin soporte de GPU:
pip install fastembed# o con soporte de GPUpip install fastembed-gpu
de fastembed import TextEmbedding de escribir import List# Ejemplo de lista de documentos: List[str] = [ "Esto está diseñado para ser más rápido y liviano que otras bibliotecas de incrustación, por ejemplo, Transformers, Sentence-Transformers, etc.", "fastembed es compatible y mantenido por Qdrant.", ]# Esto activará la descarga y la inicialización del modeloembedding_model = TextEmbedding()print("El modelo BAAI/bge-small-en-v1.5 está listo para usar.")embeddings_generator = embedding_model.embed(documents) # recordatorio de que este es un generadorembeddings_list = list(embedding_model.embed(documents)) # también puedes convertir el generador en una lista, y eso en una matriz numpylen(embeddings_list[0]) # Vector de 384 dimensiones
Fastembed admite una variedad de modelos para diferentes tareas y modalidades. La lista de todos los modelos disponibles se puede encontrar aquí.
de 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)# ]
ESPALA++
desde fastembed import SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indices=[ 17, 123, 919, ... ], valores=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(índices=[ 38, 12, 91, ... ], valores=[0.11, 0.22, 0.39, ...])# ]
desde 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, ...],# ]),# matriz([# [-0.9019, 0.0335, -0.0032, 0.0991, ...],# [-0.2115, 0.8097 , 0,1052, 0,0195, ...],# ]), # ]
desde fastembed import ImageEmbeddingimages = [ "./path/to/image1.jpg", "./path/to/image2.jpg", ]model = ImageEmbedding(model_name="Qdrant/clip-ViT-B-32-vision")incrustaciones = 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 admite la ejecución en dispositivos GPU. Requiere la instalación del paquete fastembed-gpu
.
pip instala fastembed-gpu
Consulte nuestro ejemplo para obtener instrucciones detalladas, compatibilidad con CUDA 12.x y solución de problemas comunes.
desde fastembed import TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", proveedores=["CUDAExecutionProvider"] )print("El modelo BAAI/bge-small-en-v1.5 está listo para usar en una GPU.")
Instalación con Cliente Qdrant en Python:
pip instala qdrant-client [fastembed]
o
pip instala qdrant-client[fastembed-gpu]
Es posible que tengas que usar comillas pip install 'qdrant-client[fastembed]'
en zsh.
from qdrant_client import QdrantClient# Inicializa el clientclient = QdrantClient("localhost", port=6333) # Para producción# client = QdrantClient(":memory:") # Para pequeños experimentos# Prepara tus documentos, metadatos e IDsdocs = ["Qdrant tiene integraciones Langchain", "Qdrant también tiene integraciones Llama Index"]metadata = [ {"fuente": "Langchain-docs"}, {"fuente": "Llama-index-docs"}, ]ids = [42, 2]# Si desea cambiar el modelo:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# Lista de modelos compatibles: https://qdrant.github. io/fastembed/examples/Supported_Models# Utilice el nuevo add() en lugar de upsert()# Esto llama internamente a embed() del modelo de incrustación configurado.add( collection_name="demo_collection", documents=docs, metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="Este es un documento de consulta")print(search_result)