Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+659новых вакансий за сутки·52 454вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 688
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 392 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python6 033
  • Облачные технологии4 127
  • QA вакансии1 598
  • Android1 134
  • Инженер данных767
  • Продакт-менеджер295

Разработка

  • iOS1 084
  • Backend вакансии1 031
  • Fullstack вакансии444
  • AI вакансии385
  • Frontend вакансии371
  • Mobile вакансии27

По стеку

  • Go3 416
  • Java2 070
  • Kotlin926
  • Node.js731
  • Rust514
  • .NET462
  • PHP267
  • C++206
  • C#195

DevOps и инфраструктура

  • Kubernetes2 336
  • Linux-инфраструктура1 899
  • DevOps вакансии1 844
  • Terraform / IaC1 428
  • CI/CD848
  • Мониторинг и Observability650
  • SRE220
  • Кибербезопасность35

Аналитика и данные

  • Аналитик данных464
  • Data Scientist434
  • Бизнес-аналитик337
  • Системный аналитик48

Другие направления

  • Проджект-менеджер101
  • UI/UX дизайн72
  • Ручное тестирование14

По регионам

  • Вакансии в США25 531
  • Вакансии в Европе9 792
  • Работа в России3 193
  • Вакансии в Канаде2 236

По формату

  • Удалённые вакансии43 578
  • Релокация в США25 531
  • Гибридная работа4 289
  • Офисная работа3 340

По уровню

  • Senior вакансии21 650
  • Middle вакансии12 211
  • Junior вакансии3 886

Сейчас нанимают

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise94 вакансии
  • Infobip28 вакансий
  • Spotify18 вакансий
  • Celonis17 вакансий
  • Darktrace17 вакансий
  • Adyen13 вакансий
  • UiPath13 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме LangChainВсе вопросы
LangChainMiddleТеория

Как работает HypotheticalDocumentEmbedder (HyDE) и когда его следует использовать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

HyDE: LLM генерирует гипотетический ответ на вопрос, затем эмбеддинг этого ответа используется для поиска вместо эмбеддинга вопроса — семантически ближе к реальным документам. Добавляет один LLM-вызов на запрос, помогает при стилистическом разрыве вопрос/документ.

Пример реализации

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

# 1. Векторное хранилище с реальными документами
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_texts(
    texts=[
        "Redis настраивается через redis.conf. Параметр maxmemory задаёт лимит памяти.",
        "PostgreSQL использует pg_hba.conf для управления доступом клиентов.",
        "Nginx проксирует запросы через директиву proxy_pass в server block.",
    ],
    embedding=embeddings,
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 2})

# 2. Генератор гипотетического документа
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
hyde_prompt = ChatPromptTemplate.from_template(
    """Напиши короткий технический параграф (3-5 предложений), который мог бы быть
ответом на следующий вопрос в документации. Пиши как документ, не как ответ на вопрос.

Вопрос: {question}"""
)
hyde_chain = hyde_prompt | llm | StrOutputParser()

# 3. HyDE retriever: генерируем гипотезу, ищем по ней
def hyde_retrieve(question: str):
    hypothetical_doc = hyde_chain.invoke({"question": question})
    print(f"Hypothetical doc: {hypothetical_doc[:100]}...")
    return retriever.invoke(hypothetical_doc)  # ищем по гипотезе, не по вопросу

# 4. RAG-цепочка с HyDE
final_prompt = ChatPromptTemplate.from_template(
    "Контекст: {context}\n\nВопрос: {question}\n\nОтвет:"
)

chain = (
    {
        "context": lambda x: "\n".join(d.page_content for d in hyde_retrieve(x["question"])),
        "question": RunnablePassthrough() | (lambda x: x["question"]),
    }
    | final_prompt
    | llm
    | StrOutputParser()
)

result = chain.invoke({"question": "Как ограничить память в Redis?"})
print(result)

Идея HyDE (Hypothetical Document Embedder)

Стандартный retrieval сравнивает эмбеддинг вопроса с эмбеддингами документов. Проблема: вопрос короткий («Как настроить Redis?»), а документы длинные и детальные — их эмбеддинги семантически далеки.

HyDE решает это: сначала LLM генерирует гипотетический ответ на вопрос (без обращения к реальным документам), затем эмбеддинг этого гипотетического ответа используется для поиска. Гипотетический ответ стилистически и семантически ближе к реальным документам, чем голый вопрос.

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

  • Короткие фактические вопросы с длинными документами-ответами.
  • Технические вопросы, где вопрос написан в разговорном стиле, а документы — в формальном.
  • Специализированные домены, где bi-encoder плохо обучен на domain-specific терминологии.

Когда HyDE не нужен

  • Документы и вопросы уже стилистически близки (оба в разговорном стиле или оба технические).
  • Нет бюджета на дополнительный LLM-вызов на каждый запрос.
  • Factual retrieval с точными датами/именами — гипотеза может галлюцинировать конкретику.

Подводные камни

  • HyDE добавляет LLM-вызов на каждый запрос — latency возрастает на 200–800 мс, стоимость удваивается.
  • Если LLM галлюцинирует в гипотетическом документе, эмбеддинг уведёт поиск в неправильную сторону — хуже, чем без HyDE.
  • Кеширование гипотетических документов по хэшу вопроса снижает стоимость для повторяющихся запросов.
  • HyDE не заменяет reranking — часто эффективнее комбинировать: HyDE для retrieval + Cohere Rerank для переоценки.
  • Качество зависит от quality промпта для гипотезы — экспериментируйте с инструкцией («пиши как документация», «пиши как статья»).
  • Метрика Context Recall может не вырасти, если проблема не в стиле запроса, а в плохом chunking или малом k.

Частые вопросы на собеседовании

  • Как работают инструменты (tools) в LangChain и как создать кастомный инструмент?
  • Что такое RAG (Retrieval-Augmented Generation) и как реализовать его с помощью LangChain?
  • В чём разница между invoke(), stream() и batch() в интерфейсе Runnable в LangChain?
  • Что такое LCEL (LangChain Expression Language) и как он использует оператор | для компоновки цепочек?

Типичные ошибки

  • Объяснять hyde retriever только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать hyde retriever с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме LangChain →

Источники

  • https://docs.langchain.com/oss/python/langchain/knowledge-base

Связанные темы

LangChaindata-aillm-orchestrationtool-calling