Optimizing Vector Search: Why You Should Flatten Structured Data

Optimizing Vector Search: Why You Should Flatten Structured Data

Data&AI Insights

📖 Источник: towardsdatascience.com

Краткое содержание статьи

Статья посвящена оптимизации поиска по векторам в системах Retrieval-Augmented Generation (RAG) через преобразование структурированных данных в плоский текст. Автор показывает, что простое внедрение необработанных JSON-объектов в векторную базу данных приводит к значительному ухудшению качества поиска из-за особенностей токенизации и работы современных моделей эмбеддинга на базе архитектуры BERT. Для повышения эффективности предлагается метод «флеттинга» — преобразование JSON в естественный язык с сохранением смысловых связей, что улучшает метрики поиска на 19-27%. В статье приведён эксперимент с использованием модели all-MiniLM-L6-v2 и датасета Amazon ESCI, демонстрирующий конкретные численные улучшения.


Проблемы использования необработанных JSON в векторном поиске

Современные эмбеддинги, основанные на архитектуре BERT (кодировщик трансформера), обучены на больших корпусах неструктурированного текста с целью захвата семантического смысла. При попытке внедрить структурированные данные в формате JSON напрямую в векторную базу, возникает несколько ключевых проблем:

  • Токенизация: современные модели используют алгоритмы Byte-Pair Encoding (BPE) или WordPiece, оптимизированные для естественного языка. При обработке JSON токенизатор разбивает текст на множество синтаксических символов (", :, ,), которые не несут семантической нагрузки, и на ключи/значения, например, "usd": 10 разбивается на токены ", usd, :, 10, ,. Это приводит к низкому отношению сигнала к шуму, так как около 25% токенов — синтаксис без смысла.
  • Механизм внимания (Attention) в трансформерах связывает значимые слова в тексте, например, в предложении «The price is 10 US dollars» модель легко связывает число 10 с понятием price. В JSON же структура ключ-значение представлена синтаксисом, который модель не обучена эффективно интерпретировать, что приводит к потере смысловых связей.
  • Среднее объединение (Mean Pooling): итоговый вектор эмбеддинга получается усреднением всех токенов. При большом количестве «шумных» синтаксических токенов итоговый вектор смещается от истинного семантического центра, ухудшая качество поиска и увеличивая расстояние между запросом и документом в векторном пространстве.

Пример токенизации необработанного JSON с высокой долей синтаксических токенов, не несущих смысловой нагрузки


Метод «флеттинга»: преобразование JSON в естественный язык

Для решения описанных проблем предлагается преобразовать структурированные данные в плоский текст, который лучше подходит для моделей эмбеддинга. Рассмотрим пример продукта в формате JSON:

💻 Код (json):

{
  "skuId": "123",
  "description": "This is a test product used for demonstration purposes",
  "quantity": 5,
  "price": {
    "usd": 10,
    "eur": 9
  },
  "availableDiscounts": ["1", "2", "3"],
  "giftCardAvailable": "true",
  "category": "demo product"
}

Преобразование в текст по шаблону:

Product with SKU 123 belongs to the category "demo product"
Description: This is a test product used for demonstration purposes
It has a quantity of 5 available
The price is 10 US dollars or 9 euros
Available discount ids include 1, 2, and 3
Gift cards are available for this product

Токенизация этого текста приводит к сокращению длины последовательности на 14% и к увеличению доли семантически значимых токенов.

Токенизация преобразованного текста с меньшим количеством токенов и большей семантической нагрузкой


Эксперимент: сравнение производительности поиска

Для оценки эффективности подхода был проведён эксперимент с использованием:

  • Модели эмбеддинга: all-MiniLM-L6-v2 (22,7 млн параметров), популярной за счёт скорости и точности.
  • Датасета: Amazon ESCI, версия milistu/amazon-esci-data, содержащая 5,000 случайных запросов и 3,809 продуктов.
  • Индексов: два плоских FAISS индекса (IndexFlatIP) с размерностью эмбеддинга 384 — один для JSON, другой для плоского текста. Использование плоского индекса исключает влияние Approximate Nearest Neighbour (ANN) на метрики.

Функция преобразования JSON в текст:

💻 Код (python):

def flatten_product(product):
    return (
        f"Product {product['product_title']} from brand {product['product_brand']}"
        f" and product id {product['product_id']}"
        f" and description {product['product_description']}"
    )

Пример необработанного JSON из датасета:

💻 Код (json):

{
  "product_id": "B07NKPWJMG",
  "title": "RoWood 3D Puzzles for Adults, Wooden Mechanical Gear Kits for Teens Kids Age 14+",
  "description": "Specifications Model Number: Rowood Treasure box LK502 Average build time: 5 hours Total Pieces: 123 Model weight: 0.69 kg Box weight: 0.74 KG Assembled size: 100*124*85 mm Box size: 320*235*39 mm Certificates: EN71,-1,-2,-3,ASTMF963 Recommended Age Range: 14+ Contents Plywood sheets Metal Spring Illustrated instructions Accessories MADE FOR ASSEMBLY -Follow the instructions provided in the booklet and assembly 3d puzzle with some exciting and engaging fun. Fell the pride of self creation getting this exquisite wooden work like a pro. GLORIFY YOUR LIVING SPACE -Revive the enigmatic charm and cheer your parties and get-togethers with an experience that is unique and interesting.",
  "brand": "RoWood",
  "color": "Treasure Box"
}

Результаты эксперимента

Сравнение метрик поиска (Precision@10, Recall@10, MRR) для двух подходов показало:

  • Recall@10 увеличился на 19.1%
  • MRR (Mean Reciprocal Rank) вырос на 27.2%
  • Precision@10 также демонстрирует стабильный рост около 20%

Сравнение результатов поиска для необработанного JSON и плоского текста с использованием модели all-MiniLM-L6-v2

Процентное улучшение ключевых метрик после преобразования JSON в плоский текст


Выводы и рекомендации

  • Внедрение необработанных JSON-объектов в векторные базы данных с использованием стандартных моделей эмбеддинга на базе BERT приводит к ухудшению качества поиска из-за высокой доли синтаксических токенов и отсутствия семантических связей между ключами и значениями.
  • Преобразование структурированных данных в плоский текст с сохранением смысловых связей (флеттинг) значительно улучшает качество эмбеддингов и, как следствие, метрики поиска.
  • Эксперимент с моделью all-MiniLM-L6-v2 и датасетом Amazon ESCI показал улучшение Recall@10 на 19.1% и MRR на 27.2%, что подтверждает эффективность метода.
  • Для инженеров, создающих RAG-системы, ключевым этапом является правильная подготовка данных — именно она обеспечивает достижение пиковых результатов семантического поиска.
  • Важно использовать плоские индексы FAISS для точной оценки метрик без влияния Approximate Nearest Neighbour алгоритмов.

Дополнительные ресурсы


Таким образом, статья демонстрирует, что грамотная подготовка структурированных данных в виде плоского текста является критически важной для повышения качества семантического поиска в RAG-системах, и предлагает конкретный, воспроизводимый метод с подтверждёнными численными результатами.


📢 Информация предоставлена телеграм-каналом: Data&AI Insights

🤖 Data&AI Insights - Ваш источник инсайтов о данных и ИИ

Report Page