0Pricing
AI Agents · Урок

Переранжирование с помощью кросс-энкодеров

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

«Переранжирование с помощью кросс-энкодеров» — бесплатный урок AI Agents на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Зачем выполнять повторное ранжирование?

Сходство эмбеддингов — это быстрый предварительный этап с низкой точностью. Он часто возвращает фрагменты, содержащие те же KEYWORDS, что и запрос, но на самом деле не относящиеся к QUESTION.

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

Двуэнкодер и кросс-энкодер

Две архитектуры для определения сходства текстов:

  • Двуэнкодер — отдельно кодирует запрос и фрагмент и вычисляет косинусное сходство. Работает быстро: векторизацию можно выполнить один раз и переиспользовать, но точность ниже.
  • Кросс-энкодер — совместно обрабатывает пару (запрос, фрагмент) моделью. Работает медленно, поскольку обрабатывает каждую пару отдельно, но обеспечивает гораздо более высокую точность.

Двухэтапный поиск

Шаблон, объединяющий эти подходы:

  1. Двуэнкодер быстро извлекает 50 наиболее подходящих кандидатов
  2. Кросс-энкодер выполняет повторное ранжирование и оставляет 5 лучших
  3. Пять лучших фрагментов передаются в запрос LLM

Вы получаете скорость двуэнкодера и точность кросс-энкодера.

Использование Cohere Rerank

Самый простой кросс-энкодер для промышленной эксплуатации:

import cohere
co = cohere.Client(COHERE_KEY)

results = co.rerank(
    model='rerank-multilingual-v3.0',
    query='What is the refund policy?',
    documents=top_50_chunks,
    top_n=5
)
for r in results.results:
    print(r.index, r.relevance_score, top_50_chunks[r.index])

Ранжировщики с открытым исходным кодом

BGE Reranker — ведущий вариант с открытым исходным кодом:

from sentence_transformers import CrossEncoder
model = CrossEncoder('BAAI/bge-reranker-base')

pairs = [(query, chunk) for chunk in candidates]
scores = model.predict(pairs)
ranked = [c for _, c in sorted(zip(scores, candidates), reverse=True)][:5]

Voyage Rerank

import voyageai
vo = voyageai.Client(api_key=VOYAGE_KEY)
res = vo.rerank(
    query=query,
    documents=candidates,
    model='rerank-2',
    top_k=5
)

Когда повторное ранжирование помогает

  • Длинные списки кандидатов (50–200)
  • Незначительные различия в релевантности
  • Запросы с отрицанием или сравнением
  • Многоязычные случаи

Когда оно не помогает

  • Уже узкие наборы кандидатов (5 лучших от двуэнкодера)
  • Запросы, критичные к задержке, но не требующие высокой точности

Компромисс между стоимостью и качеством

Кросс-энкодеры выполняют отдельный вывод для каждой пары. Повторное ранжирование 50 кандидатов означает 50 обращений к модели: с Cohere/Voyage это недорого, а при самостоятельном размещении модели работает медленнее.

Для повторного ранжирования обычно достаточно 50–200 кандидатов; большее число редко оправдывает затраты.

Integrating into LangChain

from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import CohereRerank

compressor = CohereRerank(top_n=5)
retriever = ContextualCompressionRetriever(
    base_compressor=compressor,
    base_retriever=vector_retriever
)

Integrating into LlamaIndex

from llama_index.postprocessor.cohere_rerank import CohereRerank

rerank = CohereRerank(top_n=5)
query_engine = index.as_query_engine(
    similarity_top_k=20,
    node_postprocessors=[rerank]
)

Повторное ранжирование с учётом разнообразия

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

from langchain.vectorstores import Chroma
results = store.max_marginal_relevance_search(query, k=5, fetch_k=20, lambda_mult=0.5)

Двухэтапный шаблон

Зачем использовать двуэнкодер и кросс-энкодер вместо одного из них?

Повторение

Двуэнкодер извлекает 50 результатов, а кросс-энкодер повторно ранжирует их и оставляет 5. В промышленной эксплуатации используйте Cohere или Voyage, а BGE OSS — при самостоятельном размещении. Это значительно повышает точность при умеренном увеличении стоимости.

Часто задаваемые вопросы

Урок «Переранжирование с помощью кросс-энкодеров» бесплатный?

Да — полный текст урока «Переранжирование с помощью кросс-энкодеров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Переранжирование с помощью кросс-энкодеров»?

Получите 50 лучших результатов с помощью недорогих эмбеддингов, затем переранжируйте 5 лучших медленным кросс-энкодером для большей точности. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Переранжирование с помощью кросс-энкодеров»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Переранжирование с помощью кросс-энкодеров
  2. HyDE: гипотетические эмбеддинги документов
  3. Многовекторный поиск (ColBERT)
  4. Оценка RAG (RAGAS, Recall@K)
← Назад к AI Agents