pgvector: англійська для інженерів PostgreSQL AI

Вивчіть англійську лексику для pgvector: векторні стовпчики, індекси ivfflat проти hnsw, косинус, L2 і відстань внутрішнього добутку, а також гібридний пошук у PostgreSQL.

Розширення pgvector приносить векторний пошук подібності безпосередньо в PostgreSQL, що дозволяє командам будувати функції на базі штучного інтелекту без додавання окремої спеціалізованої бази даних до їх стека. Вона стала надзвичайно популярною, тому що вона дозволяє інженерам зберігати вбудовування разом з їх існуючими реляційними даними, приєднуватися до таблиць і використовувати зрілу екосистему інструментів, резервних копій і контролю доступу PostgreSQL. Для ефективної роботи з pgvector в англомовній команді, вам потрібно розуміти специфічний словник, який з’ являється у коментарях запитів на збирання, пропозиціях щодо архітектури і офіційній документації.

Ключовий словник

** Векторна колонка ** — Стовпчик у таблиці PostgreSQL типу vector(n), де n — кількість розмірів. Так само як і integer або text колонка, векторна колонка зберігає одне значення на рядок, але це значення є масивом чисел з рухомою комою, що представляють вбудування. “Ми додали vector(1536) стовпець під назвою embedding до таблиці articles для зберігання вбудованих OpenAI поряд з оригінальним текстом.”

** Вбудована розмірність ** — кількість елементів у векторі, визначена моделлю, яка його створила. Різні моделі виводять різні розміри — наприклад, text-embedding-3-small виводить 1536 розмірів за замовчуванням. Розміри слід оголосити під час створення векторної колонки, їх не можна змінити без перенесення таблиці.

  • “Перед створенням індексу переконайтеся, що вбудована вимірність відповідає виводу моделі — невідповідність призведе до помилок вставлення.” *

** IVFFlat Index ** — скорочення від Inverted File with Flat quantification, це один з двох типів індексів, доступних у pgvector. Він ділить векторний простір на певну кількість кластерів (названих * списками *) і шукає лише найближчі кластери під час запиту. Він швидший у побудові, ніж HNSW, але зазвичай менш точний. “Ми використовували індекс IVFFlat під час фази прототипу, тому що він швидко збирається, але ми плануємо перейти на HNSW до запуску.”

** HNSW Index ** — Ієрархічний індекс малих світів, який побудовує багатошаровий граф на всіх векторах. Його повільніше збирати і він використовує більше пам’ яті, ніж IVFFlat, але загалом він забезпечує краще витягування і кращу продуктивність запитів у масштабі. “Після переходу на індекс HNSW, наші запити найближчого сусіда стали приблизно втричі швидшими з вимірюваним поліпшенням в відновленні.”

** Косинусова схожість** — вимір відстані, який обчислює кут між двома векторами, а не відстань між ними по прямій. Цей метод часто використовується для вбудовування тексту, оскільки він зосереджується на * напрямку * вектора (семантичне значення), а не на його величині. “Ми використовуємо оператор косинусової відстані <=>, оскільки наші вбудування не нормалізовані, а косинусова подібність дає більш послідовні результати для семантично пошуку.”

** Відстань L2 ** — також відома як Евклідова відстань, ця величина вимірює відстань між двома точками у векторному просторі. Це типова метрика відстані у багатьох системах, вона добре працює для вбудованих зображень і інших випадків використання, де величина має значення. “Оператор відстані L2 <-> підходить тут, тому що наші вкладення зображень містять значущу інформацію про величину.”

** Внутрішній добуток ** — метрика відстані, еквівалентна добутку точок двох векторів. Коли вектори нормалізовані до одиниці довжини, внутрішній добуток і косинус подібності дають ідентичні рейтинги. pgvector використовує оператор від’ ємного внутрішнього добутку <#>, тому що сканування індексів PostgreSQL мінімізує значення.

  • “Оскільки ми нормалізуємо всі вбудування перед їх зберіганням, ми перейшли до внутрішньої відстані добутку, яка дещо швидше піддається обчисленню.” *

** Приблизний найближчий сусід (ANN) ** — Стратегія пошуку, яка дуже швидко знаходить вектори, * близькі до * вектора запиту, з невеликим компромісом у точності порівняно з вичерпним точним пошуком. Обидва IVFFlat і HNSW є методами ANN. Термін «приблизний» не є критикою — в масштабі точний пошук занадто повільний, щоб бути практичним.

  • “Ми пояснили команді розробників, що при пошуку найближчого сусіда іноді не знайдеться найближчий результат, але на практиці користувачі не можуть відчути різницю.” *

Корисні фрази

Інженери, що працюють з pgvector в англомовних командах, регулярно використовують такі фрази:

  • «Ми повинні вакуум таблицю після масової вставки, перш ніж індекс HNSW досягне своєї повної продуктивності — індекс оновлюється ліниво.»
  • «Встановити ivfflat.probes на більш високе значення, щоб ** поліпшити відновлення ** за рахунок повільніших запитів під час розробки.»
  • “Запит робить послідовне сканування замість використання індексу — перевірте, що enable_seqscan вимкнено і статистика планувальника є актуальною.”
  • «Ми робимо гібридний пошук, поєднуючи векторний рейтинг подібності з повнотекстовим пошуком за допомогою зваженої суми.»
  • “Чи можете ви додати клаузулу WHERE для переднього фільтрування за tenant_id перед пошуком ANN? Це збереже результати ізольованими для кожного клієнта»

Поширені помилки

Використання “точності”, коли ви маєте на увазі “пригадування”

