🧠 05. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΈ RAG

πŸ“Œ 1. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° внСшняя ΠΏΠ°ΠΌΡΡ‚ΡŒ LLM

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

RAG (Retrieval-Augmented Generation) β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° «поисковая систСма + LLMΒ»: Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² контСкст ΠΏΠ΅Ρ€Π΅Π΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π°.

LLM β€” stateless. Context window ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ (4K-1M tokens). Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ прилоТСния Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚:

  • Доступ ΠΊ знаниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…
  • Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ сСссиями
  • Поиск ΠΏΠΎ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ
  • ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ

RAG (Retrieval-Augmented Generation) = поисковая систСма + LLM.

πŸ“Œ 2. RAG Pipeline

INGEST:
  Document β†’ Chunk β†’ Embed β†’ Store in Vector DB

QUERY:
  User question β†’ Embed query β†’ Search Vector DB β†’ Top-K chunks β†’ Context β†’ LLM β†’ Answer
flowchart LR
    subgraph ingest["INGEST"]
        Doc["Document"] --> Chunk["Chunk"]
        Chunk --> Embed["Embed"]
        Embed --> VDB["Vector DB"]
    end
    subgraph query["QUERY"]
        Q["User question"] --> QEmbed["Embed query"]
        QEmbed --> Search["Search Vector DB"]
        Search --> TopK["Top-K chunks"]
        TopK --> Context["Context"]
        Context --> LLM["LLM"]
        LLM --> Answer["Answer"]
    end
    VDB --> Search

πŸ”Ή Chunking (Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹)

Sliding Window (ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ):

[chunk1: tokens 0-500] [overlap: 50]
         [chunk2: tokens 450-950] [overlap: 50]
                  [chunk3: tokens 900-1400]

Semantic Chunking (сСмантичСскоС Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅):

  • Π Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, Π° ΠΏΠΎ смыслу (Ρ‡Π΅Ρ€Π΅Π· embeddings similarity)
  • Π›ΡƒΡ‡ΡˆΠ΅ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ

Parent-Child (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ):

  • МалСнькиС chunks для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ поиска
  • Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ большой parent chunk для контСкста

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • Chunk size: 256-1024 tokens (512 β€” стандарт)
  • Overlap: 10-20% ΠΎΡ‚ chunk size

πŸ”Ή Embeddings (эмбСддинги)

ΠœΠΎΠ΄Π΅Π»ΡŒΠ Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
OpenAI text-embedding-3-large30728191Π’ΠΎΠΏ ΠΏΠΎ качСству
OpenAI text-embedding-3-small15368191Баланс
BGE-large (open-source)1024512Π›ΡƒΡ‡ΡˆΠΈΠΉ open-source
E5-large-v21024512Microsoft
Cohere embed-v31024512ΠœΡƒΠ»ΡŒΡ‚lingual
GLM Embedding-320488192Zhipu

Π§Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ:

  • MTEB benchmark β€” Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ embedding ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
  • Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ
  • Multilingual: Π½Π΅ всС embeddings Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с русским

πŸ”Ή Vector Stores (Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°)

StoreTypeКогда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
QdrantDedicatedProduction, scale, filtering
PineconeManaged SaaSБыстрый старт, no ops
WeaviateDedicatedHybrid (vector + keyword)
MilvusDedicatedMassive scale (billions)
pgvectorPostgreSQL extЕсли ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Postgres
ChromaEmbeddedPrototyping, local
FAISSLibraryIn-memory, research

πŸ”Ή Retrieval Strategies (стратСгии поиска)

На собСсСдовании

Production RAG ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Hybrid Search: dense (embeddings) + sparse (BM25) β†’ re-rank. Чистый dense retrieval ΠΏΠ»ΠΎΡ…ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ совпадСния (ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠ΄, IDs).

1. Dense Retrieval (стандартный RAG)

query embedding β†’ cosine similarity vs all chunks β†’ top-K

2. Sparse Retrieval (BM25 / keyword)

query β†’ TF-IDF / BM25 β†’ top-K

Π›ΡƒΡ‡ΡˆΠ΅ для Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… совпадСний (ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠ΄, IDs).

3. Hybrid Search (Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ поиск)

Dense results βˆͺ Sparse results β†’ re-rank β†’ top-K

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для production.

