Обзор Model RankerCompatible with Milvus 2.6.x

Традиционный векторный поиск ранжирует результаты исключительно по математическому сходству - насколько близко векторы совпадают в высокоразмерном пространстве. Несмотря на свою эффективность, такой подход часто не учитывает истинную семантическую релевантность. Подумайте о поиске "лучших практик оптимизации баз данных": вы можете получить документы с высокой степенью векторного сходства, в которых часто упоминаются эти термины, но которые на самом деле не содержат действенных стратегий оптимизации.

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

Ограничения

  • Ранжирование моделей не может использоваться при поиске по группам.

  • Поля, используемые для ранжирования моделей, должны быть текстового типа (VARCHAR).

  • Каждый ранжировщик моделей может одновременно использовать для оценки только одно поле VARCHAR.

Как это работает

Ранжировщики моделей интегрируют возможности понимания языковых моделей в процесс поиска Milvus с помощью четко определенного рабочего процесса:

Model Ranker Overview Обзор ранжировщика моделей

  1. Первоначальный запрос: Ваше приложение отправляет запрос в Milvus.

  2. Векторный поиск: Milvus выполняет стандартный векторный поиск для определения документов-кандидатов

  3. Поиск кандидатов: Система определяет начальный набор документов-кандидатов на основе векторного сходства

  4. Оценка модели: Функция ранжирования моделей обрабатывает пары запрос-документ:

    • Отправляет исходный запрос и документы-кандидаты на внешний модельный сервис.

    • Языковая модель оценивает семантическую релевантность между запросом и каждым документом

    • Каждый документ получает оценку релевантности, основанную на семантическом понимании

  5. Интеллектуальное ранжирование: Документы упорядочиваются на основе сгенерированных моделью оценок релевантности

  6. Улучшенные результаты: Ваше приложение получает результаты, ранжированные по семантической релевантности, а не просто по векторному сходству.

Выберите поставщика моделей для своих нужд

Milvus поддерживает следующие поставщики модельных услуг для повторного ранжирования, каждый из которых имеет свои отличительные особенности:

Провайдер

Лучший для

Характеристики

Пример использования

vLLM

Сложные приложения, требующие глубокого семантического понимания и настройки

  • Поддержка различных больших языковых моделей

  • Гибкие возможности развертывания

  • Более высокие вычислительные требования

  • Больший потенциал кастомизации

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

TEI

Быстрая реализация с эффективным использованием ресурсов

  • Легкий сервис, оптимизированный для работы с текстом

  • Более простое развертывание с меньшими требованиями к ресурсам

  • Предварительно оптимизированные модели ранжирования

  • Минимальные накладные расходы на инфраструктуру

Система управления контентом, нуждающаяся в эффективных возможностях рерайтинга при стандартных требованиях

Cohere

Корпоративные приложения, для которых важны надежность и простота интеграции

  • Надежность и масштабируемость корпоративного уровня

  • Управляемый сервис без обслуживания инфраструктуры

  • Многоязычные возможности рерайтинга

  • Встроенное ограничение скорости и обработка ошибок

Платформа электронной коммерции, требующая высокой доступности поиска с постоянной производительностью API и многоязычными каталогами товаров

Voyage AI

Приложения RAG с особыми требованиями к производительности и контексту

  • Модели, специально обученные для задач реранжирования

  • Гранулярный контроль усечения для документов различной длины

  • Оптимизированный вывод для производственных рабочих нагрузок

  • Несколько вариантов моделей (rerank-2, rerank-lite и т.д.)

Исследовательская база данных с различной длиной документов, требующая точной настройки производительности и специализированного семантического понимания

SiliconFlow

Приложения, обрабатывающие длинные документы с приоритетом экономичности

  • Расширенное разбиение документов на куски с настраиваемым перекрытием

  • Оценка на основе чанков (чанк с наивысшей оценкой представляет документ)

  • Поддержка различных моделей реранжирования

  • Экономическая эффективность при использовании стандартных и профессиональных моделей

Система поиска технической документации для обработки объемных руководств и документов, требующих интеллектуальной сегментации и контроля перекрытия

