Что такое настоящая векторная база данных?
Эта статья была изначально опубликована в The New Stack и перепечатана здесь с разрешения.
Появление ChatGPT знаменует начало новой эры искусственного интеллекта (ИИ). ИИ революционизирует всё, а векторные базы данных становятся важнейшей инфраструктурой в новую эпоху. Эта тенденция неудивительна, учитывая растущий спрос на приложения на базе ИИ.
В предыдущей публикации мы представили неструктурированные данные, а также их обработку, анализ и запросы к ним. В этой публикации мы подробно рассмотрим векторные базы данных, их отличия от традиционных методов векторного поиска и то, как выбрать оптимальную векторную базу данных для вашего проекта.
Что такое векторная база данных?
Чтобы ответить на вопрос: что такое векторная база данных, нужно понимать роль традиционной реляционной базы данных, которая хранит и обрабатывает данные в заранее определённых форматах в таблицах и обычно выполняет точный поиск.
В отличие от них, векторные базы данных хранят и извлекают неструктурированные данные, такие как изображения, аудио, видео и текст, с помощью высокоразмерных значений, называемых эмбеддингами. Векторные базы данных часто используются для поиска по сходству с применением алгоритма Approximate Nearest Neighbor (ANN). Этот алгоритм организует данные на основе пространственных отношений и позволяет находить ближайшего соседа заданной точки запроса в большом наборе точек.
С ростом популярности ChatGPT векторные базы данных стали ещё более важными для решения проблем, с которыми сталкиваются большие языковые модели (LLM).
Векторные базы данных и библиотеки векторного поиска
Специализированные векторные базы данных — не единственный стек для поиска по сходству. До появления векторных баз данных существовало множество библиотек векторного поиска, таких как FAISS, ScaNN и HNSW, для векторного извлечения. Оба стека могут выполнять запросы к векторам, но в чём различия?
Библиотеки векторного поиска обладают ограниченной функциональностью. Они могут обрабатывать только небольшой объём данных и с трудом масштабируются при больших наборах данных и более высоком пользовательском спросе. Они не позволяют вносить какие-либо изменения в свои индексные данные и не могут быть опрошены во время импорта данных.
В отличие от них, векторные базы данных, такие как Milvus и Zilliz Cloud, являются более оптимальным решением для хранения и извлечения неструктурированных данных. Они могут хранить и запрашивать миллионы или даже миллиарды векторов, одновременно обеспечивая ответы в реальном времени; они обладают высокой масштабируемостью, чтобы удовлетворять растущие бизнес-потребности пользователей.
Специализированные векторные базы данных предлагают множество удобных для пользователей функций, включая поддержку CRUD (создание, чтение, обновление и удаление), аварийное восстановление, управление доступом на основе ролей и мультитенантность. Многие поставщики векторных баз данных, такие как Zilliz, также предлагают полностью управляемые облачные сервисы, чтобы помочь пользователям избавиться от бремени работ по обслуживанию и сосредоточиться на своём бизнесе.
Кроме того, векторные базы данных работают на другом уровне абстракции, чем библиотеки векторного поиска, выступая полноценными сервисами, а не компонентами для интеграции. Чтобы проиллюстрировать значимость этой абстракции, давайте рассмотрим процесс добавления элемента неструктурированных данных в векторную базу данных, такую как Milvus.
from pymilvus import Collectioncollection = Collection('book')mr = collection.insert(data)
Как видите, вставлять неструктурированные данные в Milvus очень просто — всего три строки кода. Однако при использовании таких библиотек, как FAISS или ScaNN, это сложно. Эти библиотеки требуют вручную пересоздавать весь индекс на контрольных точках.
Векторные базы данных и плагины векторного поиска
По мере того как векторные базы данных привлекают всё больше внимания, многие традиционные базы данных и поисковые системы, такие как Clickhouse, Elasticsearch, MongoDB и Databricks, спешат интегрировать встроенные плагины векторного поиска. Elasticsearch 8.0, например, обновил такие функции, как вставка векторов и ANN-поиск, к которым можно обращаться через конечные точки RESTful API.
Однако важно отметить, что плагины векторного поиска не предлагают комплексного подхода к управлению эмбеддингами и векторному поиску. Это всего лишь дополнения к существующим системам, что может ограничивать их производительность с точки зрения задержки, ёмкости и пропускной способности. Попытка строить приложения для неструктурированных данных поверх традиционной базы данных похожа на установку литиевых батарей и электродвигателей внутрь автомобиля с рамой, рассчитанной на бензиновый двигатель, — не самая удачная идея.
Векторные базы данных необходимы для расширения возможностей LLM
По мере бурного развития LLM и AI-приложений векторные базы данных становятся жизненно важной инфраструктурой для технологических стеков, связанных с AI.
Хотя LLM впечатляют в генерации контента, у них есть множество ограничений. Например, они подвержены галлюцинациям из-за отсутствия актуальных и предметно-специфичных знаний. Что ещё хуже, ограничение LLM на количество токенов не позволяет добавлять обширную контекстную информацию в промпты при выполнении запросов.
Векторная база данных может служить долговременной памятью LLM и расширять базу знаний LLM. Она хранит частные данные или предметно-специфичную информацию вне LLM в виде эмбеддингов. Когда пользователь задаёт вопрос, векторная база данных ищет результаты topk, наиболее релевантные этому вопросу. Затем результаты объединяются с исходным запросом для создания промпта, который предоставляет LLM исчерпывающий контекст для генерации более точных ответов. Это решение также известно как CVP stack (ChatGPT/LLMs + векторная база данных + prompt-as-code).
LLM взимают плату за каждый токен в запросах. Поэтому, если пользователи задают похожие или повторяющиеся вопросы, с них будет взиматься плата несколько раз, что приведёт к высоким затратам. В часы пик ответы могут быть очень медленными. Чтобы сэкономить время и усилия, разработчики могут интегрировать векторную базу данных с GPTCache, open-source семантическим кешем, который хранит ответы LLM. Таким образом, когда пользователь задаёт вопрос, на который LLM уже отвечала раньше, векторная база данных извлекает ответы из GPTCache и быстро возвращает их пользователям без обращения к LLM.
Архитектура OSS Chat
На приведённой выше схеме показана архитектура OSS Chat, AI-чатбота, который использует Zilliz Cloud и GPTCache.
В дополнение к расширению возможностей LLM, векторные базы данных ценны для многих сценариев использования, включая рекомендательные системы, поиск сходства изображений/аудио/видео/текста, обнаружение аномалий, системы вопросов и ответов и поиск молекулярного сходства.
Как выбрать наиболее подходящую векторную базу данных для вашего проекта?
Вам сложно выбрать подходящую векторную базу данных для ваших проектов? При большом количестве доступных вариантов это может быть непросто. К счастью, есть решение, которое поможет вам принять обоснованное решение.
VectorDBBench — это open-source инструмент для бенчмаркинга векторных баз данных. Он оценивает различные системы векторных баз данных по QPS, задержке, ёмкости и другим метрикам. Он написан на Python и лицензирован по open-source лицензии MIT, поэтому любой может свободно использовать, изменять и распространять его.
С помощью VectorDBBench вы можете выбрать лучшую векторную базу данных на основе фактической производительности, а не маркетинговых заявлений. Чтобы начать, ознакомьтесь с этим руководством.
Резюме
В этой статье представлен обзор векторных баз данных и объясняется, чем они отличаются от библиотек векторного поиска и плагинов векторного поиска поверх традиционных реляционных баз данных. Самое главное — мы представляем VectorDBBench, инструмент для бенчмаркинга с открытым исходным кодом, который поможет пользователям делать осознанный выбор.
В следующей статье мы представим Milvus, первую в мире и наиболее широко используемую векторную базу данных с открытым исходным кодом, и покажем, как начать работу с Milvus.
Читать далее

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Why Deepseek is Waking up AI Giants Like OpenAI And Why You Should Care
Discover how DeepSeek R1's open-source AI model with superior reasoning capabilities and lower costs is disrupting the AI landscape and challenging tech giants like OpenAI.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