4. Re-ranking (ΠΏΠ΅Ρ€Π΅Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ПослС initial retrieval β†’ cross-encoder re-ranks top-K. МодСли: Cohere Rerank, BGE-Reranker, ColBERT.

⚠️ RAG Failure Modes (Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΠΎΡ‚ΠΊΠ°Π·Π° RAG)

1. β€œLost in the Middle” (потСря Π² сСрСдинС)

  • LLM ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² сСрСдинС context window
  • Fix: ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ самыС Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ chunks Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ†

2. Conflicting Information (противорСчивая информация)

  • Π”Π²Π° chunks с ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ
  • Fix: re-ranking, confidence scoring, source attribution

3. Stale Knowledge (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ знания)

  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ обновились, Π½ΠΎ embeddings Π½Π΅ пСрСсчитаны
  • Fix: incremental updates, timestamping

4. Chunk Boundaries (Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²)

  • ΠžΡ‚Π²Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅Π·Π°Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя chunks
  • Fix: overlap, parent-child chunking

πŸ“Œ 3. Advanced RAG (ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ RAG)

πŸ”Ή GraphRAG (Microsoft, 2024)

1. LLM ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ entities ΠΈ relationships ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
2. Бтроится knowledge graph
3. Community detection β†’ summary ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ community
4. Query β†’ ΠΈΡ‰Π΅ΠΌ ΠΏΠΎ Π³Ρ€Π°Ρ„Ρƒ, Π° Π½Π΅ ΠΏΠΎ chunks

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°: Π»ΡƒΡ‡ΡˆΠ΅ для вопросов β€œΠΊΠ°ΠΊ связано X с Y?” НСдостатки: Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ preprocessing, слоТнСС ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ.

πŸ”Ή Agentic RAG

ВмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ retrieve β†’ answer:
1. LLM Ρ€Π΅ΡˆΠ°Π΅Ρ‚: Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ поиск?
2. LLM Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ query (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСсколько)
3. LLM ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚: достаточно Π»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ?
4. Если Π½Π΅Ρ‚ β†’ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы
5. LLM synthesizes ΠΎΡ‚Π²Π΅Ρ‚

πŸ”Ή Self-RAG

  • LLM ΠΎΠ±ΡƒΡ‡Π΅Π½Π° Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ: Π½ΡƒΠΆΠ½Π° Π»ΠΈ retrieval
  • Если Π΄Π° β†’ retrieve β†’ assess β†’ accept/reject
  • Adaptive: Π½Π΅ всСгда Π½ΡƒΠΆΠ΅Π½ RAG

πŸ“Œ 4. Memory Π² Production Agents (ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² production)

πŸ”Ή Hermes Memory Architecture

MEMORY.md (memory)     ← Ρ„Π°ΠΊΡ‚Ρ‹, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, ΡƒΡ€ΠΎΠΊΠΈ
USER.md (user profile) ← прСдпочтСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
skills/                ← ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Π΅ знания (SKILL.md)
sessions/              ← эпизодичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ (transcripts)
  • Memory ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ turn, Π΄ΠΎ 2200/1375 символов
  • Session search: FTS5 (full-text search) ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ сСссиям
  • Skill loading: progressive disclosure (description β†’ SKILL.md β†’ references/)

πŸ”Ή MemGPT / Letta

  • OS-inspired memory hierarchy
  • Main context (RAM) β†’ external storage (disk)
  • LLM управляСт собствСнной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ)

πŸ”Ή LangChain Memory

  • ConversationBufferMemory: полная история
  • ConversationSummaryMemory: summary Ρ‡Π΅Ρ€Π΅Π· LLM
  • ConversationSummaryBufferMemory: Π³ΠΈΠ±Ρ€ΠΈΠ΄
  • VectorStoreRetrieverMemory: vector search ΠΏΠΎ истории

πŸ“Œ 5. Evaluation RAG (ΠΎΡ†Π΅Π½ΠΊΠ° RAG)

Π’Π°ΠΆΠ½ΠΎ

Π‘Π΅Π· ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Faithfulness ΠΈ Context Recall RAG Π² production слСпой: модСль ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π°Π»Π»ΡŽΡ†ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ… retrieved context ΠΈΠ»ΠΈ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

πŸ“Š Metrics (ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ)

Faithfulness (Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ): ΠΎΡ‚Π²Π΅Ρ‚ основан Π½Π° retrieved context? (Π½Π΅ hallucinated) Answer Relevance (Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Π°): ΠΎΡ‚Π²Π΅Ρ‚ относится ΠΊ вопросу? Context Precision (Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ контСкста): retrieved chunks Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ вопросу? Context Recall (ΠΏΠΎΠ»Π½ΠΎΡ‚Π° контСкста): вСсь Π½ΡƒΠΆΠ½Ρ‹ΠΉ контСкст Π½Π°ΠΉΠ΄Π΅Π½?

πŸ”Ή Frameworks (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ)

  • RAGAS: автоматичСская ΠΎΡ†Π΅Π½ΠΊΠ° RAG pipelines
  • TruLens: tracking + evaluation
  • LangSmith: LangChain’s observability + eval