При выборе поставщика «embeddings» (эмбеддингов) есть несколько факторов, которые вы можете учитывать в зависимости от ваших потребностей и предпочтений:
Anthropic не предлагает собственную модель эмбеддингов. Одним из поставщиков эмбеддингов, который имеет широкий спектр вариантов и возможностей, охватывающих все вышеперечисленные соображения, является Voyage AI.
Voyage AI создает передовые модели эмбеддингов и предлагает настроенные модели для конкретных отраслевых доменов, таких как финансы и здравоохранение, или индивидуально дообученные модели для отдельных клиентов.
Остальная часть этого руководства посвящена Voyage AI, но вам следует оценить различных поставщиков эмбеддингов, чтобы найти наиболее подходящий вариант для вашего конкретного случая использования.
Voyage рекомендует использовать следующие модели текстовых эмбеддингов:
Voyage 4 (последнее поколение)
| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-4-large | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Лучшее качество поиска общего назначения и многоязычного поиска. Подробности см. в блог-посте Voyage 4. |
voyage-4 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для качества поиска общего назначения и многоязычного поиска. Балансирует качество и эффективность. Подробности см. в блог-посте Voyage 4. |
voyage-4-lite | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для задержки и стоимости. Подробности см. в блог-посте Voyage 4. |
voyage-4-nano | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Модель с открытыми весами (лицензия Apache 2.0), доступная на Hugging Face. Подробности см. в блог-посте Voyage 4. |
Предыдущее поколение
| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Лучшее качество поиска общего назначения и многоязычного поиска. Подробности см. в блог-посте voyage-3-large. |
voyage-3.5 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для качества поиска общего назначения и многоязычного поиска. Подробности см. в блог-посте voyage-3.5. |
voyage-3.5-lite | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для задержки и стоимости. Подробности см. в блог-посте voyage-3.5. |
voyage-code-3 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Оптимизирована для поиска кода. Подробности см. в блог-посте voyage-code-3. |
voyage-finance-2 | 32,000 | 1024 | Оптимизирована для финансового поиска и RAG. Подробности см. в блог-посте voyage-finance-2. |
voyage-law-2 | 16,000 | 1024 | Оптимизирована для юридического поиска и поиска с длинным контекстом, а также RAG. Также улучшена производительность во всех доменах. Подробности см. в блог-посте voyage-law-2. |
Кроме того, Voyage рекомендует следующие мультимодальные модели эмбеддингов:
| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-multimodal-3.5 | 32,000 | 1024 (по умолчанию), 256, 512, 2048 | Богатая мультимодальная модель эмбеддингов, которая может векторизовать чередующиеся текст, изображения и видео. Включает поддержку видео как первая модель эмбеддингов видео производственного уровня. Подробности см. в блог-посте voyage-multimodal-3.5. |
voyage-multimodal-3 | 32,000 | 1024 | Богатая мультимодальная модель эмбеддингов, которая может векторизовать чередующийся текст и насыщенные содержанием изображения, такие как скриншоты PDF-файлов, слайды, таблицы, рисунки и многое другое. Подробности см. в блог-посте voyage-multimodal-3. |
Следующие модели контекстуализированных эмбеддингов фрагментов создают векторы на уровне фрагментов, которые захватывают полный контекст документа без ручного дополнения метаданными. Вызывайте эти модели с помощью contextualized_embed() вместо embed():
| Модель | Длина контекста | Размерность эмбеддинга | Описание |
|---|---|---|---|
voyage-context-4 | 120,000 | 1024 (по умолчанию), 256, 512, 2048 | Контекстуализированные эмбеддинги фрагментов, оптимизированные для качества поиска общего назначения и многоязычного поиска. Подробности см. в блог-посте voyage-context-4. |
voyage-context-3 | 120,000 | 1024 (по умолчанию), 256, 512, 2048 | Контекстуализированные эмбеддинги фрагментов, оптимизированные для качества поиска общего назначения и многоязычного поиска. Подробности см. в блог-посте voyage-context-3. |
Voyage AI также предлагает «rerankers» (реранкеры), которые принимают запрос и список документов и возвращают их, ранжированными по релевантности запросу. Вызывайте эти модели с помощью rerank():
| Модель | Длина контекста | Описание |
|---|---|---|
rerank-2.5 | 32,000 | Наивысшая точность. Рекомендуется для большинства приложений. Подробности см. в блог-посте rerank-2.5. |
rerank-2.5-lite | 32,000 | Оптимизирована для задержки и стоимости. Подробности см. в блог-посте rerank-2.5. |
Нужна помощь в выборе модели текстовых эмбеддингов? Ознакомьтесь с FAQ Voyage AI.
Чтобы получить доступ к эмбеддингам Voyage:
export VOYAGE_API_KEY="<your secret key>"Вы можете получить эмбеддинги, используя официальный Python-пакет voyageai или HTTP-запросы, как описано в следующих разделах.
Установите пакет voyageai с помощью следующей команды:
pip install -U voyageaiЗатем вы можете создать объект клиента и начать использовать его для векторизации ваших текстов:
import voyageai
vo = voyageai.Client()
# Это автоматически использует переменную окружения VOYAGE_API_KEY.
# Также можно использовать vo = voyageai.Client(api_key="<your secret key>")
texts = ["Sample text 1", "Sample text 2"]
result = vo.embed(texts, model="voyage-4", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])result.embeddings — это список из двух векторов эмбеддингов, каждый из которых содержит 1024 числа с плавающей запятой. После выполнения приведенного выше кода два эмбеддинга выводятся на экран:
[-0.013131560757756233, 0.019828535616397858, ...] # embedding for "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding for "Sample text 2"При создании эмбеддингов вы можете указать несколько других аргументов функции embed().
Для получения дополнительной информации о Python-пакете Voyage см. документацию Python-пакета Voyage.
Вы также можете получить эмбеддинги, обратившись к 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": ["Sample text 1", "Sample text 2"],
"model": "voyage-4"
}'Ответ, который вы получите, — это JSON-объект, содержащий эмбеддинги и использование токенов:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858 /* ... */],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805 /* ... */],
"index": 1
}
],
"model": "voyage-4",
"usage": {
"total_tokens": 10
}
}Для получения дополнительной информации о HTTP API Voyage см. документацию HTTP API Voyage.
Эмбеддинги Voyage доступны на AWS Marketplace. Инструкции по доступу к Voyage на AWS доступны в документации Voyage для AWS Marketplace.
Следующий краткий пример показывает, как использовать эмбеддинги.
Предположим, у вас есть небольшой корпус из шести документов для поиска
documents = [
"The Mediterranean diet emphasizes fish, olive oil, and vegetables, believed to reduce chronic diseases.",
"Photosynthesis in plants converts light energy into glucose and produces essential oxygen.",
"20th-century innovations, from radios to smartphones, centered on electronic advancements.",
"Rivers provide water, irrigation, and habitat for aquatic species, vital for ecosystems.",
"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.",
"Shakespeare's works, like 'Hamlet' and 'A Midsummer Night's Dream,' endure in literature.",
]Сначала используйте Voyage для преобразования каждого документа в вектор эмбеддинга.
import voyageai
vo = voyageai.Client()
# Встраиваем документы
doc_embds = vo.embed(documents, model="voyage-4", input_type="document").embeddingsЭмбеддинги позволяют выполнять семантический поиск / извлечение в векторном пространстве. Для примера запроса,
query = "When is Apple's conference call scheduled?"Далее преобразуйте его в эмбеддинг и выполните поиск ближайшего соседа, чтобы найти наиболее релевантный документ на основе расстояния в пространстве эмбеддингов.
import numpy as np
# Встраиваем запрос
query_embd = vo.embed([query], model="voyage-4", 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" используются для векторизации документа и запроса соответственно. Дополнительные спецификации можно найти в разделе Библиотека Voyage для Python.
Результатом является пятый документ, который действительно наиболее релевантен запросу:
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.Если вы ищете подробный набор рецептов о том, как выполнять RAG с эмбеддингами, включая векторные базы данных, ознакомьтесь с рецептом RAG.
Посетите страницу цен Voyage для получения самой актуальной информации о ценах.
Was this page helpful?