永久职位
0.4.1
FastEmbed 是一个轻量级、快速的 Python 库,专为嵌入生成而构建。我们支持流行的文本模型。如果您希望我们添加新模型,请打开 GitHub 问题。
默认的文本嵌入 ( TextEmbedding
) 模型是 Flag Embedding,出现在 MTEB 排行榜中。它支持输入文本的“query”和“passage”前缀。以下是检索嵌入生成以及如何将 FastEmbed 与 Qdrant 结合使用的示例。
Light:FastEmbed 是一个轻量级库,几乎没有外部依赖项。我们不需要 GPU,也不需要下载 GB 的 PyTorch 依赖项,而是使用 ONNX 运行时。这使其成为 AWS Lambda 等无服务器运行时的绝佳候选者。
快速:FastEmbed 专为提高速度而设计。我们使用 ONNX 运行时,它比 PyTorch 更快。我们还使用数据并行性来编码大型数据集。
准确:FastEmbed 优于 OpenAI Ada-002。我们还支持不断扩展的模型集,包括一些多语言模型。
要安装 FastEmbed 库,pip 效果最好。您可以在有或没有 GPU 支持的情况下安装它:
pip install fastembed# 或使用 GPU 支持pip install fastembed-gpu
from fastembed import TextEmbeddingfrom Typing import List# 文档列表示例documents: List[str] = [ "这比其他嵌入库更快、更轻,例如 Transformers、Sentence-Transformers 等", "fastembed 得到支持并维护由 Qdrant 提供。", ]# 这将触发模型下载和初始化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),# 数组([-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, ...],# ]),# 数组([# [-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),# 数组([-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# 初始化客户端client = QdrantClient("localhost", port=6333) # 用于生产# client = QdrantClient(":memory:") # 用于小型实验# 准备文档、元数据和 IDdocs = ["Qdrant具有 Langchain 集成”,“Qdrant 还具有 Llama 索引集成”]元数据 = [ {"source": "Langchain-docs"}, {"source": "Llama-index-docs"}, ]ids = [42, 2]# 如果要更改模型:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# 支持的模型列表:https://qdrant.github。 io/fastembed/examples/Supported_Models# 使用新的 add() 而不是 upsert()# 这会在内部调用已配置的嵌入模型的 embed()client.add( collection_name="demo_collection", Documents=docs,metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="这是一个查询文档")print(search_result)