π§ 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-large | 3072 | 8191 | Π’ΠΎΠΏ ΠΏΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ |
| OpenAI text-embedding-3-small | 1536 | 8191 | ΠΠ°Π»Π°Π½Ρ |
| BGE-large (open-source) | 1024 | 512 | ΠΡΡΡΠΈΠΉ open-source |
| E5-large-v2 | 1024 | 512 | Microsoft |
| Cohere embed-v3 | 1024 | 512 | ΠΡΠ»ΡΡlingual |
| GLM Embedding-3 | 2048 | 8192 | Zhipu |
Π§ΡΠΎ Π²Π°ΠΆΠ½ΠΎ:
MTEB benchmarkβ ΡΠ΅ΠΉΡΠΈΠ½Π³ embedding ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ- Π Π°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΏΠ°ΠΌΡΡΡ
- Multilingual: Π½Π΅ Π²ΡΠ΅ embeddings Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΡΡΠΊΠΈΠΌ
πΉ Vector Stores (Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°)
| Store | Type | ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ |
|---|---|---|
| Qdrant | Dedicated | Production, scale, filtering |
| Pinecone | Managed SaaS | ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ, no ops |
| Weaviate | Dedicated | Hybrid (vector + keyword) |
| Milvus | Dedicated | Massive scale (billions) |
| pgvector | PostgreSQL ext | ΠΡΠ»ΠΈ ΡΠΆΠ΅ Π΅ΡΡΡ Postgres |
| Chroma | Embedded | Prototyping, local |
| FAISS | Library | In-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