Обзор Model RankerCompatible with Milvus 2.6.x
Традиционный векторный поиск ранжирует результаты исключительно по математическому сходству - насколько близко векторы совпадают в высокоразмерном пространстве. Несмотря на свою эффективность, такой подход часто не учитывает истинную семантическую релевантность. Подумайте о поиске "лучших практик оптимизации баз данных": вы можете получить документы с высокой степенью векторного сходства, в которых часто упоминаются эти термины, но которые на самом деле не содержат действенных стратегий оптимизации.
Model Ranker преобразует поиск Milvus за счет интеграции усовершенствованных языковых моделей, которые понимают семантические связи между запросами и документами. Вместо того чтобы полагаться исключительно на векторное сходство, он оценивает значение контента и контекст, чтобы предоставлять более интеллектуальные и релевантные результаты.
Ограничения
Ранжирование моделей не может использоваться при поиске по группам.
Поля, используемые для ранжирования моделей, должны быть текстового типа (
VARCHAR).Каждый ранжировщик моделей может одновременно использовать для оценки только одно поле
VARCHAR.
Как это работает
Ранжировщики моделей интегрируют возможности понимания языковых моделей в процесс поиска Milvus с помощью четко определенного рабочего процесса:
Обзор ранжировщика моделей
Первоначальный запрос: Ваше приложение отправляет запрос в Milvus.
Векторный поиск: Milvus выполняет стандартный векторный поиск для определения документов-кандидатов
Поиск кандидатов: Система определяет начальный набор документов-кандидатов на основе векторного сходства
Оценка модели: Функция ранжирования моделей обрабатывает пары запрос-документ:
Отправляет исходный запрос и документы-кандидаты на внешний модельный сервис.
Языковая модель оценивает семантическую релевантность между запросом и каждым документом
Каждый документ получает оценку релевантности, основанную на семантическом понимании
Интеллектуальное ранжирование: Документы упорядочиваются на основе сгенерированных моделью оценок релевантности
Улучшенные результаты: Ваше приложение получает результаты, ранжированные по семантической релевантности, а не просто по векторному сходству.
Выберите поставщика моделей для своих нужд
Milvus поддерживает следующие поставщики модельных услуг для повторного ранжирования, каждый из которых имеет свои отличительные особенности:
Провайдер |
Лучший для |
Характеристики |
Пример использования |
|---|---|---|---|
vLLM |
Сложные приложения, требующие глубокого семантического понимания и настройки |
|
Платформа для юридических исследований, развертывающая модели, специфичные для конкретной области, которые понимают юридическую терминологию и связи с прецедентным правом |
TEI |
Быстрая реализация с эффективным использованием ресурсов |
|
Система управления контентом, нуждающаяся в эффективных возможностях рерайтинга при стандартных требованиях |
Cohere |
Корпоративные приложения, для которых важны надежность и простота интеграции |
|
Платформа электронной коммерции, требующая высокой доступности поиска с постоянной производительностью API и многоязычными каталогами товаров |
Voyage AI |
Приложения RAG с особыми требованиями к производительности и контексту |
|
Исследовательская база данных с различной длиной документов, требующая точной настройки производительности и специализированного семантического понимания |
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
Параметр |
Требуемый? |
Описание |
Значение / пример |
|---|---|---|---|
|
Да |
Идентификатор вашей функции, используемый при выполнении поиска. |
|
|
Да |
Имя текстового поля, используемого для повторного ранжирования. Должно быть полем типа |
|
|
Да |
Указывает тип создаваемой функции. Должно быть установлено значение |
|
|
Да |
Словарь, содержащий конфигурацию для функции ранжирования на основе модели. Доступные параметры (ключи) зависят от поставщика услуг. |
|
|
Да |
Должно быть установлено значение |
|
|
Да |
Поставщик услуг модели, который будет использоваться для реранкинга. |
|
|
Да |
Список строк запросов, используемых моделью ранжирования для расчета баллов релевантности. Количество строк запросов должно точно соответствовать количеству запросов в поисковой операции (даже при использовании векторов запросов вместо текста), иначе будет выдано сообщение об ошибке. |
|
|
Да |
URL-адрес службы модели. |
|
|
Нет |
Максимальное количество документов, обрабатываемых в одной партии. Большие значения увеличивают пропускную способность, но требуют больше памяти. |
|
Применить к стандартному векторному поиску
Определив ранжирование модели, вы можете применить его во время поисковых операций, передав параметр 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