Redis Vector Search: англійською мовою для інженерів, що будують застосунки штучного інтелекту
Вивчіть англійську термінологію для векторного пошуку Redis — VSS, індекс HNSW, FT. CREATE, векторні поля, запити KNN, гібридний пошук і Redis Stack.
Векторний пошук перейшов від дослідницьких статей до виробничих застосунків штучного інтелекту, і Redis став одним з найпопулярніших варіантів для зберігання і запиту вбудованих даних з низькою затримкою. Інженери, що будують семантичний пошук, рекомендаційні рушії або конвеєри з покращеним пошуком (RAG), повинні обговорювати типи індексів, стратегії запитів і дизайн схем з точністю. Цей підручник містить англійську лексику, яка використовується під час перегляду проекту, коментарів щодо запитів на звантаження і обговорень команди, коли у стеку знаходиться векторний пошук Redis.
Ключовий словник
** VSS (Vector Similarity Search) ** — можливості Redis, частина модуля RediSearch, що надає змогу зберігати високовимірні вектори поряд зі звичайними полями даних і виконувати запити на їх подібність, а не на точне збігнення. “Ми обрали VSS замість виділених векторних баз даних, тому що ми вже працювали з Redis у виробництві і не хотіли вводити ще одну службу стану.”
** HNSW index ** — Ієрархічний малий світ, який можна пересувати, приблизний алгоритм найближчого сусіда, який обмінює невелику кількість точності відновлення на значно швидшу швидкість запиту у масштабі. “Ми перейшли з індексу FLAT на індекс HNSW, як тільки кількість вбудованих перевищила півмільйона — затримка запиту впала з 80 мс до менше ніж 5 мс.”
** FT.CREATE ** — команда Redis, яку використовують для створення індексу пошуку, включаючи визначення схеми для текстових, числових, міток і векторних полів.
“Схема в FT.CREATE визначає поле VECTOR з алгоритмом HNSW і встановлює кількість розмірів до 1536, щоб відповідати вбудованим OpenAI Ada.”
** Векторне поле ** — тип поля у схемі індексу RediSearch, у якому зберігається масив з рухомою комою фіксованого розміру, що представляє вбудоване поле.
“Кожен документ продукту має векторне поле description_embedding, яке заповнюється шляхом передачі опису продукту через вбудовану модель у час індексування.”
** KNN запит ** — запит на K- найближчих сусідів, який повертає K найбільш схожих векторів до заданого вектора запиту, впорядкованих за косинусом або евклідової відстанню.
- “Кінечна точка пошуку виконує запит KNN з K встановленим на 10, потім переранжує результати за допомогою легкого перехресного кодера перед поверненням трьох найкращих клієнту.” *
** Гібридний пошук ** — запит, який поєднує оцінку векторної подібності з традиційними умовами фільтрування (мітка, діапазон чисел, повний текст), таким чином, результати повинні задовольняти як семантичні, так і структуровані критерії. “Ми реалізували гібридний пошук, щоб користувачі могли сказати «знайти продукти, схожі на цей опис, але тільки в категорії взуття і за ціною менше 50 фунтів» — попередній фільтр відбувається перед етапом KNN.”
** Redis Stack ** — дистрибутив Redis, який поєднує ядро Redis з набором модулів, включаючи RediSearch (для векторного і повнотекстового пошуку), RedisJSON, RedisTimeSeries і RedisBloom.
“Упевніться, що витягнутий вами образ Docker є redis/redis-stack, а не простий redis — VSS вимагає модуля RediSearch, який поставляється тільки з Redis Stack.”
** Вбудована розмірність ** — кількість значень з рухомою комою у векторі, які повинні точно збігатися між схемою індексу і кожним вектором, збереженим або запитаним за допомогою цієї схеми.
- “Ми зіткнулися з помилкою невідповідності розмірів під час перегляду, оскільки вбудовану модель було оновлено з 768 до 1024 розмірів, але схема індексу не була відтворена.” *
Корисні фрази
- «Я запустю
FT.CREATEз полем VECTOR, використовуючи алгоритм HNSW, косинусну метрику відстані, і розмірність 1536 — тоді ми можемо почати вбудовувати вбудовування» - «Перефільтрування в гібридному запиту зменшує набір кандидатів перед кроком KNN, який зберігає високу віддачу без сканування повного індексу»
- «Ми зберігаємо необроблений JSON-документ з
JSON.SETі зберігаємо вектор в окремому геш-полі, індексованому RediSearch — таким чином ми можемо оновити вбудовування без переписування всього документа» - «На мільйон векторів, FLAT пошук стає занадто повільним для використання в реальному часі; HNSW з
EF_RUNTIMEналаштованим на 200 дає нам правильний баланс швидкості і відновлення для нашого випадку використання» - Команда
FT.SEARCHповертає як відстань, так і поля документа — ми нормалізуємо косинусну відстань до відсотка подібності перед тим, як відобразити її в інтерфейсі користувача
Поширені помилки
** Використання « пошук за вектором » замість « запит за подібністю ». ** Люди, які не є носієм мови, іноді описують запит KNN як « пошук за вектором », що звучить незграбно для англомовних інженерів. Стандартною фразою є « запит за подібністю », « виконати пошук за подібністю » або « виконати пошук найближчого сусіда ». Вираз « Я запитую за косинусною подібністю » є ясним і природнім.
** Плутанина « index » як іменника і дієслова без правильного прикметника. ** Інженери іноді кажуть « ми індексуємо вбудовані дані у Redis », коли правильним висловлюванням є « ми індексуємо вбудовані дані * у * Redis » або « ми зберігаємо і індексуємо вбудовані дані за допомогою RediSearch ». Сам індекс є * у * (або * на *) базі даних, а не * до * неї. Це розрізнення має значення в письмовій документації і проектних документах.
** Плутанина « розмірність » і « вимірність ». ** Обидва слова коректні, але * розмірність * використовується як злічений іменник у практичних розмовах Redis: « вектор має 1536 вимірів » або « вбудована вимірність — 1536 ». * Вимірність * частіше зустрічається у наукових працях (« прокляття вимірності »). У повсякденній інженерній англійській, для зрозумілості, краще використовувати простіші dimensions або embedding dimension.
Завдяки цьому словнику ви зможете повністю долучитися до обговорення архітектури систем пошуку за допомогою штучного інтелекту — від початкового проектування схеми до налаштування продуктивності і аналізу виробничих подій.
Національна мова: мова, що використовується для спілкування між ненаціональними групами
Redis Vector Search (VSS) набирає популярності в розробці застосунків штучного інтелекту, і розуміння термінології є ключовим - не тільки для ефективності, але і для чіткого спілкування в технічній команді. Для розробників, які вивчають професійну англійську, особливо тих, чия перша мова не є англійською, точність цих термінів може здатися пригнічуючим. Розглянемо, як підійти до цього завдання, зосередившись на побудові впевненості у тому, що ви точно виражаєте себе і розумієте складні дискусії навколо векторного пошуку.
Однією з найпоширеніших перешкод є різниця між « індексом » і « алгоритмом ». У багатьох перекладах використовується слово « індекс » для позначення HNSW (Hierarchical Navigable Small World), яке, хоча і є технічно точним, може затьмарювати суть процесу. Замість того, щоб сказати «ми використовуємо індекс HNSW», більш ефективним формулюванням - особливо при поясненні колегі - буде «Ми використовуємо алгоритм * HNSW *, щоб створити швидке і масштабоване векторне рішення пошуку». Замість того, щоб просто сказати « створити векторне поле », краще сказати: « Ми використовуємо FT.CREATE для ініціалізації нового векторного поля, що містить наші вбудовані дані. » Це підкреслює * дію *, яку слід виконати, і уникнення жаргону, який може не бути відразу зрозумілим. Під час перегляду коду, ви можете побачити такі коментарі: « Чи можете ви розібратися в обґрунтуванні вибору цього конкретного розміру індексу HNSW? Менший індекс може призвести до збільшення затримки під час запитів KNN. ” - запит на пояснення чітко оформлений, уникаючи припущень про розуміння розробником основних компромісів з продуктивністю. Пам’ ятайте, що активне слухання і запитання, які пояснюють, є основними навиками під час роботи з технічним словником. Не вагайтеся сказати: «Чи можете ви пояснити, що ви маєте на увазі під «оптимізацією параметрів запиту KNN»?»
Іншою областю, де часто виникають нерозуміння, є опис типів запитів. « KNN » (K найближчих сусідів) може здатися абстрактним. Замість того, щоб просто сказати « ми виконуємо запит KNN », розгляньте його так: « Ми використовуємо запит KNN для ідентифікації найбільш схожих векторів у нашому наборі даних, на основі косинусної подібності — що дозволяє нам отримати елементи з відповідним семантичним вмістом. » Це додає контекст і підкреслює практичний результат. При написанні описів PR важлива точність. Замість того, щоб сказати « Впроваджено гібридний пошук », що є неясним, описайте його так: « Впроваджено гібридну стратегію пошуку, що поєднує пошук за точною фразою з пошуком за векторною подібністю, щоб поліпшити відновлення як структурованих, так і неструктурованих даних. » Такий рівень деталізації демонструє чітке розуміння архітектури системи і її передбачуваної функціональності.
Нарешті, пам’ ятайте, що професійний словник англійської мови постійно розвивається; будьте в курсі найкращих практик у вашій команді і в більших спільнотах. Не бійтеся просити про пояснення – це завжди краще шукати розуміння, ніж ризикувати неправильним спілкуванням.
redis-cli FT.CREATE my_vector_field --capacity 100000 --orders metric cosine