永久職位
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) # 提醒這是一個Generatorembeds_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.95, 0. ..], 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. 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.095. ],# [-0.1019, 0.0635, -0.0332, 0.0522, ...],# ]),# 數組([# [-0.9019, 0.0335, -0.0032, 0.0991, ...],#-0. , 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。 /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)