Мультимодальный поиск для LLM

Слушать статью23:41

Оговорка: эта статья не пытается реконструировать внутренний retrieval GPT, Claude или Gemini. По публичным материалам виден другой слой: inference runtime и инструменты вокруг модели: web search, file search, grounding, connectors, MCP, visual/PDF understanding, citations и agentic search loops.

Представьте RAG-систему для финансовых отчетов. Пользователь спрашивает:

Почему EBITDA margin снизилась в Q4, и где это подтверждается?

Корпус типичный для enterprise QA: annual report в PDF, investor deck, spreadsheet appendix и earnings call transcript. В отчете есть абзац про EBITDA, таблица с FX adjustment на соседней странице и waterfall chart в презентации. Текстовый retriever находит абзац про EBITDA. OCR не извлекает таблицу с корректными headers. Dense retriever поднимает текст про operating expenses: семантически близко, но причинно недостаточно. Модель отвечает уверенно: margin снизилась из-за роста затрат. Citation есть, но она указывает не на evidence, а на соседний текст по теме.

Ошибка появилась раньше генерации: система выбрала не тот evidence.

Сильная модель не исправит плохой context pack. Она лишь аккуратнее соберет ответ из неправильных или неполных источников. В production LLM-системах ошибка часто возникает не на decoding stage, а на retrieval stage: что нашли, что отфильтровали, что переупорядочили, что выбросили из-за бюджета и что в итоге положили в context window.

Главный конфликт

Для документов, PDF, скриншотов и таблиц три привычных упрощения ломаются быстро.

Dense-only retrieval недостаточен. Dense similarity хорошо ловит смысловые переформулировки, но хуже работает с exact IDs, кодами ошибок, числами, ticker-like identifiers, датами, row/column labels и source authority.

OCR-only retrieval недостаточен. OCR-only ломается не только когда OCR ошибся. Даже идеальный OCR может разрушить spatial relation: какая стрелка к чему относится, какая footnote применима к строке, какой цвет на графике соответствует серии, где заголовок колонки, а где значение.

Agentic retrieval дорогой. Agentic search полезен, когда стратегия поиска неизвестна заранее. Если источник и задача понятны, например найти evidence в отчете, договоре или policy, агентность часто добавляет стоимость и недетерминизм вместо качества. Anthropic показывает, что multi-agent research может давать большой uplift на breadth-first задачах, но также пишет про кратный рост token usage в агентных режимах.

Правильная production-рамка:

high-recall retrieval
  -> utility-aware reranking
  -> source-aware context packing
  -> citation-bound generation
  -> eval / telemetry / security checks
Reference architecture for multimodal retrieval around LLMs

Reference architecture: retrieval здесь не один vector search, а управляемый слой выбора evidence с routing, специализированными индексами, reranking, context packing, citations и eval/security loop.

Сквозной кейс: EBITDA margin и FX table

Плохой pipeline:

query
  -> dense vector search over OCR chunks
  -> top-5 text chunks
  -> prompt concat
  -> answer with citation

Что ломается:

  • запрос “почему margin снизилась” требует не просто similarity, а causal evidence;
  • таблица с FX impact хранится как broken OCR text;
  • waterfall chart найден не был, потому что visual page index отсутствует;
  • цитата ведет на страницу с общим текстом, но не на таблицу или chart;
  • модель отвечает правдоподобно, но неполно.

Лучший pipeline:

query
  -> query understanding: financial report, numeric explanation, source citation required
  -> BM25: EBITDA margin, Q4, FX, adjustment
  -> dense retrieval: related management discussion chunks
  -> visual page retrieval: pages with charts/tables
  -> table extraction: FX impact rows, units, footnotes
  -> fusion + reranking
  -> context packing: text + normalized table + page crop
  -> answer with page/table citations
Bad OCR-only pipeline versus multimodal retrieval pipeline

На одном и том же вопросе слабый OCR-only pipeline выглядит “grounded”, но теряет причинный evidence. Мультимодальный pipeline отдельно поднимает text chunks, visual pages, таблицу, footnotes и page/table citations.

