Перед внедрением эмбеддингов
При выборе провайдера эмбеддингов есть несколько факторов, которые вы можете учитывать в зависимости от ваших потребностей и предпочтений:- Размер набора данных и специфичность домена: размер набора данных для обучения модели и его релевантность для домена, который вы хотите встраивать. Более крупные или более специфичные для домена данные обычно производят лучшие внутридоменные эмбеддинги
- Производительность вывода: скорость поиска эмбеддингов и сквозная задержка. Это особенно важное соображение для крупномасштабных производственных развертываний
- Настройка: варианты для продолжения обучения на частных данных или специализации моделей для очень специфических доменов. Это может улучшить производительность на уникальных словарях
Как получить эмбеддинги с Anthropic
Anthropic не предлагает собственную модель эмбеддингов. Один из провайдеров эмбеддингов, который имеет широкий спектр опций и возможностей, охватывающих все вышеперечисленные соображения, — это Voyage AI. Voyage AI создает современные модели эмбеддингов и предлагает настроенные модели для конкретных отраслевых доменов, таких как финансы и здравоохранение, или индивидуальные тонко настроенные модели для отдельных клиентов. Остальная часть этого руководства посвящена Voyage AI, но мы призываем вас оценить различных поставщиков эмбеддингов, чтобы найти наилучшее соответствие для вашего конкретного случая использования.Доступные модели
Voyage рекомендует использовать следующие модели текстовых эмбеддингов:| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Лучшее качество поиска общего назначения и многоязычного поиска. См. блог-пост для подробностей. |
voyage-3.5 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для качества поиска общего назначения и многоязычного поиска. См. блог-пост для подробностей. |
voyage-3.5-lite | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для задержки и стоимости. См. блог-пост для подробностей. |
voyage-code-3 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для поиска кода. См. блог-пост для подробностей. |
voyage-finance-2 | 32,000 | 1024 | Оптимизирована для поиска и RAG в области финансов. См. блог-пост для подробностей. |
voyage-law-2 | 16,000 | 1024 | Оптимизирована для юридического поиска и поиска с длинным контекстом и RAG. Также улучшенная производительность во всех доменах. См. блог-пост для подробностей. |
| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Богатая мультимодальная модель эмбеддингов, которая может векторизовать чередующийся текст и изображения, богатые содержанием, такие как скриншоты PDF-файлов, слайды, таблицы, фигуры и многое другое. См. блог-пост для подробностей. |
Начало работы с Voyage AI
Для доступа к эмбеддингам Voyage:- Зарегистрируйтесь на веб-сайте Voyage AI
- Получите API-ключ
- Установите API-ключ как переменную окружения для удобства:
voyageai, либо HTTP-запросы, как описано ниже.
Библиотека Voyage Python
Пакетvoyageai можно установить с помощью следующей команды:
result.embeddings будет списком из двух векторов эмбеддингов, каждый содержащий 1024 числа с плавающей точкой. После выполнения приведенного выше кода два эмбеддинга будут выведены на экран:
embed().
Для получения дополнительной информации о пакете Voyage python см. документацию Voyage.
HTTP API Voyage
Вы также можете получить эмбеддинги, запросив HTTP API Voyage. Например, вы можете отправить HTTP-запрос через командуcurl в терминале:
AWS Marketplace
Эмбеддинги Voyage доступны на AWS Marketplace. Инструкции по доступу к Voyage на AWS доступны здесь.Пример быстрого старта
Теперь, когда мы знаем, как получить эмбеддинги, давайте рассмотрим краткий пример. Предположим, у нас есть небольшой корпус из шести документов для поискаinput_type="document" и input_type="query" для встраивания документа и запроса соответственно. Более подробную спецификацию можно найти здесь.
Результатом будет 5-й документ, который действительно наиболее релевантен запросу:
FAQ
Почему эмбеддинги Voyage имеют превосходное качество?
Почему эмбеддинги Voyage имеют превосходное качество?
Модели эмбеддингов полагаются на мощные нейронные сети для захвата и сжатия семантического контекста, подобно генеративным моделям. Команда опытных исследователей ИИ Voyage оптимизирует каждый компонент процесса эмбеддинга, включая:
- Архитектуру модели
- Сбор данных
- Функции потерь
- Выбор оптимизатора
Какие модели эмбеддингов доступны и какую следует использовать?
Какие модели эмбеддингов доступны и какую следует использовать?
Для эмбеддингов общего назначения мы рекомендуем:
voyage-3-large: Лучшее качествоvoyage-3.5-lite: Наименьшая задержка и стоимостьvoyage-3.5: Сбалансированная производительность с превосходным качеством поиска по конкурентоспособной цене
input_type, чтобы указать, является ли текст запросом или типом документа.Модели для конкретных доменов:- Юридические задачи:
voyage-law-2 - Код и документация по программированию:
voyage-code-3 - Задачи, связанные с финансами:
voyage-finance-2
Какую функцию сходства следует использовать?
Какую функцию сходства следует использовать?
Вы можете использовать эмбеддинги Voyage с любой из функций: сходство скалярного произведения, косинусное сходство или евклидово расстояние. Объяснение о сходстве эмбеддингов можно найти здесь.Эмбеддинги Voyage AI нормализованы до длины 1, что означает, что:
- Косинусное сходство эквивалентно сходству скалярного произведения, при этом последнее может быть вычислено быстрее.
- Косинусное сходство и евклидово расстояние приведут к идентичным рейтингам.
Какова связь между символами, словами и токенами?
Какова связь между символами, словами и токенами?
Пожалуйста, см. эту страницу.
Когда и как следует использовать параметр input_type?
Когда и как следует использовать параметр input_type?
Для всех задач поиска и случаев использования (например, RAG) мы рекомендуем использовать параметр
input_type для указания того, является ли входной текст запросом или документом. Не опускайте input_type и не устанавливайте input_type=None. Указание того, является ли входной текст запросом или документом, может создать лучшие представления плотных векторов для поиска, что может привести к лучшему качеству поиска.При использовании параметра input_type специальные подсказки добавляются к входному тексту перед встраиванием. В частности:📘 Подсказки, связанные сinput_type
- Для запроса подсказка: “Represent the query for retrieving supporting documents: ”.
- Для документа подсказка: “Represent the document for retrieval: ”.
- Пример
- Когда
input_type="query", запрос типа “When is Apple’s conference call scheduled?” станет “Represent the query for retrieving supporting documents: When is Apple’s conference call scheduled?”- Когда
input_type="document", запрос типа “Apple’s conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.” станет “Represent the document for retrieval: Apple’s conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.”
voyage-large-2-instruct, как следует из названия, обучена отвечать на дополнительные инструкции, которые добавляются к входному тексту. Для классификации, кластеризации или других подзадач MTEB используйте инструкции здесь.Какие варианты квантования доступны?
Какие варианты квантования доступны?
Квантование в эмбеддингах преобразует значения высокой точности, такие как 32-битные числа с плавающей точкой одинарной точности, в форматы более низкой точности, такие как 8-битные целые числа или 1-битные двоичные значения, уменьшая хранение, память и затраты в 4 и 32 раза соответственно. Поддерживаемые модели Voyage позволяют квантование, указывая тип выходных данных с параметром
output_dtype:float: Каждый возвращаемый эмбеддинг представляет собой список 32-битных (4-байтных) чисел с плавающей точкой одинарной точности. Это значение по умолчанию и обеспечивает наивысшую точность / точность поиска.int8иuint8: Каждый возвращаемый эмбеддинг представляет собой список 8-битных (1-байтных) целых чисел в диапазоне от -128 до 127 и от 0 до 255 соответственно.binaryиubinary: Каждый возвращаемый эмбеддинг представляет собой список 8-битных целых чисел, которые представляют упакованные в биты, квантованные однобитные значения эмбеддинга:int8дляbinaryиuint8дляubinary. Длина возвращаемого списка целых чисел составляет 1/8 от фактической размерности эмбеддинга. Двоичный тип использует метод смещенного двоичного кода, о котором вы можете узнать больше в FAQ ниже.
Пример двоичного квантования Рассмотрим следующие восемь значений эмбеддинга: -0.03955078, 0.006214142, -0.07446289, -0.039001465, 0.0046463013, 0.00030612946, -0.08496094 и 0.03994751. При двоичном квантовании значения, меньшие или равные нулю, будут квантованы в двоичный ноль, а положительные значения — в двоичную единицу, что приведет к следующей двоичной последовательности: 0, 1, 0, 0, 1, 1, 0, 1. Эти восемь битов затем упаковываются в одно 8-битное целое число, 01001101 (с левым битом как наиболее значимым битом).
ubinary: Двоичная последовательность напрямую преобразуется и представляется как беззнаковое целое число (uint8) 77.binary: Двоичная последовательность представляется как знаковое целое число (int8) -51, вычисленное с использованием метода смещенного двоичного кода (77 - 128 = -51).
Как можно усечь эмбеддинги Matryoshka?
Как можно усечь эмбеддинги Matryoshka?
Обучение Matryoshka создает эмбеддинги с представлениями от грубых к тонким в одном векторе. Модели Voyage, такие как
voyage-code-3, которые поддерживают несколько выходных размерностей, генерируют такие эмбеддинги Matryoshka. Вы можете усечь эти векторы, сохранив ведущее подмножество размерностей. Например, следующий код Python демонстрирует, как усечь 1024-мерные векторы до 256 размерностей: