Перед внедрением эмбеддингов

При выборе провайдера эмбеддингов следует учитывать несколько факторов в зависимости от ваших потребностей и предпочтений:

  • Размер набора данных и специфика предметной области: размер набора данных для обучения модели и его релевантность для области, в которой вы хотите создавать эмбеддинги. Более крупные или специализированные данные обычно дают лучшие эмбеддинги в конкретной области
  • Производительность при выводе: скорость поиска эмбеддингов и общая задержка. Это особенно важно для масштабных производственных развертываний
  • Настройка: возможности дальнейшего обучения на частных данных или специализации моделей для конкретных областей. Это может улучшить работу с уникальными словарями

Как получить эмбеддинги с Anthropic

Anthropic не предлагает собственную модель эмбеддингов. Одним из провайдеров эмбеддингов, который предлагает широкий спектр возможностей, охватывающих все вышеперечисленные аспекты, является Voyage AI.

Voyage AI создает современные модели эмбеддингов и предлагает настроенные модели для конкретных отраслей, таких как финансы и здравоохранение, или специальные модели, настроенные для отдельных клиентов.

Остальная часть этого руководства посвящена Voyage AI, но мы рекомендуем вам оценить различных поставщиков эмбеддингов, чтобы найти наиболее подходящий вариант для вашего конкретного случая.

Доступные модели

Voyage рекомендует использовать следующие модели текстовых эмбеддингов:

МодельДлина контекстаРазмерность эмбеддингаОписание
voyage-3-large32,0001024 (по умолчанию), 256, 512, 2048Лучшее качество для общего назначения и многоязычного поиска.
voyage-332,0001024Оптимизирована для общего назначения и многоязычного поиска. Подробности в блоге.
voyage-3-lite32,000512Оптимизирована для низкой задержки и стоимости. Подробности в блоге.
voyage-code-332,0001024 (по умолчанию), 256, 512, 2048Оптимизирована для поиска кода. Подробности в блоге.
voyage-finance-232,0001024Оптимизирована для финансового поиска и RAG. Подробности в блоге.
voyage-law-216,0001024Оптимизирована для юридического и длинного контекста поиска и RAG. Также улучшена производительность во всех областях. Подробности в блоге.

Дополнительно рекомендуются следующие мультимодальные модели эмбеддингов:

МодельДлина контекстаРазмерность эмбеддингаОписание
voyage-multimodal-3320001024Богатая мультимодальная модель эмбеддингов, способная векторизовать чередующийся текст и содержательные изображения, такие как скриншоты PDF, слайды, таблицы, рисунки и многое другое. Подробности в блоге.

Нужна помощь в выборе модели текстовых эмбеддингов? Ознакомьтесь с FAQ.

Начало работы с Voyage AI

Для доступа к эмбеддингам Voyage:

  1. Зарегистрируйтесь на сайте Voyage AI
  2. Получите API ключ
  3. Установите API ключ как переменную окружения для удобства:
export VOYAGE_API_KEY="<ваш секретный ключ>"

Вы можете получить эмбеддинги, используя либо официальный voyageai Python пакет, либо HTTP запросы, как описано ниже.

Python пакет Voyage

Пакет voyageai можно установить с помощью следующей команды:

pip install -U voyageai

Затем вы можете создать объект клиента и начать использовать его для создания эмбеддингов ваших текстов:

import voyageai

vo = voyageai.Client()
# Это автоматически использует переменную окружения VOYAGE_API_KEY.
# Альтернативно, можно использовать vo = voyageai.Client(api_key="<ваш секретный ключ>")

texts = ["Пример текста 1", "Пример текста 2"]

result = vo.embed(texts, model="voyage-3", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings будет списком из двух векторов эмбеддингов, каждый из которых содержит 1024 числа с плавающей точкой. После выполнения вышеуказанного кода, два эмбеддинга будут выведены на экран:

[0.02012746, 0.01957859, ...]  # эмбеддинг для "Пример текста 1"
[0.01429677, 0.03077182, ...]  # эмбеддинг для "Пример текста 2"

При создании эмбеддингов вы также можете указать несколько других аргументов для функции embed(). Подробнее о спецификации можно прочитать здесь

HTTP API Voyage

Вы также можете получить эмбеддинги, отправив HTTP запрос через команду curl в терминале:

curl https://api.voyageai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VOYAGE_API_KEY" \
  -d '{
    "input": ["Пример текста 1", "Пример текста 2"],
    "model": "voyage-3"
  }'

Ответ, который вы получите, будет JSON объектом, содержащим эмбеддинги и использование токенов:

{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-3",
  "usage": {
    "total_tokens": 10
  }
}

Подробнее о конечной точке эмбеддингов можно прочитать в документации Voyage

AWS Marketplace

Эмбеддинги Voyage также доступны на AWS Marketplace. Инструкции по доступу к Voyage на AWS доступны здесь.

Пример быстрого старта

Теперь, когда мы знаем, как получить эмбеддинги, давайте рассмотрим краткий пример.

Предположим, у нас есть небольшой корпус из шести документов для поиска

documents = [
    "Средиземноморская диета делает акцент на рыбе, оливковом масле и овощах, считается, что она снижает риск хронических заболеваний.",
    "Фотосинтез в растениях преобразует световую энергию в глюкозу и производит необходимый кислород.",
    "Инновации 20-го века, от радио до смартфонов, были сосредоточены на электронных достижениях.",
    "Реки обеспечивают водой, орошением и средой обитания для водных видов, жизненно важных для экосистем.",
    "Конференц-звонок Apple для обсуждения результатов четвертого финансового квартала и обновлений бизнеса запланирован на четверг, 2 ноября 2023 года в 14:00 PT / 17:00 ET.",
    "Произведения Шекспира, такие как 'Гамлет' и 'Сон в летнюю ночь', остаются в литературе."
]

Сначала мы используем Voyage для преобразования каждого из них в вектор эмбеддинга

import voyageai

vo = voyageai.Client()

# Создаем эмбеддинги документов
doc_embds = vo.embed(
    documents, model="voyage-3", input_type="document"
).embeddings

Эмбеддинги позволят нам выполнять семантический поиск / извлечение в векторном пространстве. Для примера запроса,

query = "Когда запланирован конференц-звонок Apple?"

мы преобразуем его в эмбеддинг и проводим поиск ближайшего соседа, чтобы найти наиболее релевантный документ на основе расстояния в пространстве эмбеддингов.

import numpy as np

# Создаем эмбеддинг запроса
query_embd = vo.embed(
    [query], model="voyage-3", input_type="query"
).embeddings[0]

# Вычисляем сходство
# Эмбеддинги Voyage нормализованы до длины 1, поэтому скалярное произведение
# и косинусное сходство одинаковы.
similarities = np.dot(doc_embds, query_embd)

retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])

Обратите внимание, что мы используем input_type="document" и input_type="query" для создания эмбеддингов документа и запроса соответственно. Более подробную спецификацию можно найти здесь.

Результатом будет 5-й документ, который действительно наиболее релевантен запросу:

Конференц-звонок Apple для обсуждения результатов четвертого финансового квартала и обновлений бизнеса запланирован на четверг, 2 ноября 2023 года в 14:00 PT / 17:00 ET.

Если вы ищете подробный набор руководств по работе с RAG с использованием эмбеддингов, включая векторные базы данных, ознакомьтесь с нашим руководством по RAG.

FAQ

Цены

Посетите страницу с ценами Voyage для получения актуальной информации о ценах.