46.5kЗаказать демоВойтиНачать бесплатно
Microsoft

Microsoft / e5-large-v2

Идеально подходит для обеспечения высокой производительности при сохранении открытого исходного кода и минимальных требований к оборудованию. Хорошо работает с грязными данными. Хорошо подходит для коротких запросов, которые должны возвращать отрывки текста средней длины (1-2 абзаца).

Введение в модель встраивания e5-large-v2

e5-large-v2 - это улучшенная версия модели e5-base-v2, обеспечивающая превосходную производительность в различных задачах обработки естественного языка (NLP), включая семантический поиск, retrieval augmented generation (RAG) и кластеризацию. Он также основан на слабом контрастном предварительном обучении и особенно эффективен для работы с беспорядочными данными и короткими запросами, возвращающими отрывки текста средней длины.

Модель требует, чтобы входные тексты были снабжены префиксом "query: " для запросов и "passage: " для отрывков. Модель может быть использована с помощью таких библиотек, как Hugging Face's Transformers и Sentence Transformers, что позволяет легко интегрировать ее в приложения.

Сравнение e5-large-v2 и e5-base-v2:

Характеристика/возможностиe5-base-v2e5-large-v2
Слои1224
Размер вставки7681024
Макс токенов512512
ПроизводительностьХорошо подходит для общих задач встраивания текстаСильная производительность в таких бенчмарках, как BEIR и MTEB, часто превосходящая более мелкие модели
Требования к входному префиксу"query: " для запросов, "passage: " для отрывков"query: " для запросов, "passage: " для отрывков

Как создавать векторные вкрапления с помощью модели e5-large-v2

Существует два основных способа создания векторных вкраплений:

  1. PyMilvus: Python SDK для Milvus, в который легко интегрируется модель e5-large-v2.
  2. Библиотека SentenceTransformer: библиотека Python `sentence-transformer.

После того как векторные вкрапления сгенерированы, их можно хранить в Zilliz Cloud (полностью управляемый сервис векторных баз данных на базе Milvus) и использовать для поиска семантического сходства. Вот четыре ключевых шага:

  1. Зарегистрируйтесь для получения бесплатной учетной записи Zilliz Cloud.
  2. Настройте бессерверный кластер и получите Публичную конечную точку и ключ API.
  3. Создайте коллекцию векторов и вставьте в нее свои векторные вкрапления.
  4. Запустите семантический поиск по сохраненным вкраплениям.

Генерировать векторные вкрапления с помощью PyMilvus и вставлять их в Zilliz Cloud для семантического поиска

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction
из pymilvus import MilvusClient

ef = SentenceTransformerEmbeddingFunction("intfloat/e5-large-v2")
docs = [
   "Искусственный интеллект был основан как академическая дисциплина в 1956 году",
   "Алан Тьюринг был первым человеком, который провел серьезные исследования в области искусственного интеллекта",
   "Тьюринг родился в Майда-Вейл, Лондон, и вырос на юге Англии".
]
# Генерируем вкрапления для документов
docs_embeddings = ef(docs)

запросы = ["Когда был основан искусственный интеллект",
          "Где родился Алан Тьюринг?"]
# Генерируем вкрапления для запросов
query_embeddings = ef(queries)

# Подключение к облаку Zilliz с помощью публичной конечной точки и ключа API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

КОЛЛЕКЦИЯ = "документы"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    имя_коллекции=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

для doc, embedding в zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    имя_коллекции=КОЛЛЕКЦИЯ,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Для получения дополнительной информации обратитесь к нашей документации PyMilvus Embedding Model.

Генерируем векторные вкрапления с помощью библиотеки SentenceTransformer и вставляем их в Zilliz Cloud для семантического поиска

from sentence_transformers import SentenceTransformer
из pymilvus import MilvusClient

model = SentenceTransformer("intfloat/e5-large-v2")

docs = [
   "Искусственный интеллект был основан как академическая дисциплина в 1956 году",
   "Алан Тьюринг был первым человеком, который провел серьезные исследования в области искусственного интеллекта",
   "Тьюринг родился в Майда-Вейл, Лондон, и вырос на юге Англии".
]
# Генерируем вкрапления для документов
docs_embeddings = model.encode(docs, normalize_embeddings=True)

запросы = ["Когда был основан искусственный интеллект",
          "Где родился Алан Тьюринг?"]
# Генерируем вкрапления для запросов
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Подключение к облаку Zilliz с помощью публичной конечной точки и ключа API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

КОЛЛЕКЦИЯ = "документы"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    имя_коллекции=COLLECTION,
    dimension=1024,
    auto_id=True)

для doc, embedding в zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    имя_коллекции=КОЛЛЕКЦИЯ,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Дополнительную информацию можно найти в Документация SentenceTransformer.