Нерідні носії часто кажуть «індекс має нижчу точність» при обговоренні пошуку ANN. У цьому контексті правильним технічним терміном є ** відкликання ** — конкретно, відсоток справжніх найближчих сусідів, які успішно повертаються за допомогою наближеного пошуку. « Точність » означає проблему класифікації. Сказати “ми виміряли відновлення на 95%” звучить професійно; “ми виміряли точність на 95%” може збентежити ваших колег.

Плутанина ivfflat і hnsw поведінки під час збирання

Інженери іноді кажуть « відновити індекс », коли мають на увазі « створити індекс ». За допомогою ivfflat ви повинні вставити дані * перед * побудовою індексу, оскільки для обчислення центроїдів кластерів потрібні дані. Сказати «ми спочатку побудуємо індекс, а потім заповнимо таблицю» є поширеною помилкою — як у робочому потоці, так і в англійській мові.

Забув вказати оператор відстані у розмові

При обговоренні pgvector запитів у словесній або письмовій формі, завжди називайте метрику відстані явно. Сказати “Я запитаю найближчі вектори” залишає неоднозначність. Сказати «Я буду запиту з використанням косинусної відстані» точно і уникнути нерозуміння, коли колега приймає іншу метрику.


Освоєння словника pgvector дозволяє вам впевнено брати участь у перегляді дизайну бази даних і сеансах планування функцій ШІ. Вміння пояснити компроміси між IVFFlat і HNSW або пояснити, чому ви обрала косинусну схожість замість відстані L2, демонструє як технічну глибину, так і професійні навички спілкування, які будуть вам на увазі у будь- якій англомовній інженерній команді.

Поряд з основними: адресування нюансів для не-рідних мовців

Будьмо чесними – навіть з чітким розумінням технічних концепцій pgvector, навігація професійною англійською мовою в інженерному просторі ШІ може здатися… складною. Термінологія не завжди є інтуїтивно зрозумілою, і незначні відмінності у використанні фраз можуть значно вплинути на те, як ваші ідеї будуть сприйматися, особливо під час обговорення оптимізації продуктивності або співпраці з перегляду коду. Це не просто знати, що щось є; це розуміти, як виразити ці знання чітко і впевнено - ключова вміння в будь-якій міжнародній команді.

Однією з областей, де це часто трапляється, є опис різниці між індексами ivfflat і hnsw. Просте пояснення, наприклад, «ivfflat швидше для менших наборів даних» може бути технічно правильним, але йому бракує точності. Замість того, щоб просто стверджувати факт, розгляньте його формулювання так: «Ми використовуємо індексування ivfflat, щоб приоритизувати початкову швидкість пошуку при роботі з відносно малими вбудованими векторами — приблизно менше 10 000 — тому що його слід у пам’яті є більш керованим, а час побудови значно швидший». Аналогічно, пояснення косинусної подібності вимагає виходу за рамки «воно вимірює, наскільки подібні вектори» і пропонує щось на зразок: «Косинусна подібність кількісно визначає кутову відстань між двома векторами, ефективно вимірюючи їх відносні орієнтації у високовимірному просторі. Значення ближче до 1 вказує на більшу схожість, в той час як значення, що наближається до -1, вказує на високий ступінь неподібності

Інша проблема часто включає в себе формулювання очікувань продуктивності під час перегляду коду або описів PR. Замість того, щоб просто сказати «цей запит повільний», більш конструктивний підхід буде таким: «Вік виконання цього запиту перевищує прийнятні межі — конкретно, понад 2 секунди для в середньому 100 запитів — через повне сканування таблиці, що виконується проти векторного індексу. Перехід на індекс hnsw може значно поліпшити продуктивність за допомогою використання приблизного пошуку найближчого сусіда. “Використання фраз, таких як “прийнятні пороги”, “повне сканування таблиці”, і запропонування альтернативних стратегій індексування демонструє технічну майстерність і активний підхід до вирішення проблем. Не бійтеся ставити питання, щоб прояснити ситуацію, навіть якщо ви відчуваєте, що трохи валяєтеся; запитання про більш докладні відомості щодо * обґрунтування * певної реалізації завжди краще, ніж припущення про розуміння.

Нарешті, пам’ятайте, що активне слухання і пошук пояснень є ключовими. Якщо хтось використовує фрази, які ви не повністю розумієте — наприклад, обговорюючи «L2 відстань» з точки зору евклідового простору — ввічливо попросіть про пояснення. Це набагато цінніше, щоб продемонструвати справжні зусилля зрозуміти, ніж ризикувати неправильно інтерпретувати критичну концепцію.

-- Example: Building an HNSW index
CREATE INDEX hnsw_idx ON embeddings USING FNN IGNORE (vector) WITH (M=16, VARIENTS = 8);

У цьому прикладі показано команду CLI, яку використовують для створення індексу HNSW у PostgreSQL. Параметр M контролює максимальну кількість кандидатів, які розглядаються під час пошуку, а VARIENTS диктує кількість кандидатських векторів, які індексуються для кожного векторного запиту. Експериментування з цими значеннями може бути важливим для досягнення оптимальної швидкодії для вашого набору даних і випадку використання.

Поширені запитання

Про що ця стаття "pgvector: англійська для інженерів PostgreSQL AI"?

Вивчіть англійську лексику для pgvector: векторні стовпчики, індекси ivfflat проти hnsw, косинус, L2 і відстань внутрішнього добутку, а також гібридний пошук у PostgreSQL.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "pgvector: англійська для інженерів PostgreSQL AI"?

Приблизно 7 min.