FastEmbed는 임베딩 생성을 위해 제작된 가볍고 빠른 Python 라이브러리입니다. 우리는 널리 사용되는 텍스트 모델을 지원합니다. 새 모델을 추가하려면 GitHub 문제를 열어주세요.
기본 텍스트 임베딩( TextEmbedding
) 모델은 MTEB 리더보드에 표시되는 플래그 임베딩입니다. 입력 텍스트에 대한 "쿼리" 및 "통과" 접두사를 지원합니다. 다음은 검색 임베딩 생성에 대한 예와 Qdrant와 함께 FastEmbed를 사용하는 방법입니다.
경량: FastEmbed는 외부 종속성이 거의 없는 경량 라이브러리입니다. 우리는 GPU가 필요하지 않으며 GB 단위의 PyTorch 종속성을 다운로드하지 않고 대신 ONNX 런타임을 사용합니다. 따라서 AWS Lambda와 같은 서버리스 런타임에 적합한 후보입니다.
신속함: FastEmbed는 속도를 위해 설계되었습니다. 우리는 PyTorch보다 빠른 ONNX 런타임을 사용합니다. 또한 대규모 데이터 세트를 인코딩하기 위해 데이터 병렬성을 사용합니다.
정확성: FastEmbed는 OpenAI Ada-002보다 낫습니다. 또한 몇 가지 다국어 모델을 포함하여 계속 확장되는 모델 세트도 지원합니다.
FastEmbed 라이브러리를 설치하려면 pip가 가장 잘 작동합니다. GPU 지원 유무에 관계없이 설치할 수 있습니다.
pip install fastembed# 또는 GPU 지원 pip install fastembed-gpu
from fastembed import TextEmbeddingfrom 타이핑 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, ... ], 값=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(인덱스=[ 38, 12, 91, ... ], 값=[0.11, 0.22, 0.39, ...])# ]
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, ...],# ]), # ]
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 지원 및 일반적인 문제 해결에 대한 예제를 확인하세요.
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 설치 qdrant-client[fastembed]
또는
pip 설치 qdrant-클라이언트[fastembed-gpu]
zsh에서 pip install 'qdrant-client[fastembed]'
따옴표를 사용해야 할 수도 있습니다.
from qdrant_client import QdrantClient# 클라이언트 초기화client = QdrantClient("localhost", port=6333) # 프로덕션용# client = QdrantClient(":memory:") # 소규모 실험용# 문서, 메타데이터 및 IDsdocs 준비 = ["Qdrant Langchain 통합이 있습니다.", "Qdrant에는 Llama Index 통합도 있습니다."]metadata = [ {"출처": "Langchain-docs"}, {"출처": "Llama-index-docs"}, ]ids = [42, 2]# 모델을 변경하려는 경우:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# 지원 모델 목록: https://qdrant.github. io/fastembed/examples/Supported_Models# upsert() 대신 새로운 add()를 사용합니다# 이는 구성된 임베딩 모델의 embed()를 내부적으로 호출합니다client.add( collection_name="demo_collection", document=docs, Metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="쿼리 문서입니다")print(search_result)