Подробную информацию о реализации каждой модели сервиса см. в специальной документации:

Реализация

Прежде чем приступить к реализации Model Ranker, убедитесь, что у вас есть:

  • Коллекция Milvus с полем VARCHAR, содержащим текст для ранжирования.

  • Работающий внешний сервис модели, доступный вашему экземпляру Milvus

  • Соответствующее сетевое соединение между Milvus и выбранным вами сервисом моделей.

Ранжирование моделей легко интегрируется как со стандартным векторным поиском, так и с гибридными поисковыми операциями. Реализация заключается в создании объекта Function, определяющего конфигурацию ранжирования, и передаче его операциям поиска.

Создание ранжировщика моделей

Чтобы реализовать ранжирование моделей, сначала определите объект Function с соответствующей конфигурацией. В этом примере мы используем TEI в качестве поставщика услуг:

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
    uri="http://localhost:19530"  # Replace with your Milvus server URI
)

# Create a model ranker function
model_ranker = Function(
    name="semantic_ranker",  # Function identifier
    input_field_names=["document"],  # VARCHAR field to use for reranking
    function_type=FunctionType.RERANK,  # Must be set to RERANK
    params={
        "reranker": "model",  # Specify model reranker. Must be "model"
        "provider": "tei",  # Choose provider: "tei", "vllm", etc.
        "queries": ["machine learning for time series"],  # Query text
        "endpoint": "http://model-service:8080",  # Model service endpoint
        # "maxBatch": 32  # Optional: batch size for processing
    }
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.ranker.ModelRanker;

MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
        .uri("http://localhost:19530")
        .build());

ModelRanker ranker = ModelRanker.builder()
        .name("semantic_ranker")
        .inputFieldNames(Collections.singletonList("document"))
        .provider("tei")
        .queries(Collections.singletonList("machine learning for time series"))
        .endpoint("http://model-service:8080")
        .build();
// nodejs
// go
# restful

Параметр

Требуемый?

Описание

Значение / пример

name

Да

Идентификатор вашей функции, используемый при выполнении поиска.

"semantic_ranker"

input_field_names

Да

Имя текстового поля, используемого для повторного ранжирования.

Должно быть полем типа VARCHAR.

["document"]

function_type

Да

Указывает тип создаваемой функции.

Должно быть установлено значение RERANK для всех ранжировщиков моделей.

FunctionType.RERANK

params

Да

Словарь, содержащий конфигурацию для функции ранжирования на основе модели. Доступные параметры (ключи) зависят от поставщика услуг.

{...}

params.reranker

Да

Должно быть установлено значение "model" для включения функции ранжирования по моделям.

"model"

params.provider

Да

Поставщик услуг модели, который будет использоваться для реранкинга.

"tei"

params.queries

Да

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

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

["search query"]

params.endpoint

Да

URL-адрес службы модели.

"http://localhost:8080"

max_client_batch_size

Нет

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

32 (по умолчанию)

Определив ранжирование модели, вы можете применить его во время поисковых операций, передав параметр ranker:

# Use the model ranker in standard vector search
results = client.search(
    collection_name,
    data=[your_query_vector], # Number of query vectors must match that specified in model_ranker.params["queries"] 
    anns_field="vector_field",
    limit=10,
    output_fields=["document"],  # Include the text field in outputs
    ranker=model_ranker,  # Apply the model ranker here
    consistency_level="Bounded"
)
import io.milvus.v2.common.ConsistencyLevel;
import io.milvus.v2.service.vector.request.SearchReq;
import io.milvus.v2.service.vector.response.SearchResp;
import io.milvus.v2.service.vector.request.data.EmbeddedText;

SearchReq searchReq = SearchReq.builder()
        .collectionName(COLLECTION_NAME)
        .data(Collections.singletonList(new EmbeddedText("machine learning for time series")))
        .annsField("vector_field")
        .limit(10)
        .outputFields(Collections.singletonList(document))
        .functionScore(FunctionScore.builder()
                .addFunction(ranker)
                .build())
        .consistencyLevel(ConsistencyLevel.BOUNDED)
        .build();
SearchResp searchResp = client.search(searchReq);
// nodejs
// go
# restful

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?