В этом pipeline LLM отвечает уже не “по похожему тексту”, а по evidence pack: primary report page, table range, visual crop chart и transcript quote. Это и есть практический смысл мультимодального retrieval вокруг LLM.

В этой статье

Чтобы не путать уровни:

  • search - инфраструктура поиска: BM25, ANN, dense vectors, metadata filters, web/enterprise search, SQL, graph traversal;
  • retrieval - выбор evidence под конкретный запрос;
  • RAG - генерация с выбранным внешним контекстом;
  • grounding - проверяемая привязка claims к источникам;
  • memory - persistent state о пользователе или задаче, не runtime retrieval;
  • context packing - упаковка найденного evidence в ограниченный context window;
  • citations - не украшение ответа, а traceability contract.

Фокус статьи - documents, PDF, screenshots и tables. Видео, аудио и product image search остаются периферией: для них применимы те же идеи, но другие retrieval units и другая cost model.

Как выбирать retrieval strategy

В production полезнее сначала выбрать retrieval strategy, а уже потом рисовать архитектуру. Ошибка routing обычно дороже, чем ошибка в параметре top_k.

if query has exact ID / error code / API name / invoice number:
  use BM25/exact index + metadata filters
  add dense retrieval only as secondary signal

if query targets PDF with tables/charts:
  use text/OCR index + visual page index + table extraction
  rerank with source authority and numeric overlap

if query includes screenshot or UI state:
  first parse visible UI state
  then search docs/tickets/logs by extracted labels/errors

if query is open-ended research:
  use agentic retrieval with explicit budgets
  require citations and source diversity

if corpus is small and single-use:
  consider long context
  still keep page/source references

if freshness or ACL matters:
  retrieval is mandatory
  apply permissions before candidate generation

Ключевой вывод: retrieval strategy выбирается на уровне routing. Это не настройка top_k в vector database.

Минимальный production baseline

Level Что входит Когда достаточно
MVP BM25 + dense text embeddings + metadata/ACL filters + citations Plain text corpus, known sources, low visual complexity
MVP+ for PDF MVP + page rendering + visual page embeddings + table crops Reports, decks, scanned PDFs, screenshots, tables
Advanced Multi-vector late interaction + cross-encoder/VLM reranking + context packing ablations High-value enterprise QA, finance, legal, industrial docs
Research-grade Human-labeled evidence, retrieval ablations, security harness, agentic router benchmark Before changing production retrieval architecture at scale

В enterprise document RAG я бы начинал не с agentic framework, а с такого baseline:

ingestion:
  native text + OCR
  page images
  table/chart/figure crops
  metadata + ACL + versioning

indexes:
  BM25 over normalized text
  dense text vectors
  visual page vectors
  optional region/table vectors

retrieval:
  ACL before retrieval
  parallel text + dense + visual search
  RRF or score fusion
  cross-encoder rerank top 50-200
  VLM rerank only for top visual candidates

generation:
  context pack with source/page/bbox IDs
  claim-level citations
  unsupported-claim checks

Multimodal indexing for PDF, screenshots and tables

В text-only RAG retrieval unit обычно chunk. В multimodal retrieval retrieval unit уже неочевиден: это может быть страница PDF, crop таблицы, screenshot региона, keyframe видео, строка таблицы, chart legend или transcript segment.

Минимальная схема индексов:

Index A: text/OCR chunks
  - BM25/exact matching
  - dense text embeddings
  - doc_id, page_id, section, heading_path
  - ACL, timestamp, version

Index B: visual pages / regions
  - page screenshots
  - table/chart/figure crops
  - visual embeddings
  - bbox, page_id, source_id

Index C: structured tables
  - normalized cells
  - row/column headers
  - units, periods, footnotes
  - source page + bbox

Для EBITDA-кейса один индекс почти гарантированно проиграет. Text/OCR index хранит management discussion, transcript passages и exact terms: EBITDA, Q4, FX, margin. Visual page/region index хранит page image отчета, waterfall chart slide и crop таблицы FX adjustment. Structured table index хранит normalized cells, row/column headers, units, footnotes и page/bbox citation.

Почему не один индекс? Разные failure modes требуют разных сигналов. BM25 ловит точные имена и числа. Dense retrieval ловит semantic match. Visual retrieval ловит layout, диаграммы, формы, подписи и соседство элементов. Structured table index нужен, когда ответ зависит от row/column semantics.

Рабочая модель evidence unit:

evidence_unit:
  id: ev_fx_margin_impact_q4
  source_id: annual_report_2026
  modality: table_cell_range
  page: 117
  bbox: [82, 190, 1420, 890]
  text: "FX impact reduced EBITDA margin by 1.2 percentage points"
  table:
    table_id: tbl_2026_q4_fx_impact
    row_range: ["Europe", "APAC"]
    column_range: ["FX impact", "EBITDA margin impact"]
    units: ["USD millions", "percentage points"]
    footnotes: ["Excludes one-time restructuring costs"]
  retrieval_scores:
    bm25: 12.4
    dense: 0.73
    visual: 0.81
    rerank: 0.92
  acl_scope: ["finance-team"]
  version: "2026-04-18"

Исследовательская линия это подтверждает. ColPali строит retrieval поверх изображений страниц и multi-vector late interaction. VisRAG показывает, что direct document-image retrieval может давать 25-39% end-to-end gain относительно text-based RAG. ViDoRe V3 специально сделан под enterprise document retrieval: 26,000 pages, 3,099 queries, 6 languages, human-verified page relevance and bounding boxes.

Таблицы как отдельный evidence type

Таблицы нельзя считать просто “текстом с переносами строк”. Для финансовых, юридических, медицинских и операционных документов таблица часто является главным evidence. Markdown table удобна для LLM, но она не заменяет structured representation: cell без row/column headers, units и footnotes почти бесполезен.

Хранить таблицу стоит в нескольких формах:

  • как visual crop для проверки layout и footnotes;
  • как normalized cells для numeric lookup;
  • как markdown/CSV для передачи в LLM;
  • как structured record для фильтров и агрегаций;
  • как source-linked evidence с page, bbox and table_id.

Для EBITDA-кейса таблица должна отвечать не только “где встречается FX”. Она должна сохранять связь между segment, period, unit, margin impact and footnote. Иначе модель увидит число, но не поймет, к какой строке, периоду и оговорке оно относится.

Практичная schema:

table_evidence:
  table_id: tbl_2026_q4_fx_impact
  source_id: annual_report_2026
  doc_id: annual_report_2026_pdf
  page_id: p_117
  bbox: [82, 190, 1420, 890]
  title: "FX impact by segment"
  period: "Q4 2026"
  normalized_cells_ref: s3://tables/tbl_2026_q4_fx_impact.parquet
  row_headers: ["North America", "Europe", "APAC"]
  column_headers: ["Q4 revenue", "FX impact", "EBITDA margin impact"]
  cell_range: "B2:C4"
  units: ["USD millions", "percentage points"]
  footnotes: ["Excludes one-time restructuring costs"]
  visual_crop_ref: s3://crops/tbl_2026_q4_fx_impact.png
  extraction_confidence: 0.93
  extraction_model: layout-vlm-2026-04

Когда таблицу передавать в модель:

  • small table: markdown;
  • wide table: selected rows/columns + units + footnotes;
  • numeric QA: structured extraction + citation to cell/range;
  • low confidence extraction: visual crop + extracted text side by side;
  • compliance/legal: source page and bbox required.

Цитирование таблицы должно работать на уровне row/cell/range, а не только page. Ответ “margin снизилась из-за FX” должен ссылаться на table_id, page, bbox и конкретный range, где одновременно видны metric, segment, period, unit и footnote.

Reranking как cascade, а не один этап

Reranking часто описывают как один шаг: “rerank top-k”. В production это обычно cascade с разной стоимостью.

Stage Candidates Модель / метод Цель Cost
First-stage retrieval 500-2000 BM25, dense, visual ANN recall low
Fusion / RRF 100-500 deterministic combine lexical, dense, visual signals low
Cross-encoder rerank 50-200 text reranker полезность для ответа medium
VLM rerank 10-50 VLM over page/crop visual evidence quality high
LLM evidence judge 5-20 LLM claim support, conflict, source quality high

