46.6kЗаказать демоВойтиНачать бесплатно
Обнимающееся лицо

Обнимающееся лицо / all-mpnet-base-v2

Кодировщик предложений и коротких абзацев; генерирует 768-мерные векторы.

Обзор модели

All-mpnet-base-v2" - это кодировщик предложений и коротких абзацев, который преобразует входной текст в 768-мерный вектор. Это усовершенствованная версия модели microsoft/mpnet-base, доработанная на наборе данных из 1 миллиарда пар предложений с использованием контрастирующей цели обучения. all-mpnet-base-v2 идеально подходит для таких задач, как поиск информации, кластеризация и сходство предложений.

Для получения более подробной информации ознакомьтесь с этим постом: All-Mpnet-Base-V2: Enhancing Sentence Embedding with AI

Как создавать вкрапления с помощью all-mpnet-base-v2

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

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

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

Вот четыре основных этапа:

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

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

ef = SentenceTransformerEmbeddingFunction("sentence-transformers/all-mpnet-base-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 с all-mpnet-base-v2.

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

from sentence_transformers import SentenceTransformer
из pymilvus import MilvusClient

model = SentenceTransformer("sentence-transformers/all-mpnet-base-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=768,
    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"])

Дальнейшее чтение