Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение pgvector добавляет поиск сходства векторов с открытым исходным кодом в PostgreSQL.
В этой статье приводятся дополнительные возможности, включенные pgvector. В ней рассматриваются понятия сходства векторов и внедрения, а также приводятся рекомендации по включению pgvector расширения. Мы узнаем, как создавать, хранить и запрашивать векторы.
Вы также можете обратиться к официальному README проекта.
Включение расширения
Прежде чем включить pgvector на База данных Azure для PostgreSQL гибкий экземпляр сервера, необходимо добавить его в список разрешений, как описано в том, как использовать расширения PostgreSQL, и проверить, правильно ли добавлено путем выполнения.SHOW azure.extensions;
Внимание
Обратите внимание, что хотя все сообщество PostgreSQL обычно ссылается на это расширение как pgvector, имя двоичного файла и само расширение просто vector. Учитывайте это, так как это имя, которое необходимо использовать для разрешения или создания в любой базе данных с помощью команды CREATE EXTENSION.
Затем можно установить расширение, подключився к целевой базе данных и выполнив команду CREATE EXTENSION . Необходимо повторить команду отдельно для каждой базы данных, в которой должно быть доступно расширение.
CREATE EXTENSION vector;
Примечание.
Удаление расширения из текущей подключенной базы данных DROP EXTENSION vector;.
Основные понятия
Сходство векторов
Сходство векторов — это метод, используемый для измерения того, как аналогичные два элемента представляют их как векторы, которые являются рядом чисел. Векторы часто используются для представления точек данных, где каждый элемент вектора представляет функцию или атрибут точки данных.
Сходство векторов обычно вычисляется с помощью метрик расстояния, таких как Euclidean distance или cosine сходство. Евклидеан расстояние измеряет прямое расстояние между двумя векторами в n-мерном пространстве, а косинус сходства измеряет косинус угла между двумя векторами. Значения метрик сходства обычно варьируются между 0 и 1, с higher значениями, указывающими на большее сходство между векторами.
Сходство векторов широко используется в различных приложениях, таких как системы рекомендаций, классификация текста, распознавание изображений и кластеризация. Например, в системах рекомендаций сходства векторов можно использовать для идентификации аналогичных элементов на основе предпочтений пользователя. В классификации текста векторное сходство можно использовать для определения сходства между двумя документами или предложениями на основе их векторных представлений.
Внедрение
Внедрение — это метод оценки "связанности" текста, изображений, видео или других типов информации. Оценка позволяет моделям машинного обучения эффективно определять связи и сходство между данными, позволяя алгоритмам определять закономерности и делать точные прогнозы. Например, в задаче анализа тональности слова с аналогичными внедренными выражениями могут иметь аналогичные оценки тональности.
Начало работы
Создайте таблицу tblvector с столбцом embedding типа vector(3) , представляющего трехмерный вектор.
CREATE TABLE tblvector(
id bigserial PRIMARY KEY,
embedding vector(3)
);
После создания внедрения с помощью службы, такой как API OpenAI, можно сохранить полученный вектор в базе данных. Определение вектора в виде vector(3) обозначений [x,y,z] coordinates в трехмерной плоскости. Команда вставляет пять новых строк в tblvector таблицу с предоставленными внедрениями.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]'), (3, '[5,4,6]'), (4, '[3,5,7]'), (5, '[7,8,9]');
С помощью инструкции можно указать альтернативное INSERT INTO ... ON CONFLICT действие, например обновление записей, соответствующих критериям. Это позволяет обрабатывать потенциальные конфликты более эффективным и эффективным способом.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]')
ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding;
Команда DELETE удаляет строки из указанной таблицы на основе условий, указанных в предложении WHERE. Если предложение WHERE отсутствует, все строки в таблице удаляются.
DELETE FROM tblvector WHERE id = 1;
Чтобы получить векторы и вычислить сходство, используйте SELECT инструкции и встроенные операторы векторов. Например, запрос вычисляет расстояние Евклиида (L2) между заданным вектором и векторами, хранящимися в tblvector таблице, сортирует результаты по вычисляемого расстояния и возвращает ближайшие пять наиболее похожих элементов.
SELECT * FROM tblvector
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;
В запросе используется< оператор ->, который является "оператором расстояния", используемым для вычисления расстояния между двумя векторами в многомерном пространстве. Запрос возвращает все строки с расстоянием менее 6 от вектора [3,1,2].
SELECT * FROM tblvector WHERE embedding <-> '[3,1,2]' < 6;
Команда извлекает среднее значение столбца внедрения из таблицы "tblvector". Например, если столбец "внедрение" содержит вставки слов для языковой модели, среднее значение этих внедренных значений можно использовать для представления всего предложения или документа.
SELECT AVG(embedding) FROM tblvector;
Операторы вектора
pgvector представлено шесть новых операторов, которые можно использовать для векторов:
| Operator | Description |
|---|---|
| + | Добавление элементов с помощью мудрого элемента |
| - | Вычитание элементов с помощью мудрого вычитания |
| * | умножение элементов |
| <-> | Евклидеан расстояние |
| <#> | отрицательный внутренний продукт |
| <=> | косинус расстояние |
Векторные функции
cosine_distance
Вычисляет расстояние косинуса между двумя векторами.
cosine_distance(vector, vector)
Аргументы
vector
Во-первых vector.
vector
Во-вторых vector.
Возвращаемый тип
double precision расстояние между двумя предоставленными векторами.
inner_product
Вычисляет внутренний продукт двух векторов.
inner_product(vector, vector)
Аргументы
vector
Во-первых vector.
vector
Секунда vector
Возвращаемый тип
double precision как внутренний продукт двух векторов.
l2_distance
Вычисляет расстояние Евклиида (также известное как L2) между двумя векторами.
l2_distance(vector, vector)
Аргументы
vector
Во-первых vector.
vector
Секунда vector
Возвращаемый тип
double precision как расстояние Евклида между двумя векторами.
l1_distance
Вычисляет расстояние таксикаба (также известное как L1) между двумя векторами.
l1_distance(vector, vector)
Аргументы
vector
Во-первых vector.
vector
Секунда vector
Возвращаемый тип
double precision как расстояние от таксикаб между двумя векторами.
vector_dims(vector)
Возвращает измерения заданного вектора.
Аргументы
vector
vector.
Возвращаемый тип
integer представляет количество измерений заданного вектора.
vector_norms(vector)
Вычисляет норму Евклиида заданного вектора.
Аргументы
vector
vector.
Возвращаемый тип
double precision представляющий норму Евклиида данного вектора.
Агрегаты векторов
AVG
Вычисляет среднее значение обработанных векторов.
Аргументы
vector
vector.
Возвращаемый тип
vector представляет среднее значение обработанных векторов.
SUM
Аргументы
vector
vector.
Возвращаемый тип
vector представляет сумму обработанных векторов.
Связанный контент
- Оптимизируйте производительность при использовании pgvector в гибком сервере Базы данных Azure для PostgreSQL.
- Интеграция гибкого сервера Базы данных Azure для PostgreSQL с Azure Cognitive Services.
- Создайте векторные вложения в базе данных Azure для гибкого сервера PostgreSQL с локальным развертыванием LLM (предварительная версия).
- Интеграция База данных Azure для PostgreSQL с службами Машинное обучение Azure.
- Создайте векторные внедрения с помощью Azure OpenAI в гибком сервере Базы данных Azure для PostgreSQL.
- Расширение Azure AI в Azure Database для гибкого сервера PostgreSQL.
- Генеративный ИИ с использованием гибкого сервера Azure Database для PostgreSQL.
- Система рекомендаций с гибким сервером Azure Database для PostgreSQL и Azure OpenAI.
- Семантический поиск с помощью гибкого сервера Azure Database для PostgreSQL и Azure OpenAI.
- Включите и используйте pgvector в гибком сервере Базы данных Azure для PostgreSQL.