Что именно оценивает cascade:

Этап Что оценивает
BM25 / exact exact terms, IDs, tickers, числа, даты, API names
Dense retriever semantic similarity и paraphrase match
Visual retriever page/layout/visual similarity, charts, tables, screenshots
Fusion / RRF объединение сигналов без преждевременной потери recall
Cross-encoder полезность text evidence для конкретного query
VLM reranker подтверждает ли visual region claim
LLM evidence judge достаточно ли evidence для answer/citation, есть ли конфликт
Source authority features первоисточник, свежесть, версия, trust level

Для text-and-table задач свежий benchmark From BM25 to Corrective RAG показывает, что hybrid + neural rerank может доходить до Recall@5 = 0.816 и MRR@3 = 0.605, а глубина candidate pool перед reranking materially matters. Это хороший аргумент против “взяли top-5 из vector DB и ответили”.

Reranking cascade and context packing contract

Reranking в production лучше проектировать как cascade: дешевый high-recall retrieval сначала, дорогой VLM/LLM judge только на узком candidate set, а финальный context pack уже обязан содержать source IDs, page/bbox/offset и основания для citations.

Хороший reranker оценивает не только similarity:

contains_answer?
contains_required_number_or_quote?
is_primary_source?
is_current?
is_allowed_by_acl?
is_specific_enough?
has_required_table_or_chart?
does_visual_region_support_claim?
is_duplicate?
conflicts_with_other_evidence?

Для EBITDA-кейса reranker должен предпочесть не просто chunk про EBITDA. Нужен evidence, где одновременно есть Q4, margin delta, FX impact, primary-source page и table/chart support. Семантически близкий абзац про operating expenses должен проиграть таблице с FX impact, даже если оба фрагмента “про прибыльность”.

Context packing: конкретный алгоритм

Context packing решает, что модель увидит, в каком порядке, с какими IDs и в каком budget. Это отдельный decision layer после retrieval и reranking.

def build_context_pack(query, ranked, budget):
    ranked = filter_acl(ranked)
    ranked = remove_stale_versions(ranked)
    ranked = dedup_by_source_version_and_region(ranked)
    ranked = dedup_by_semantic_hash(ranked)

    primary = select_primary_sources(
        ranked,
        require_direct_answer=True,
        limit=4,
    )

    numeric = select_numeric_evidence(
        ranked,
        require_units=True,
        require_row_and_column_headers=True,
        limit=3,
    )

    visual = select_visual_evidence(
        ranked,
        max_pages=2,
        max_crops=4,
        prefer_regions=True,
        resolution="medium",
    )

    conflicts = detect_conflicts(ranked)

    pack = []
    pack += compress_text(primary, target_tokens=budget.text)
    pack += render_tables(numeric, max_rows=30, include_units=True)
    pack += attach_visual_crops(visual, max_media_tokens=budget.media)
    pack += summarize_conflicts(conflicts, max_tokens=budget.conflicts)

    return order_for_generation(pack)

Для EBITDA-кейса context pack должен положить не весь annual report. Нужен один абзац management discussion, normalized FX table, crop waterfall chart и transcript quote. Если packer выбросил table crop из-за budget, final answer уже работает с неполной реальностью.

Порядок важен. Модель часто сильнее опирается на ранний context. Поэтому pack должен начинаться с primary evidence, а не с случайного top-1 dense result.

Минимальный contract evidence unit:

type EvidenceUnit = {
  evidence_id: string
  source_id: string
  source_uri?: string
  doc_id?: string
  page?: number
  section?: string
  bbox?: [number, number, number, number]
  timestamp?: string
  modality: "text" | "pdf_page" | "image_crop" | "table" | "video_frame" | "audio"
  acl_scope: string[]
  retrieved_score: number
  rerank_score?: number
  content_ref: string
  checksum: string
}

Citation contract должен быть жестким:

def validate_citations(answer, packed_evidence):
    allowed = {ev.evidence_id for ev in packed_evidence}

    for claim in answer.claims:
        if not claim.evidence_ids:
            raise CitationViolation("claim has no evidence")
        if any(eid not in allowed for eid in claim.evidence_ids):
            raise CitationViolation("claim cites evidence outside packed context")

    return True

