🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Модели
  • Home
  • Docs
  • Модели

  • Встраивания

  • Джина А.И.

Jina AI

Модели встраивания Jina AI - это высокопроизводительные модели встраивания текста, которые могут переводить текстовые данные в числовые представления, передавая семантику текста. Эти модели отлично подходят для таких задач, как плотный поиск, семантическое сходство текстов и многоязычное понимание.

Milvus интегрируется с моделями встраивания Jina AI через класс JinaEmbeddingFunction. Этот класс предоставляет методы для кодирования документов и запросов с помощью моделей встраивания Jina AI и возвращает вложения в виде плотных векторов, совместимых с индексацией Milvus. Чтобы воспользоваться этой функцией, получите API-ключ от Jina AI.

Чтобы воспользоваться этой функцией, установите необходимые зависимости:

pip install --upgrade pymilvus
pip install "pymilvus[model]"

Затем инстанцируйте JinaEmbeddingFunction:

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINAAI_API_KEY, # Provide your Jina AI API key
    task="retrieval.passage", # Specify the task
    dimensions=1024, # Defaults to 1024
)

Параметры:

  • model_name (строка)

    Имя модели встраивания Jina AI, которую следует использовать для кодирования. Вы можете указать любое из доступных имен моделей встраивания Jina AI, например jina-embeddings-v3, jina-embeddings-v2-base-en, и т. д. Если оставить этот параметр неуказанным, будет использоваться jina-embeddings-v3. Список доступных моделей см. в разделе Jina Embeddings.

  • api_key (string)

    Ключ API для доступа к API Jina AI.

  • task (строка)

    Тип входных данных, передаваемых модели. Требуется для моделей встраивания v3 и выше.

    • "retrieval.passage": Используется для кодирования больших документов в задачах поиска на этапе индексирования.
    • "retrieval.query": Используется для кодирования пользовательских запросов или вопросов в задачах поиска.
    • "classification": : Используется для кодирования текста в задачах классификации текстов.
    • "text-matching": : Используется для кодирования текста при сопоставлении по сходству, например для измерения сходства между двумя предложениями.
    • "clustering": Используется для задач кластеризации или ранжирования.
  • dimensions (int)

    Количество размерностей, которые должны иметь результирующие выходные вкрапления. По умолчанию 1024. Поддерживается только для моделей вкраплений v3 и выше.

  • late_chunking (bool)

    Этот параметр определяет, использовать ли новый метод разбиения на части, представленный Jina AI в прошлом месяце, для кодирования пакета предложений. По умолчанию установлено значение False. Если установить значение True, Jina AI API объединит все предложения в поле ввода и передаст их в модель как единую строку. Внутри модель встраивает эту длинную конкатенированную строку, а затем выполняет поздний чанкинг, возвращая список вкраплений, соответствующий размеру входного списка.

Для создания вкраплений для документов используйте метод encode_documents(). Этот метод предназначен для создания вкраплений документов в задачах асимметричного поиска, таких как индексирование документов для задач поиска или рекомендаций. В качестве задания в этом методе используется retrieval.passage.


```python
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

docs_embeddings = jina_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", jina_ef.dim, docs_embeddings[0].shape)

Ожидаемый результат похож на следующий:

Embeddings: [array([9.80641991e-02, -8.51697400e-02,  7.36531913e-02,  1.42558888e-02,
       -2.23589484e-02,  1.68494112e-03, -3.50753777e-02, -3.11530549e-02,
       -3.26012149e-02,  5.04568312e-03,  3.69836427e-02,  3.48948985e-02,
        8.19722563e-03,  5.88679723e-02, -6.71099266e-03, -1.82369724e-02,
...
        2.48654783e-02,  3.43279652e-02, -1.66154150e-02, -9.90478322e-03,
       -2.96043139e-03, -8.57473817e-03, -7.39028037e-04,  6.25024503e-03,
       -1.08831357e-02, -4.00776342e-02,  3.25369164e-02, -1.42691191e-03])]
Dim: 1024 (1024,)

Для создания вкраплений для запросов используйте метод encode_queries(). Этот метод предназначен для встраивания запросов в асимметричные задачи поиска, такие как поисковые запросы или вопросы. В качестве задания в этом методе используется retrieval.query.

queries = ["When was artificial intelligence founded", 
           "Where was Alan Turing born?"]

query_embeddings = jina_ef.encode_queries(queries)

print("Embeddings:", query_embeddings)
print("Dim", jina_ef.dim, query_embeddings[0].shape)

Ожидаемый результат похож на следующий:

Embeddings: [array([8.79201014e-03,  1.47551354e-02,  4.02722731e-02, -2.52991207e-02,
        1.12719582e-02,  3.75947170e-02,  3.97946090e-02, -7.36681819e-02,
       -2.17952449e-02, -1.16298944e-02, -6.83426252e-03, -5.12507409e-02,
        5.26071340e-02,  6.75181448e-02,  3.92445624e-02, -1.40817231e-02,
...
        8.81703943e-03,  4.24629413e-02, -2.32944116e-02, -2.05193572e-02,
       -3.22035812e-02,  2.81896023e-03,  3.85326855e-02,  3.64372656e-02,
       -1.65050142e-02, -4.26847413e-02,  2.02664156e-02, -1.72684863e-02])]
Dim 1024 (1024,)

Для создания вкраплений входов для сопоставления по сходству (например, в задачах STS или симметричного поиска), классификации текстов, кластеризации или ранжирования используйте соответствующее значение параметра task при инстанцировании класса JinaEmbeddingFunction.

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINA_API_KEY, # Provide your Jina AI API key
    task="text-matching",
    dimensions=1024, # Defaults to 1024
)

texts = [
    "Follow the white rabbit.",  # English
    "Sigue al conejo blanco.",  # Spanish
    "Suis le lapin blanc.",  # French
    "跟着白兔走。",  # Chinese
    "اتبع الأرنب الأبيض.",  # Arabic
    "Folge dem weißen Kaninchen.",  # German
]

embeddings = jina_ef(texts)

# Compute similarities
print(embeddings[0] @ embeddings[1].T)
Содержание

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?