При выборе провайдера эмбеддингов есть несколько факторов, которые вы можете учитывать в зависимости от ваших потребностей и предпочтений:
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-файлов, слайды, таблицы, фигуры и многое другое. См. блог-пост для подробностей. |
Нужна помощь в выборе модели текстовых эмбеддингов? Ознакомьтесь с FAQ.
Для доступа к эмбеддингам 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-3.5", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])result.embeddings будет списком из двух векторов эмбеддингов, каждый содержащий 1024 числа с плавающей точкой. После выполнения приведенного выше кода два эмбеддинга будут выведены на экран:
[-0.013131560757756233, 0.019828535616397858, ...] # эмбеддинг для "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # эмбеддинг для "Sample text 2"При создании эмбеддингов вы можете указать несколько других аргументов для функции embed().
Для получения дополнительной информации о пакете 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-3.5"
}'Ответ, который вы получите, — это JSON-объект, содержащий эмбеддинги и использование токенов:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Для получения дополнительной информации о HTTP API Voyage см. документацию Voyage.
Эмбеддинги Voyage доступны на AWS Marketplace. Инструкции по доступу к Voyage на AWS доступны здесь.
Теперь, когда мы знаем, как получить эмбеддинги, давайте рассмотрим краткий пример.
Предположим, у нас есть небольшой корпус из шести документов для поиска
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-3.5", input_type="document"
).embeddingsЭмбеддинги позволят нам выполнять семантический поиск / извлечение в векторном пространстве. Учитывая пример запроса,
query = "When is Apple's conference call scheduled?"мы преобразуем его в эмбеддинг и проводим поиск ближайшего соседа, чтобы найти наиболее релевантный документ на основе расстояния в пространстве эмбеддингов.
import numpy as np
# Встраиваем запрос
query_embd = vo.embed(
[query], model="voyage-3.5", 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'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 для получения самых актуальных деталей ценообразования.