FastEmbed — это легкая и быстрая библиотека Python, созданная для генерации встраивания. Мы поддерживаем популярные текстовые модели. Откройте проблему на GitHub, если хотите, чтобы мы добавили новую модель.
Моделью встраивания текста по умолчанию ( TextEmbedding
) является встраивание флага, представленное в таблице лидеров MTEB. Он поддерживает префиксы «запрос» и «проход» для входного текста. Вот пример генерации извлечения встраивания и использования FastEmbed с Qdrant.
Легкий: FastEmbed — это легкая библиотека с небольшим количеством внешних зависимостей. Нам не требуется графический процессор и мы не загружаем ГБ зависимостей PyTorch, а вместо этого используем среду выполнения ONNX. Это делает его отличным кандидатом для бессерверных сред выполнения, таких как AWS Lambda.
Быстро: FastEmbed создан для скорости. Мы используем среду выполнения ONNX, которая быстрее, чем PyTorch. Мы также используем параллелизм данных для кодирования больших наборов данных.
Точно: FastEmbed лучше, чем OpenAI Ada-002. Мы также поддерживаем постоянно расширяющийся набор моделей, включая несколько многоязычных моделей.
Для установки библиотеки FastEmbed лучше всего подойдет pip. Вы можете установить его с поддержкой графического процессора или без нее:
pip install fastembed# или с поддержкой графического процессораpip install fastembed-gpu
from fastembed import TextEmbedding from typing import List# Пример списка документов: List[str] = [ "Это создано так, чтобы быть быстрее и проще, чем другие библиотеки встраивания, например Transformers, Sentence-Transformers и т. д.", "fastembed поддерживается и поддерживается от Qdrant.", ]# Это вызовет загрузку и инициализацию моделиembedding_model = TextEmbedding()print("Модель BAAI/bge-small-en-v1.5 готова к использованию.")embeddings_generator = embedding_model.embed(documents) # напоминание, что это generatembeddings_list = list(embedding_model.embed(documents)) # вы также можете преобразовать генератор в список, а это в numpy arraylen(embeddings_list[0]) # Вектор из 384 измерений
Fastembed поддерживает множество моделей для разных задач и модальностей. Список всех доступных моделей можно найти здесь.
из импорта 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)# ]
СПЛАД++
из fastembed import SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indices=[ 17, 123, 919, ... ],values=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(indices=[ 38, 12, 91, ... ], значения=[0.11, 0.22, 0.39, ...])# ]
из импорта fastembed 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),# array([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
FastEmbed поддерживает работу на устройствах с графическим процессором. Требуется установка пакета fastembed-gpu
.
pip установить fastembed-gpu
Ознакомьтесь с нашим примером для получения подробных инструкций, поддержки CUDA 12.x и устранения распространенных проблем.
из импорта fastembed TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", поставщики = ["CUDAExecutionProvider"] )print("Модель BAAI/bge-small-en-v1.5 готова к использованию на графическом процессоре.")
Установка с помощью клиента Qdrant на Python:
pip install qdrant-client [фастембед]
или
pip install qdrant-client [fastembed-gpu]
Возможно, вам придется использовать кавычки pip install 'qdrant-client[fastembed]'
на zsh.
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# Используйте новый add() вместо upsert()# Это внутренне вызывает 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)