RAG и context на собеседовании AI PM
Зачем RAG на собесе AI PM
RAG (Retrieval-Augmented Generation) — стандарт для LLM-фич, где модель должна знать про специфические данные (документы компании, knowledge base, продуктовый каталог). Без RAG LLM знает только то, что было в training data — это устарело и не специфично.
На собесе AI PM RAG — частая тема. Кейс: «спроектируй AI-помощник, который знает про наш продукт».
Слабый ответ — «fine-tune LLM на наших данных». Сильный — про embedding + vector store + retrieval + LLM generation.
Как работает RAG
User query → embed query → search vector store → retrieve top-K chunks →
inject в prompt → LLM generates answerПреимущества:
- Свежие данные (update vector store не fine-tune)
- Источники цитируются (transparency)
- Стоит дешевле fine-tuning
- Reduces hallucinations
Минусы:
- Retrieval quality критично
- Latency + cost (extra steps)
- Chunking complexity
Embeddings
Что это: dense vectors, представляющие semantic meaning текста.
Модели:
- OpenAI text-embedding-3-large
- Cohere embed-v3
- BGE / E5 (open-source)
- Sentence-Transformers
- В РФ: YandexGPT / GigaChat embeddings
Размер: 384, 768, 1024, 1536 dim. Larger = более expressive, но дороже.
Vector stores
Хранят embeddings + metadata, делают similarity search.
Open-source:
- Chroma — local, простой, для prototyping
- Qdrant — Rust, scale, popular в РФ
- Weaviate — Go, GraphQL API
- pgvector — PostgreSQL extension, для small data
Managed:
- Pinecone — managed, simple
- Weaviate Cloud
- В РФ: in-house на Qdrant / pgvector
Search:
- Cosine similarity, dot product, Euclidean
- Indexes: HNSW (default), IVF для huge data
Chunking
Документы разбивают на chunks для embeddings.
Стратегии:
- Fixed size: 500-1000 токенов. Простой.
- Sentence-based: chunks по предложениям.
- Recursive: разбиваем по headers → paragraphs → sentences.
- Semantic chunking: ML определяет boundaries.
Overlap: 10-20% — preserves context на границах.
Trade-offs:
- Small chunks → точнее retrieval, но missing context
- Large chunks → больше context, но noise
Retrieval strategies
Naive: top-K nearest по cosine. Простой baseline.
Re-ranking:
- Stage 1: vector search retrieves 50 candidates
- Stage 2: cross-encoder re-ranks → top 5
- Cohere Rerank, BAAI re-rankers
Hybrid search: combine vector + keyword (BM25). Лучше для exact terms.
Query rewriting:
- LLM rephrases user query → better embedding
- HyDE (Hypothetical Doc Embeddings) — LLM генерирует hypothetical answer, embeds его
Multi-step:
- LLM decides, что искать
- Agentic retrieval
Prompt structure для RAG
[System] Ты — помощник, отвечающий на основе документов.
Если в документах нет ответа — скажи «не знаю».
[Context]
Документ 1: <chunk_1>
Документ 2: <chunk_2>
Документ 3: <chunk_3>
[User] <user_query>Citations: включай документ IDs в output → frontend показывает источники.
Evaluation RAG
Retrieval metrics:
- Hit@K — есть ли правильный chunk в top-K
- MRR (Mean Reciprocal Rank) — на какой позиции correct
- NDCG — для ranking quality
Generation metrics:
- Faithfulness — output grounded в context?
- Answer relevance — output adressирует question?
- Hallucination rate
Tools: Ragas, TruLens, LlamaIndex evaluators.
Cost и latency
RAG adds:
- Embedding cost (small per query)
- Vector store query latency (10-50ms)
- Extra LLM tokens (context inclusion → больше токенов)
Optimization:
- Cache embeddings для repeat queries
- Smaller embedding model для retrieval, larger LLM для generation
- Streaming generation (UX)
Типичные кейсы
«Спроектируй AI-помощник для документации»
- Source: документы (Notion / Confluence).
- Chunking: recursive по headers, 800 tokens + 100 overlap.
- Embeddings: text-embedding-3-large.
- Vector store: Qdrant.
- Retrieval: top 5 cosine + re-rank.
- Generation: GPT-4 с citations.
- Eval: Ragas faithfulness + answer relevance.
«RAG или fine-tuning?»
RAG: для свежих / specific фактов, citations. Fine-tune: для consistent style / format / behavior.
«Hallucinations в RAG?»
Reduce, но не eliminate. Mitigation: strict system prompt («только из context»), citations, output validation.
«Vector store на 1 миллион docs — какой выбрать?»
Qdrant или Pinecone (managed). pgvector — для маленьких; на 1M+ — слабо.
Частые ошибки
- Fine-tune вместо RAG. Дороже, без citations, не updateable.
- Слишком большие chunks. Retrieval noise.
- Без re-ranking. Top-K vector search часто miss.
- Без citations в UI. User не доверяет.
- Без eval pipeline. Не знаем, RAG лучше baseline или хуже.
FAQ
RAG обязателен для AI-фич?
Только если LLM нужно знать про specific data. Для general purpose (general advice) — нет.
Какой embedding model в РФ?
YandexGPT / GigaChat embeddings, BGE (open-source), Multilingual-E5.
Сколько токенов context в prompt?
Зависит от LLM context window. GPT-4 — до 128k, Claude — 200k. Для cost обычно ограничивают 2-5k.
Chunking ручной или автоматический?
Recursive с overlap — стандартный auto. Manual для very specific documents.
Multi-modal RAG (изображения)?
CLIP embeddings для images. Можно искать images по text query.