Создавайте семантический поиск быстро
Семантический поиск — отличный инструмент, помогающий вашим клиентам или сотрудникам находить нужные продукты или информацию. Он даже может выявлять информацию, которую сложно индексировать, для получения более качественных результатов. Тем не менее, если ваши семантические методологии не развернуты так, чтобы работать быстро, они не принесут вам никакой пользы. Клиент или сотрудник не будет просто сидеть и ждать, пока система не спеша отвечает на его запрос, — а в это же время, вероятно, обрабатывается еще тысяча других.
Как сделать семантический поиск быстрым? Медленный семантический поиск не годится.
К счастью, именно такие задачи Lucidworks любит решать. Недавно мы протестировали кластер скромного размера — подробности ниже, — который показал 1500 RPS (запросов в секунду) по коллекции из более чем одного миллиона документов со средним временем отклика примерно 40 миллисекунд. Вот это действительно серьезная скорость.
Реализация семантического поиска
Чтобы обеспечить молниеносную магию машинного обучения, Lucidworks реализовала семантический поиск с использованием подхода семантического векторного поиска. Есть две критически важные части.
Часть первая: модель машинного обучения
Сначала нужен способ кодировать текст в числовой вектор. Текстом может быть описание продукта, поисковый запрос пользователя, вопрос или даже ответ на вопрос. Модель семантического поиска обучается кодировать текст так, чтобы текст, семантически похожий на другой текст, кодировался в векторы, которые численно «близки» друг к другу. Этот этап кодирования должен быть быстрым, чтобы поддерживать тысячу или более возможных поисков клиентов или пользовательских запросов, поступающих каждую секунду.
Часть вторая: система векторного поиска
Во-вторых, нужен способ быстро находить лучшие совпадения с поиском клиента или пользовательским запросом. Модель уже закодирует этот текст в числовой вектор. Далее нужно сравнить его со всеми числовыми векторами в вашем каталоге или списках вопросов и ответов, чтобы найти лучшие совпадения — векторы, которые «ближе всего» к вектору запроса. Для этого вам понадобится векторный движок, способный эффективно и молниеносно обрабатывать всю эту информацию. Движок может содержать миллионы векторов, а вам на самом деле нужны только лучшие двадцать или около того совпадений с вашим запросом. И, конечно, он должен обрабатывать примерно тысячу таких запросов каждую секунду.
Чтобы справиться с этими задачами, мы добавили систему векторного поиска Milvus в наш релиз Fusion 5.3. Milvus — это программное обеспечение с открытым исходным кодом, и оно быстрое. Milvus использует FAISS (Facebook AI Similarity Search), ту же технологию, которую Facebook использует в production для собственных инициатив в области машинного обучения. При необходимости она может работать еще быстрее на GPU. Когда Fusion 5.3 (или выше) устанавливается с компонентом машинного обучения, Milvus автоматически устанавливается как часть этого компонента, поэтому вы можете легко включить все эти возможности.
Размер векторов в заданной коллекции, указываемый при создании коллекции, зависит от модели, которая создает эти векторы. Например, заданная коллекция может хранить векторы, созданные путем кодирования (с помощью модели) всех описаний продуктов в каталоге товаров. Без системы векторного поиска вроде Milvus поиски по сходству были бы невозможны во всем векторном пространстве. Поэтому поиски по сходству пришлось бы ограничивать заранее выбранными кандидатами из векторного пространства (например, 500), что давало бы и более низкую производительность, и результаты более низкого качества. Milvus может хранить сотни миллиардов векторов в нескольких коллекциях векторов, чтобы обеспечить быстрый поиск и релевантные результаты.
Использование семантического поиска
Давайте вернемся к рабочему процессу семантического поиска, теперь, когда мы немного узнали о том, почему Milvus может быть настолько важен. Семантический поиск состоит из трех этапов. На первом этапе загружается и/или обучается модель машинного обучения. После этого данные индексируются в Milvus и Solr. Заключительный этап — этап запроса, когда происходит сам поиск. Ниже мы сосредоточимся на этих двух последних этапах.
Индексация в Milvus
Архитектурная диаграмма индексации в Milvus.
Как показано на диаграмме выше, этап запроса начинается аналогично этапу индексации, только вместо документов поступают запросы. Для каждого запроса:
- Запрос отправляется в индексный конвейер Smart Answers.
- Затем запрос отправляется в ML-модель.
- ML-модель возвращает числовой вектор (зашифрованный из запроса). Опять же, тип модели определяет размер вектора.
- Вектор отправляется в Milvus, который затем определяет, какие векторы в указанной коллекции Milvus лучше всего соответствуют предоставленному вектору.
- Milvus возвращает список уникальных ID и расстояний, соответствующих векторам, определенным на четвертом шаге.
- Запрос, содержащий эти ID и расстояния, отправляется в Solr.
- Затем Solr возвращает упорядоченный список документов, связанных с этими ID.
Тестирование масштабирования
Чтобы доказать, что наши потоки семантического поиска работают с эффективностью, необходимой нашим клиентам, мы проводим нагрузочные тесты с использованием скриптов Gatling на Google Cloud Platform, используя кластер Fusion с восемью репликами ML-модели, восемью репликами сервиса запросов и одним экземпляром Milvus. Тесты выполнялись с использованием индексов Milvus FLAT и HNSW. Индекс FLAT имеет 100% полноту, но менее эффективен — за исключением случаев, когда наборы данных небольшие. Индекс HNSW (Hierarchical Small World Graph) по-прежнему обеспечивает высокое качество результатов и имеет повышенную производительность на больших наборах данных.
Давайте перейдем к некоторым цифрам из недавнего примера, который мы запускали:
Производительность индексов Milvus FLAT и HNSW на небольшом наборе данных.
Производительность индексов Milvus FLAT и HNSW на среднем наборе данных.
Производительность индексов Milvus FLAT и HNSW на большом наборе данных.
Начало работы
Конвейеры Smart Answers разработаны так, чтобы быть простыми в использовании. У Lucidworks есть предварительно обученные модели, которые легко развернуть, и они в целом дают хорошие результаты — хотя обучение собственных моделей в сочетании с предварительно обученными моделями обеспечит наилучшие результаты. Свяжитесь с нами сегодня, чтобы узнать, как вы можете внедрить эти инициативы в свои поисковые инструменты для получения более эффективных и приятных результатов.
Этот блог перепечатан с: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Читать далее

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Zilliz Cloud Enterprise Vector Search Powers High-Performance AI on AWS
Zilliz Cloud on AWS powers secure, scalable, ultra-fast vector search for enterprise AI apps, with BYOC, sub-10ms latency, and zero-DevOps simplicity.