Ответ с правильным текстом и неправильной citation - production bug.

Cost, storage and latency

Visual retrieval не бесплатен. Если статья говорит “держите visual page index”, она должна признать стоимость.

Что надо считать:

  • page rendering DPI и размер image store;
  • стоимость batch embedding для page images и crops;
  • single-vector vs multi-vector storage blow-up;
  • latency late interaction;
  • re-indexing после OCR/layout model upgrade;
  • cache invalidation для connector/web sources;
  • TTL для fresh data;
  • versioning для PDF updates;
  • media token cost при передаче page/crop в модель.

Google прямо показывает token-cost геометрию для Gemini 3 media resolution: PDF default/medium около 560 tokens/page, image high 1120 tokens, video high 280 tokens/frame, а video low/medium 70 tokens/frame (Google AI docs). Это значит, что visual context надо передавать coarse-to-fine:

page-level retrieval
  -> region crop
  -> high resolution only for selected evidence
  -> generation with page/crop citations

Нельзя отправлять в модель все найденные страницы “на всякий случай”. Это превращает retrieval проблему в token budget проблему.

Security constraints

Retrieval вокруг LLM - это security boundary. В систему попадает недоверенный текст из web pages, PDF, OCR layers, captions, MCP tools, connector results and memory stores.

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

Retrieval security

  • ACL before retrieval, not after;
  • tenant isolation;
  • source trust levels;
  • stale/deleted document handling;
  • audit trail for retrieved, reranked and rejected evidence;
  • no private source in logs/traces without redaction.

Prompt injection

  • untrusted retrieved text;
  • hidden PDF text;
  • malicious OCR layer;
  • webpage instructions;
  • citation spoofing;
  • tool result injection.

Agent security

  • tool-call allowlist;
  • argument validation;
  • public-web/private-connector separation;
  • no write tools without explicit approval;
  • rate limits and cost limits;
  • exfiltration constraints.

Security test pack:

HTML/PDF injection:
  hidden instructions in footer/OCR layer
  expected: no unsafe tool call, no exfiltration

Cross-tenant retrieval:
  forbidden doc exists in index
  expected: no hit before rerank

Citation mismatch:
  answer cites source not in packed context
  expected: hard failure

Memory poisoning:
  untrusted web content tries to persist instruction
  expected: read-only or approval gate blocks it

Tool schema smuggling:
  payload hidden in tool args
  expected: schema and allowlist reject it

Что публично видно у OpenAI, Anthropic и Google

Публичные docs не доказывают internal retriever topology. Они показывают surface вокруг модели.

Vendor Что видно публично Как это трактовать
OpenAI Responses API, web search, file search, deep research, code interpreter, computer use, remote MCP Unified agentic runtime с tools и retrieval surfaces вокруг модели
Anthropic Contextual Retrieval, advanced tool use, web search, tool search, citations, multi-agent research Сильная публичная рамка context engineering, tool ergonomics and budgeted research
Google / Gemini Grounding with Google Search / Vertex AI Search, RAG Engine, Gemini Embedding 2, media resolution Лучше других документирован grounding stack и multimodal embedding/search surface

Что можно утверждать:

  • у всех трех публично видны search/grounding/citation/tool surfaces;
  • retrieval находится на runtime/tooling layer;
  • citations - часть system contract, но не доказательство отсутствия hallucination;
  • visual/PDF understanding становится production primitive.

Что нельзя утверждать:

  • что GPT/Claude/Gemini внутри используют конкретный retriever;
  • что у каждого vendor есть единый скрытый multimodal index;
  • что web/file search встроен в weights;
  • что public API полностью описывает internal inference stack.

Когда не нужен multimodal или agentic retrieval

Сильная архитектура говорит не только “когда использовать”, но и “когда не использовать”.

Visual retrieval обычно не нужен, если:

  • корпус plain text;
  • нет таблиц, диаграмм, forms, layout semantics;
  • queries mostly exact lookup;
  • PDF имеет качественный native text и reliable table extraction;
  • latency/cost важнее visual recall;
  • visual evidence не используется в citations или eval.

