46.6kЗаказать демоВойтиНачать бесплатно
Джина А.И.

Джина А.И. / jina-embeddings-v3

Многоязычная модель встраивания текста; поддерживает 89 языков; может обрабатывать до 8192 лексем в одной последовательности.

Обзор jina-embeddings-v3

Модель jina-embeddings-v3 - это недавно выпущенный JinaAI многоязычный инструмент для встраивания текста с 570 миллионами параметров и максимальной длиной входных данных 8192 лексем. Она может обрабатывать многоязычные данные и решать задачи поиска по длинным контекстам, достигая наилучшей производительности (SOTA) на 94 языках. Эта модель создает вкрапления, пригодные для решения целого ряда задач, включая поиск по запросу-документу, кластеризацию, классификацию и сопоставление текстов.

Jina-embeddings-v3 также поддерживает Matryoshka Embeddings, что позволяет настраивать размер выходных вкраплений в зависимости от ваших потребностей. Хотя по умолчанию размер выходных данных составляет 1024, вы можете уменьшить его до 32, 64, 128, 256, 512 или 768 без потери производительности, что делает программу пригодной для различных приложений.

Сравните jina-embeddings-v3 с моделями Jina v2:

МодельРазмер параметраРазмер встраиванияТекст
jina-embeddings-v3570Mгибкий размер встраивания (по умолчанию: 1024)многоязычное встраивание текста; поддерживает 94 языка в целом
jina-embeddings-v2-small-en33M512монолингвальных вкраплений на английском языке
jina-embeddings-v2-base-en137M768английских одноязычных вкраплений
jina-embeddings-v2-base-zh161M768Китайско-английские двуязычные вкрапления
jina-embeddings-v2-base-de161M768Немецко-английские двуязычные вкрапления
jina-embeddings-v2-base-code161M768Английский и языки программирования

Как создавать вкрапления с помощью jina-embeddings-v3

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

  • PyMilvus: Python SDK для Milvus, который легко интегрирует модель jina-embeddings-v3.
  • Библиотека SentenceTransformer: библиотека Python sentence-transformer.

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

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

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

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v3", trust_remote_code=True)

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"])

Более подробную информацию можно найти на этой странице документации Jina AI documentation page.

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

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("jinaai/jina-embeddings-v3", trust_remote_code=True)

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

запросы = ["запрос: Когда был основан искусственный интеллект",
           "query: Wo wurde Alan Turing geboren?" ]
# Генерируем вкрапления для запросов
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=512,
    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"])

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