INTEGRITY Документация

Создание индексов

Индексы представляют собой «атом» Vectorize. Векторы добавляются в индекс, что позволяет выполнять по нему поиск похожих векторов для заданного входного вектора.

Для создания индекса требуется три параметра:

Индекс нельзя создать с тем же именем, что и у индекса, который в данный момент активен в вашем аккаунте. Однако можно создать индекс с именем, которое ранее принадлежало удалённому индексу.

Конфигурацию индекса нельзя изменить после его создания.

Создавать индекс

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=cosine

HTTP 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 использовать один из следующих вариантов:

После создания индекса метрику расстояния изменить нельзя, при этом у каждой метрики своя функция подсчёта оценки.