Agentic retrieval обычно не нужен, если:

  • задача deterministic;
  • источники известны заранее;
  • нужен low-latency response;
  • есть хороший hybrid index;
  • вопрос не требует exploration;
  • tool calls не дают нового evidence.

Long context может быть достаточно, если:

  • corpus меньше примерно 200k tokens;
  • документ один и его надо читать целиком;
  • нет сложных ACL/freshness constraints;
  • стоимость и latency приемлемы;
  • нужны synthesis и cross-section reasoning.

Но long context не заменяет retrieval для больших, динамических и permissioned corpora. Retrieval нужен для selection, freshness, permissions, citations, observability and cost control.

Практический вывод

Мультимодальный retrieval нужен не для “поддержки картинок”. Он нужен потому, что в реальных документах evidence часто лежит в таблице, диаграмме, layout-е, скриншоте или соседстве элементов - там, где text-only retriever слепой.

Хорошая LLM-система не просто вызывает сильную модель. Она строит evidence pipeline:

find the right evidence
  -> rank it for answer utility
  -> pack it with source IDs
  -> generate with citations
  -> verify claims
  -> log retrieval path

Если retrieval ошибся, prompt не спасет. Если context packing выбросил главный table crop, model reasoning уже работает не с той реальностью. Если citations не проверяются как contract, “grounded answer” остается интерфейсной иллюзией.

Приложение A: числовые ориентиры

Engineering numbers for multimodal retrieval

Эти числа не являются универсальными константами, но хорошо задают инженерную геометрию: retrieval quality улучшается каскадом, tool surfaces надо загружать по требованию, visual media имеют токенную цену, а agentic search требует budget controller.

Источник Число Что доказывает
Anthropic Contextual Retrieval top-20 retrieval failure rate 5.7% -> 3.7% with contextual embeddings; 2.9% with contextual BM25; 1.9% with reranking Contextual chunks, BM25 and reranking реально двигают retrieval quality.
Anthropic Advanced Tool Use 58 tools from 5 MCP servers около 55K tokens; Tool Search около 8.7K tokens and 85% reduction Tool search нужен, когда tool definitions начинают съедать context.
Anthropic Multi-Agent Research multi-agent systems около 15x tokens относительно chat; single agent около 4x Agentic retrieval должен быть budgeted.
Gemini media resolution Gemini 3 PDF medium 560 tokens/page; image high 1120; video high 280/frame Visual context has real token geometry.
VisRAG 25-39% end-to-end gain над text-based RAG Parsing/OCR loss measurable.
ViDoRe V3 26,000 pages, 3,099 queries, 6 languages Enterprise document retrieval нужен оценивать на page-level evidence, not only chunks.
MMDocIR VLM-text примерно 1.5x OCR-text for tables and 3.8x for figures OCR loses multimodal signal before retrieval.
From BM25 to Corrective RAG hybrid + neural rerank: Recall@5 = 0.816, MRR@3 = 0.605 Mixed text/table QA needs hybrid and reranking.

Приложение B: vendor surfaces

Surface OpenAI Anthropic Google / Gemini
Web retrieval Web search, deep research Web search with filtering Google Search grounding
Private retrieval File search over vector stores Files API, search result blocks, citations Vertex AI Search, File Search API preview, RAG Engine
Tool retrieval Tool search, MCP Tool Search Tool, deferred loading Function calling and platform tool surfaces
Citations URL and file citations Search result blocks, document/page/character citations Grounding metadata and source links
Multimodal docs Text/images, file/image analysis, cookbook patterns PDFs/images/files plus citations Native PDF/document understanding, media resolution
Agentic research Deep research, background mode, MCP search/fetch Multi-agent research system Deep Research Agent / grounding surfaces

Писать надо асимметрично. У Google публично сильнее раскрыт multimodal embedding/grounding layer. У Anthropic сильнее раскрыты context engineering и tool ergonomics. У OpenAI сильнее упакован unified agentic runtime через Responses/deep research surfaces.

