Англійською для Milvus Vector Database

Вивчіть англійську лексику для Milvus, бази даних векторів з відкритим кодом: збірки, індекси, пошук ANN і рівні послідовності.

Розмови Milvus змішують словник бази даних (збірки, розділи, послідовність) з термінами, специфічними для пошуку (тип індексу, відкликання, nprobe), і змішування їх — виклик типу індексу «режим пошуку» або розділу «shard» — ускладнює для колег слідкувати за обговоренням продуктивності.

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

** Collection ** — контейнер верхнього рівня у Milvus, у якому містяться вектори і пов’ язані з ними скалярні поля, приблизно аналогічні таблиці у реляційній базі даних. “Ми зберігаємо вбудовані продукти і вбудовані тикети підтримки в окремих збірках, оскільки вони запитуються незалежно і мають різні схеми.”

** Тип індексу ( HNSW, IVF_FLAT, DiskANN ) ** — алгоритм, який використовується для організації векторів для наближеного пошуку найближчого сусіда, обраний на основі компромісу між затримкою запиту, відкликанням і слідом у пам’ яті. “Ми перейшли з IVF_FLAT на HNSW, тому що затримка запиту в нашому масштабі була важливішою, ніж додаткова пам’ять, яку вона використовує.”

** Recall ** — частка найближчих сусідів, які насправді повертаються під час приблизного пошуку, використовується для вимірювання кількості точності, яка використовується у обмін на швидкість. “Відновлення впало до 85% після того, як ми знизили ef для швидших запитів — нам потрібно знайти правильну точку на цій кривій затримки-відновлення.”

** Розділ ** — логічний підрозділ у збірці, який надає вам змогу розширити обсяг пошуку до підмножини даних, поліпшуючи як організацію, так і швидкість виконання запиту.

  • “Ми розділяємо за ідентифікатором клієнта, тому пошук даних одного клієнта ніколи не повинен сканувати вектори, що належать іншому.” *

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

Звичайні фрази

  • Чи індексована ця колекція з HNSW, чи ми все ще робимо бруто-силове плоске сканування?
  • «Яке відновлення ми бачимо при поточному налаштуванні ef — чи варто торгувати деякою затримкою, щоб отримати її вище?»
  • Чи повинні ці дані жити у власному розділі, чи достатньо фільтра метаданих на існуючій колекції?»
  • Чи ми працюємо під сильною послідовністю тут, або може цей запит терпіти деяку застарілу? ”
  • «Чи побудований і завантажений індекс, чи ми все ще вставляємо в неіндексовану колекцію?»

Приклади висловлювань

Перегляд проблеми з затримкою пошуку: “Пік затримки p99 веде до неіндексованого розділу — нові дані були вставлені, але побудова індексу не була завершена до того, як ми почали запитувати його.”

Пояснення рішення щодо індексування: “Ми обрали IVF_FLAT замість HNSW для цієї колекції, тому що час побудови був важливішим, ніж швидкість запиту, а набір даних достатньо малий, щоб різниця була незначною.”

Описування компромісу послідовності у перегляді проекту: “Послідовність сеансів тут достатня — користувач завжди бачить свої записи одразу, і незначна застарілість інших користувачів не впливає на коректність для цієї можливості.”

Професійні поради

  • Назвемо конкретний тип індексу при обговоренні продуктивності — «пошук повільний» набагато менш дієвий, ніж «ми на IVF_FLAT з високим nprobe, який торгує швидкістю для відновлення»
  • Розрізняти recall від сирої точності явно — векторний пошук “повертаючий неправильні результати” часто насправді повертає правильні наближені сусіди, просто не точні top-k.
  • Використовуйте ** partition ** точно, не обмінюючись на « collection » або « shard » — об’ єднання їх у документі проекту призведе до справжньої плутанини щодо того, як дані насправді організовано.
  • Вкажіть ** рівень послідовності **, який потрібний для функціональності заздалегідь — якщо ви вирішите цей параметр пізніше, після створення шаблону запиту, часто доведеться переписувати його.

Практичні вправи

  1. Поясніть компроміс між HNSW і IVF_FLAT в одному реченні.
  2. Описати, що вимірює відновлення і чому 100% відновлення зазвичай не є метою.
  3. Напишіть речення, у якому поясните, коли використовувати розділ, а коли окрему збірку.

Навигація Nuance: Рефінансування Вашого спілкування з Milvus

Основні концепції Milvus - колекції, індекси (особливо Approximate Nearest Neighbor або ANN) і рівні послідовності - відносно прості, коли перекладаються в технічні терміни. Однак, успішна співпраця у команді розробників, особливо з використанням передових технологій, таких як Milvus, вимагає не лише розуміння того, що, але й уміння ефективно поширювати ці ідеї англійською мовою. Тут нюанси фрази стають критичними. Розглянемо різницю між простою заявою «Ми повинні оптимізувати індекс» і запропонувати рішення з демонстрованим значенням: «Дослідимо налаштування параметрів індексу sklearn_hNSW, зокрема зменшення значення efConstruction, щоб поліпшити швидкість пошуку при збереженні прийнятного виведення - ми можемо порівняти це з нашими поточними показниками продуктивності».

Іншим частим викликом для не-рідних англомовних людей є справа зі зворотнім зв’язком під час перегляду коду. Отримавши коментарі на кшталт «Цей запит може бути ефективнішим» без контексту, можна відчувати себе неопределенным і навіть пригніченим. Замість того, щоб негайно реагувати в оборонному ключі, важливо задати прояснюючі питання: «Чи можете ви розібратися, що ви маєте на увазі під «більш ефективним»? Чи є якісь конкретні проблеми, які ви визначили? Можливо, ми зможемо профільувати виконання запиту, щоб визначити кореневу причину. » Таке оформлення ваших відповідей свідчить про вашу готовність до навчання і співпраці. Аналогічно, при написанні описів PR, уникайте надмірно технічного жаргону, якщо це абсолютно не потрібно. Сфокусуйте увагу на * впливі * ваших змін: « Цей звіт переробляє логіку пошуку векторів, щоб використовувати можливості пошуку ANN Milvus для поліпшення швидкості і масштабованості під час пошуку вбудованих даних користувачів. » Метою є чітке повідомлення про мету і переваги роботи більшій кількості користувачів, зокрема тим, хто менш знайомий з складністю векторних баз даних.

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

import milvus
import numpy as np

# Connect to Milvus
client = milvus.Client(host="localhost", port=19530)

# Create a collection (if it doesn't exist)
collection_name = "my_vectors"
if not client.is_persistent_collection(collection_name):
    client.create_collection(collection_name, dimension=128) # Example dimension

# Insert some data
vectors = np.random.rand(10, 128).astype('float32')
client.upsert(collection_name, vectors)

# Perform a query
query_vector = np.random.rand(1, 128).astype('float32')
results = client.search(collection_name, query_vector, top_k=5) # Search for the 5 nearest neighbors

print(f"Query results: {results}")

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

Про що ця стаття "Англійською для Milvus Vector Database"?

Вивчіть англійську лексику для Milvus, бази даних векторів з відкритим кодом: збірки, індекси, пошук ANN і рівні послідовності.

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

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

Скільки часу займає читання "Англійською для Milvus Vector Database"?

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