FastEmbed adalah pustaka Python yang ringan dan cepat yang dibuat untuk generasi penyematan. Kami mendukung model teks populer. Silakan buka masalah GitHub jika Anda ingin kami menambahkan model baru.
Model penyematan teks default ( TextEmbedding
) adalah Penyematan Bendera, yang disajikan di papan peringkat MTEB. Ini mendukung awalan "query" dan "passage" untuk teks masukan. Berikut adalah contoh Retrieval Embedding Generation dan cara menggunakan FastEmbed dengan Qdrant.
Ringan: FastEmbed adalah perpustakaan ringan dengan sedikit ketergantungan eksternal. Kami tidak memerlukan GPU dan tidak mengunduh dependensi PyTorch sebesar GB, melainkan menggunakan ONNX Runtime. Hal ini menjadikannya kandidat yang bagus untuk runtime tanpa server seperti AWS Lambda.
Cepat: FastEmbed dirancang untuk kecepatan. Kami menggunakan ONNX Runtime, yang lebih cepat dari PyTorch. Kami juga menggunakan paralelisme data untuk menyandikan kumpulan data besar.
Akurat: FastEmbed lebih baik dari OpenAI Ada-002. Kami juga mendukung serangkaian model yang terus berkembang, termasuk beberapa model multibahasa.
Untuk menginstal perpustakaan FastEmbed, pip berfungsi paling baik. Anda dapat menginstalnya dengan atau tanpa dukungan GPU:
pip install fastembed# atau dengan dukungan GPUpip install fastembed-gpu
dari fastembed import TextEmbeddingdari mengetik import Daftar# Contoh daftar dokumendokumen: Daftar[str] = [ "Ini dibuat agar lebih cepat dan ringan dibandingkan pustaka penyematan lainnya misalnya Transformers, Sentence-Transformers, dll.", "fastembed didukung oleh dan dipelihara oleh Qdrant.", ]# Ini akan memicu pengunduhan model dan inisialisasiembedding_model = TextEmbedding()print("Model BAAI/bge-small-en-v1.5 siap digunakan.")embeddings_generator = embedding_model.embed(documents) # pengingat ini adalah generatorembeddings_list = list(embedding_model.embed(documents)) # Anda juga dapat mengonversi generator menjadi daftar, dan itu menjadi numpy arraylen(embeddings_list[0]) # Vektor 384 dimensi
Fastembed mendukung berbagai model untuk tugas dan modalitas yang berbeda. Daftar semua model yang tersedia dapat ditemukan di sini
dari impor fastembed 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++
dari fastembed import SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indeks=[ 17, 123, 919, ... ], nilai=[0,71, 0,22, 0,39, ...]),# SparseEmbedding(indeks=[ 38, 12, 91, ... ], nilai=[0.11, 0.22, 0.39, ...])# ]
dari 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, ...],# ]), # ]
dari impor fastembed ImageEmbeddingimages = [ "./path/to/image1.jpg", "./path/to/image2.jpg", ]model = ImageEmbedding(model_name="Qdrant/clip-ViT-B-32-vision")embeddings = daftar(model.embed(gambar))# [# array([-0.1115, 0.0097, 0.0052, 0.0195, ... ], dtype=float32),# array([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
FastEmbed mendukung berjalan pada perangkat GPU. Ini memerlukan instalasi paket fastembed-gpu
.
pip instal fastembed-gpu
Periksa contoh kami untuk petunjuk terperinci, dukungan CUDA 12.x, dan pemecahan masalah umum.
dari impor fastembed TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", penyedia=["Penyedia Eksekusi CUDA"] )print("Model BAAI/bge-small-en-v1.5 siap digunakan pada GPU.")
Instalasi dengan Klien Qdrant dengan Python:
pip instal qdrant-client[fastembed]
atau
pip instal qdrant-client[fastembed-gpu]
Anda mungkin harus menggunakan tanda kutip pip install 'qdrant-client[fastembed]'
di zsh.
dari qdrant_client import QdrantClient# Inisialisasi clientclient = QdrantClient("localhost", port=6333) # Untuk produksi# client = QdrantClient(":memory:") # Untuk eksperimen kecil# Siapkan dokumen, metadata, dan IDsdocs = ["Qdrant memiliki integrasi Langchain", "Qdrant juga memiliki integrasi Indeks Llama"]metadata = [ {"sumber": "Langchain-docs"}, {"sumber": "Llama-index-docs"}, ]ids = [42, 2]# Jika Anda ingin mengubah model:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# Daftar model yang didukung: https://qdrant.github. io/fastembed/examples/Supported_Models# Gunakan add() baru alih-alih upsert()# Ini secara internal memanggil embed() dari modelclient.add penyematan yang dikonfigurasi ( collection_name="demo_collection", document=docs, metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="Ini adalah dokumen query")print(search_result)