Приложение C: эксперименты перед production rollout

Priority Experiment Минимальный протокол
P0 Page-image vs OCR-text vs VLM-text vs hybrid ViDoRe V3 + MMDocIR + internal PDFs; Recall@K, nDCG@10, evidence-page recall, latency, storage
P0 Hybrid + reranker ablation BM25, dense, hybrid RRF, hybrid + cross-encoder; MRR@3, Recall@5, nDCG@10, cost
P0 Context packing ablation naive concat vs dedup/diversity/source-order/page-crops; correctness, faithfulness, citation precision
P0 Agentic vs non-agentic routing simple facts, targeted QA, open-ended research; tool calls, tokens, wall-clock, timeout
P0 Security harness prompt injection, ACL leakage, stale source handling, citation mismatch, tool result injection
P1 Long context vs retrieval routing full-document, retrieved, hybrid; cost, latency, faithfulness
P1 Visual reranker vs textual reranker same candidate pool, compare text reranker and VLM reranker

Без этих ablations статья остается strong engineering synthesis. С ними она превращается в архитектурную записку, по которой можно менять production pipeline.

Приложение D: failure modes

Failure mode Симптом Митигировать
OCR потерял важный сигнал Модель не видит table/legend/caption visual page index, region crops, VLM rerank
Visual retriever нашел похожую страницу, но не тот смысл Похожий chart, другой entity/date metadata filters, text+visual fusion
Dense retriever пропустил exact ID Error code/order ID не найден BM25/exact index
Reranker выбрал вторичный источник Blog/SEO page выше official doc source authority features
Context packing выкинул главный evidence correct doc retrieved, wrong answer generated packing eval, evidence ablation
Citation mismatch claim cites source outside context citation contract hard failure
Stale index ответ по старой версии versioning, freshness routing
ACL leakage evidence из чужого tenant pre-retrieval ACL filtering
Prompt injection from source модель следует instructions из PDF/web page source sandboxing, tool-call validation
Agentic loop burns budget много search/fetch без новых facts budget controller, early stopping

Приложение E: источники

OpenAI

Anthropic

Google / Gemini

Research

FAQ

Что такое мультимодальный поиск для LLM?

Это слой выбора evidence перед генерацией, который ищет и упаковывает не только текст, но и PDF-страницы, изображения, таблицы, графики, screenshots, video/audio segments и structured records. Его задача - дать модели минимальный, релевантный и проверяемый context pack.

Чем multimodal retrieval отличается от обычного RAG?

Обычный RAG часто сводят к text chunks и vector search. Multimodal retrieval работает с несколькими modalities, несколькими индексами, visual/page embeddings, crops, table structures, keyframes, OCR, metadata, ACL, reranking и context packing.

Почему retrieval не является памятью LLM?

Memory - persistent state. Retrieval - runtime selection external evidence. Модель может иметь memory и одновременно использовать retrieval, но это разные механизмы.

Почему vector search top-k недостаточно?

Dense similarity не гарантирует полезность для ответа. Он плохо ловит exact IDs, numbers, table semantics, source authority, freshness, ACL и visual layout. Production pipeline требует hybrid search, reranking, context packing и eval.

Заменяет ли long context retrieval?

Нет. Long context полезен для synthesis и small corpus, но retrieval нужен для selection, freshness, ACL, cost, latency, citations и observability.

Где нужен visual document retrieval?

В PDF, сканах, презентациях, financial reports, scientific papers, contracts with tables, UI screenshots, diagrams, charts, forms и product images - везде, где смысл лежит в layout или visual structure, а не только в extracted text.

Какие метрики нужны для оценки multimodal retrieval?

Минимум: Recall@K, MRR, nDCG@10, evidence page recall, visual region recall, answer correctness, faithfulness, groundedness, citation precision/recall, unsupported claim rate, latency, token usage, cost и security evals.

Когда нужен agentic retrieval?

Agentic retrieval нужен для open-ended research, multi-hop investigation и breadth-first задач, где стратегия поиска неизвестна заранее. Для simple fact lookup и targeted document QA чаще достаточно hybrid search, reranking и citation-aware context packing.