← Cloudflare Vectorize / vectorize / best-practices
Создание индексов
Индексы представляют собой «атом» Vectorize. Векторы добавляются в индекс, что позволяет выполнять по нему поиск похожих векторов для заданного входного вектора.
Для создания индекса требуется три параметра:
- Имя в kebab-регистре, например
prod-search-indexилиrecommendations-idx-dev. - Фиксированное размерность каждого вектора, например 384 или 1536.
- Фиксированное метрика расстояния для вычисления сходства векторов.
Индекс нельзя создать с тем же именем, что и у индекса, который в данный момент активен в вашем аккаунте. Однако можно создать индекс с именем, которое ранее принадлежало удалённому индексу.
Конфигурацию индекса нельзя изменить после его создания.
Создавать индекс
wrangler CLI
Чтобы создать индекс с wrangler:
npx wrangler vectorize create your-index-name --dimensions=NUM_DIMENSIONS --metric=SELECTED_METRICЧтобы создать индекс, способный принимать векторные эмбеддинги от моделей Workers AI @cf/baai/bge-base-en-v1.5 модель эмбеддинга, которая выдаёт векторы с 768 измерениями, используйте следующую команду:
npx wrangler vectorize create your-index-name --dimensions=768 --metric=cosineHTTP API
Vectorize также поддерживает создание индексов через REST API.
Например, чтобы создать индекс непосредственно из скрипта Python:
import requests
url = "https://api.cloudflare.com/client/v4/accounts/{}/vectorize/v2/indexes".format("your-account-id")
headers = {
"Authorization": "Bearer <your-api-token>"
}
body = {
"name": "demo-index",
"description": "some index description",
"config": {
"dimensions": 1024,
"metric": "euclidean"
},
}
resp = requests.post(url, headers=headers, json=body)
print('Status Code:', resp.status_code)
print('Response JSON:', resp.json())Этот скрипт должен вывести ответ с кодом состояния 201, а также тело ответа в формате JSON, подтверждающее создание индекса с указанной конфигурацией.
Измерения
Размерность определяется размером выходных данных модели машинного обучения (ML), которая используется для их генерации, и зависит от того, как модель кодирует и описывает признаки в векторном эмбеддинге.
Количество выходных размерностей влияет на точность векторного поиска, производительность поиска (задержку) и общий размер индекса. Меньшее количество выходных размерностей может ускорить поиск, что полезно для приложений, ориентированных на конечного пользователя. Большее количество выходных размерностей может обеспечить более точный поиск, особенно на больших наборах данных и (или) наборах данных с существенно похожими входными данными.
Количество размерностей, для которого создан индекс, изменить нельзя. Индексы ожидают получения плотных векторов с одинаковым количеством размерностей.
В следующей таблице показаны некоторые модели эмбеддингов и размерность их выходных данных:
| Model / Embeddings API | Выходные размерности | Сценарий использования |
|---|---|---|
Workers AI: @cf/baai/bge-base-en-v1.5 |
768 | Текст |
OpenAI - ada-002 |
1536 | Текст |
Cohere: embed-multilingual-v2.0 |
768 | Текст |
Google Cloud: multimodalembedding |
1408 | Мультимодальность (текст, изображения) |
Метрики расстояния
Метрики расстояния определяют, насколько близки векторы друг к другу. Индексы Vectorize поддерживают следующие метрики расстояния:
| Метрика | Подробности |
|---|---|
cosine |
Расстояние измеряется между -1 (наиболее непохожи) до 1 (идентичны). 0 обозначает ортогональный вектор. |
euclidean |
Евклидово расстояние (L2). 0 обозначает идентичные векторы. Чем больше положительное число, тем дальше расположены векторы друг от друга. |
dot-product |
Отрицательное скалярное произведение. Чем больше отрицательное значение, или меньшие положительные значения означают более похожие векторы. Оценка -1000 более похож, чем -500, и оценкой 15 более похожим, чем 50. |
Оценка схожести векторов может быть субъективной, поскольку зависит от того, как модель машинного обучения представляет признаки в итоговых векторных эмбеддингах. Например, оценка 0.8511 при использовании cosine метрика означает, что два вектора расположены близко друг к другу, но являются ли представленные ими данные похожие зависит от того, насколько хорошо модель способна представить исходный контент.
При выполнении запросов к векторам вы можете указать Vectorize использовать один из следующих вариантов:
- Высокоточная оценка повышает точность оценок совпадений в запросах, а также точность результатов запроса.
- Приближённая оценка для более быстрого времени отклика. При использовании приближённой оценки возвращаемые значения являются приближением реального расстояния или сходства между вашим запросом и возвращёнными векторами. См. Управление точностью подсчёта оценок и точностью запросов.
После создания индекса метрику расстояния изменить нельзя, при этом у каждой метрики своя функция подсчёта оценки.