INTEGRITY Документация

Векторные базы данных

Векторные базы данных являются важной частью создания масштабируемых приложений на основе ИИ. Они предоставляют долговременную память поверх существующей модели машинного обучения.

Без векторной базы данных перед выполнением запроса пришлось бы заново обучать модель (или несколько моделей) или повторно прогонять набор данных через модель, что было бы медленно и дорого.

Чем полезна векторная база данных?

Векторная база данных определяет, какие другие данные (представленные в виде векторов) находятся ближе всего к вашему входному запросу. Это позволяет реализовать поверх векторной базы данных различные сценарии использования, включая:

Векторные базы данных также могут обеспечивать работу Генерация с дополнением поиском ↗ (RAG) задачах, которые позволяют дополнять пользовательский запрос данными из векторного поиска и тем самым передавать LLM (Large Language Models) дополнительный контекст.

В классическом сценарии векторного поиска запрос к векторной базе данных выполняется путём передачи вектора запроса, после чего база данных возвращает настраиваемый список векторов с наименьшим расстоянием («наиболее похожих») до вектора запроса.

Пошаговый процесс выглядит следующим образом:

  1. Разработчик преобразует существующий набор данных (документацию, изображения, журналы, хранящиеся в R2) в набор векторных эмбеддингов (одностороннее представление), пропуская их через модель машинного обучения, обученную для этого типа данных.
  2. Полученные эмбеддинги вставляются в индекс базы данных Vectorize.
  3. Поисковый запрос, запрос на классификацию или запрос на обнаружение аномалий также проходит через ту же модель ML и возвращает векторный эмбеддинг запроса.
  4. Запрос к Vectorize выполняется с использованием этого эмбеддинга и возвращает набор наиболее похожих векторных эмбеддингов на заданный запрос.
  5. Возвращённые эмбеддинги используются для получения исходных объектов из выделенного хранилища (например, R2, KV или D1), которые затем возвращаются пользователю.

Без векторной базы данных в рабочем процессе пришлось бы каждый раз передавать вместе с запросом весь набор данных, что не только непрактично (модели имеют ограничения на размер входных данных), но и требует значительных ресурсов и времени.

Генерация с дополнением поиском

Retrieval Augmented Generation (RAG) представляет собой подход, который улучшает контекст, передаваемый LLM (большой языковой модели), в сценариях генеративного ИИ, включая чат-боты и приложения вопрос-ответ. Векторная база данных обогащает промпт, передаваемый LLM, добавляя дополнительный контекст к запросу.

В подходе RAG вместо прямой передачи запроса в LLM вы:

  1. Создайте векторные эмбеддинги на основе существующего набора данных или корпуса текстов (например, данных, которые нужно использовать для добавления контекста к ответу LLM). В качестве такого набора данных или корпуса может выступать документация продукта, исследовательские данные, технические спецификации, а также каталог продукции с описаниями.
  2. Сохраняйте полученные эмбеддинги в индексе базы данных Vectorize.

Когда пользователь инициирует запрос, вместо того чтобы передать его без дополнительного контекста в LLM, вы дополнять его дополнительным контекстом:

  1. Пользовательский запрос передаётся в ту же модель машинного обучения, которая использовалась для вашего набора данных, и возвращает векторное представление запроса в виде эмбеддинга.
  2. Этот эмбеддинг используется как запрос (семантический поиск) к базе данных векторов, которая возвращает похожие векторы.
  3. Эти векторы используются для поиска связанного с ними содержимого (если оно не встроено непосредственно в векторы в виде метаданных).
  4. Это содержимое предоставляется как контекст вместе с исходным пользовательским запросом, что даёт LLM дополнительный контекст и позволяет ей вернуть ответ, гораздо более релевантный, чем при использовании одного запроса.

Создайте RAG-приложение уже сегодня с AI Search чтобы развернуть полностью управляемый RAG-конвейер всего за несколько кликов. AI Search автоматически настраивает Vectorize, выполняет непрерывную индексацию и предоставляет ответы через единый API.

1 Подробнее о теории, лежащей в основе RAG, вы можете узнать, прочитав RAG статья ↗. 1 Подробнее о теории, лежащей в основе RAG, вы можете узнать, прочитав RAG статья ↗.

Терминология

Базы данных и индексы

В Vectorize база данных и индекс представляют собой одно и то же понятие. Каждый созданный вами индекс не зависит от остальных ваших индексов. При добавлении новых данных Vectorize автоматически оптимизирует и заново формирует индекс.

Векторные эмбеддинги

Векторные эмбеддинги представляют признаки модели машинного обучения в виде числового вектора (массива чисел). Это одностороннее представление, которое отражает, как модель машинного обучения интерпретирует переданные ей входные данные, исходя из того, как она была обучена, и её внутренней структуры.

Например, модель текстовых эмбеддингов доступная в Workers AI, может принимать текст на входе и представлять его в виде 768-мерного вектора. Текст This is a story about an orange cloud, будучи представленным в виде векторного эмбеддинга, выглядит следующим образом:

[-0.019273685291409492,-0.01913292706012726,<764 dimensions here>,0.0007094172760844231,0.043409910053014755]

Если модель считает признаки входных данных «похожими» (исходя из своего понимания), расстояние между векторными эмбеддингами этих двух входных данных будет небольшим.

Измерения

Векторные размерности описывают ширину векторного эмбеддинга, то есть количество элементов с плавающей точкой, из которых состоит данный вектор.

Количество размерностей определяется моделью машинного обучения, которая используется для создания векторных эмбеддингов, и тем, как она представляет входные признаки в зависимости от своей внутренней структуры и сложности. Большее количество размерностей (более «широкие» векторы) может повысить точность, но ценой вычислительных ресурсов, памяти и задержки (скорости) векторного поиска.

См. измерения документацию, чтобы узнать, как настроить допустимую размерность вектора при создании индекса Vectorize.

Метрики расстояния

Метрика расстояния служит индексом, используемым для векторного поиска. Она определяет, как оценивается близость вашего вектора запроса к другим векторам в индексе.

См. метрики расстояния документацию, чтобы узнать, как настроить метрику расстояния при создании индекса Vectorize.