ЁЯУЦ рдзрдбрд╛ 07 тАФ RAG рдЪреА рдЬреЛрдбрдгреА: рдкреБрд╕реНрддрдХ рдЙрдШрдбреВрди рдкрд░реАрдХреНрд╖рд╛, рдЖрдкрд▓реНрдпрд╛ page-finder рд╕рд╣
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 07 ┬╖ рдорд╛рдЧреЗ: lesson-06-chunking-metadata ┬╖ рдкреБрдвреЗ: lesson-08-landscape
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ06, рдЖрдгрд┐ рдореЛрдмрджрд▓рд╛: vector DB рд▓рд╛ RAG pipeline рдордзреНрдпреЗ рдЬреЛрдбрдгреЗ (AI рд╢рд╛рд│рд╛ L10 рдЪреА open-book рдкрд░реАрдХреНрд╖рд╛) тАФ рдЬрд┐рдереЗ рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЯрдкреНрдкрд╛ рддреБрдореНрд╣реА рдмрдирд╡рд▓реЗрд▓реА рдХрд┐рдВрд╡рд╛ рд╡рд╛рдЪреВ рд╢рдХрдгрд╛рд░реА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
AI рд╢рд╛рд│реЗрдЪреА open-book рдкрд░реАрдХреНрд╖рд╛ рдЖрдард╡рд╛ ЁЯУЦ: рдпреЛрдЧреНрдп рдкрд╛рдиреЗ рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдиреАрдЪреНрдпрд╛ рдмрд╛рдХрд╛рд╡рд░ рдареЗрд╡рд╛ рдЖрдгрд┐ рдЙрддреНрддрд░реЗ grounded рдЖрдгрд┐ рдкреБрд░рд╛рд╡реНрдпрд╛рд╕рд╣ рд╕рд╛рдВрдЧрддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреА рд╣реЛрддрд╛рдд. рдХрдореА рдкрдбрдгрд╛рд░реА рдпрдВрддреНрд░рдгрд╛ рд╣реЛрддреА page-finder тАФ рдЖрдгрд┐ рдЖрддрд╛ рддреЛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЖрд╣реЗ:
Index рдЪреНрдпрд╛ рд╡реЗрд│реА (рдПрдХрджрд╛, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ doc рдмрджрд▓рд▓реНрдпрд╛рд╡рд░):
- тЬВя╕П handbook рдЪреЗ cards рдордзреНрдпреЗ рддреБрдХрдбреЗ рдХрд░рд╛ (рдзрдбрд╛ 06),
- ЁЯФв рдкреНрд░рддреНрдпреЗрдХ card рд▓рд╛ рдЬрд╛рдЧрд╛ рджреНрдпрд╛ (
embedтАФ рдзрдбрд╛ 02; рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд: рдПрдХ model), - ЁЯЧДя╕П рдЬрд╛рдЧрд╛ + text + stickers рд╕рд╛рдард╡рд╛ (
db.addтАФ рдзрдбрд╛ 05).
рдкреНрд░рд╢реНрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА (рдкреНрд░рддреНрдпреЗрдХ query рд▓рд╛):
4. ЁЯФв рдкреНрд░рд╢реНрдирд╛рд▓рд╛ рддреНрдпрд╛рдЪ embedder рдиреЗ рдЬрд╛рдЧрд╛ рджреНрдпрд╛ (рддреНрдпрд╛рдЪ model рдЪрд╛ рдирд┐рдпрдо!),
5. ЁЯПГ рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреА cards (db.search, рдХрджрд╛рдЪрд┐рдд room="3A" рдиреЗ filter рдХреЗрд▓реЗрд▓реА тАФ
рдзрдбреЗ 03/04/06),
6. ЁЯкС рд╕рд░реНрд╡реЛрддреНрддрдо cards model рдЪреНрдпрд╛ рдмрд╛рдХрд╛рд╡рд░ рдареЗрд╡рд╛, рд╕реВрдЪрдиреЗрд╕рд╣
"рдлрдХреНрдд рдпрд╛рдВрд╡рд░реВрдирдЪ рдЙрддреНрддрд░ рджреНрдпрд╛, card ids рд╕рд╛рдВрдЧрд╛" (AI L08),
7. тЬЕ grounded рдЙрддреНрддрд░, source stickers рдордзреВрди рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рдкрд╛рд╡рддреНрдпрд╛рдВрд╕рд╣. ЁЯз╛
рддреНрдпрд╛ рдЖрдХреГрддреАрддрд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдг рдЖрддрд╛ рддреБрдореНрд╣реА рд╡рд╛рдЪрд▓реЗрд▓реА code рдЪреА рдУрд│ рдЖрд╣реЗ. "рдЬрд╛рджреБрдИ AI search product" рдореНрд╣рдгрдЬреЗ рд╕рд╛рдд рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдкрд╛рдпрд▒реНрдпрд╛.
рдирд╛рд╡рд╛рдиреЗ рдорд╛рд╣реАрдд рдЕрд╕рд╛рд╡реНрдпрд╛рдд рдЕрд╢рд╛ рджреЛрди рдкреНрд░реМрдв рд╕реБрдзрд╛рд░рдгрд╛: reranking (рд╕реНрд╡рд╕реНрддрд╛рдд top-50 retrieve рдХрд░рд╛, рдордЧ рдПрдХ рд╣реБрд╢рд╛рд░ model рдкреБрдиреНрд╣рд╛ рдЧреБрдг рджреЗрдКрди рдиреЗрдордХреЗ top-5 рдмрдирд╡рддреЗ тАФ рджреБрд╕рд░реА, рдЬрд╛рд╕реНрдд рдЪреЛрдЦрдВрджрд│ рдЧреНрд░рдВрдердкрд╛рд▓) рдЖрдгрд┐ long-context рдЪрд╛ рдкреНрд░рд╢реНрди ("1M-token рдЪреЗ рдмрд╛рдХ рдЕрд╕рддрд╛рдирд╛ retrieve рддрд░реА рдХрд╢рд╛рд▓рд╛?" тАФ рдЦрд░реНрдЪ, latency, рдЖрдгрд┐ lost-in-the-middle рд╕рд╛рдВрдЧрддрд╛рдд: retrieval рдЯрд┐рдХрддреЗ; рдмрд╛рдХ рдореЛрдард╛ рдЭрд╛рд▓рд╛, рдЕрдорд░реНрдпрд╛рдж рдирд╛рд╣реА).
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
subgraph idx["ЁЯЧВя╕П index time - once"]
d["ЁЯУЪ docs"] --> cut["тЬВя╕П chunk"] --> em1["ЁЯФв embed"] --> store["ЁЯЧДя╕П MiniVectorDB.add<br/>+ stickers ЁЯП╖я╕П"]
end
subgraph qt["тЭУ question time - every query"]
q["question"] --> em2["ЁЯФв embed - SAME model"] --> s["ЁЯПГ db.search k=4<br/>(+ filters)"]
s --> desk["ЁЯкС desk: cards + 'answer ONLY<br/>from these, cite ids'"]
desk --> a["тЬЕ grounded answer ЁЯз╛"]
end
store -.-> s
rr["ЁЯзР optional: rerank top-50 тЖТ top-5"] -.-> s
тЭУ рдХрд╛рдп
- рджреЛрди рдШрдбреНрдпрд╛рд│реЗ: index time (batch, рдмрджрд▓ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ тАФ ArgoCD рдЪреА рд╕рд╣рдЬрдкреНрд░рд╡реГрддреНрддреА: рдЖрдЬ рд░рд╛рддреНрд░реА re-index, рдЙрджреНрдпрд╛ "рдорд╛рд╣реАрдд") рд╡рд┐рд░реБрджреНрдз query time (milliseconds, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢реНрдирд╛рд▓рд╛). рд╡реЗрдЧрд│реЗ scaling, рд╡реЗрдЧрд│реА рдЕрдкрдпрд╢реЗ.
- рдЕрдкрдпрд╢ рдХреЛрдгрд╛рдЪреЗ рддреЗ рдард░рд╡рдгреЗ (debugging рдЪреА рдХрд╡рд╛рдпрдд): рдЙрддреНрддрд░ рд╡рд╛рдИрдЯ? model рд▓рд╛ рджреЛрд╖ рджреЗрдгреНрдпрд╛рдЖрдзреА (generation bug тЖТ AI L09) рдЖрдзреА рдХреЛрдгрддреА cards рдкрд░рдд рдЖрд▓реА рддреЗ рддрдкрд╛рд╕рд╛ (retrieval bug тЖТ рдзрдбреЗ 02/06). Cards print рдХрд░рд╛. рдиреЗрд╣рдореА cards print рдХрд░рд╛.
- k рд╣рд╛ рдПрдХ рдиреЙрдм рдЖрд╣реЗ: рдЦреВрдк рдХрдореА cards тЖТ рд╕рдВрджрд░реНрдн рдХрдореА рдкрдбрддреЛ; рдЦреВрдк рдЬрд╛рд╕реНрдд тЖТ рдмрд╛рдХрд╛рд╡рд░ рдкреВрд░ рдпреЗрддреЛ рдЖрдгрд┐ рдордзрд▓рд╛ рднрд╛рдЧ рд╡рд░рд╡рд░ рд╡рд╛рдЪрд▓рд╛ рдЬрд╛рддреЛ. 3тАУ8 рд╣реА рдиреЗрд╣рдореАрдЪреА рдкрдЯреНрдЯреА; rerankers рдореБрд│реЗ k рдЫреЛрдЯрд╛ рдЖрдгрд┐ рдиреЗрдордХрд╛ рдареЗрд╡рддрд╛ рдпреЗрддреЛ.
- Agent рд╕рд╛рд░рдЦреЗ eval рдХрд░рд╛ (Agents L06): golden questions тЖТ рдпреЛрдЧреНрдп card ids рдкрд░рдд рдпреЗрддрд╛рдд рд╣реЗ assert рдХрд░рд╛ (retrieval recall) рдЖрдгрд┐ рдЙрддреНрддрд░ рддреНрдпрд╛рдВрдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реЗрд╣реА. рджреЛрди рдЖрдХрдбреЗ, рдкреНрд░рддреНрдпреЗрдХ chunking/embedder рдмрджрд▓рд╛рд╡рд░ рдЪрд╛рд▓рд╡рд▓реЗрд▓реЗ.
ЁЯдФ рдХрд╛
RAG рд╣реА industry рдордзреНрдпреЗ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдмрдирд╡рд▓реА рдЬрд╛рдгрд╛рд░реА AI system рдЖрд╣реЗ, рдЖрдгрд┐ рдпрд╛ рдзрдбреНрдпрд╛рдд рддреА blog рд╡рд░рдЪреА рдЖрдХреГрддреА рд░рд╛рд╣рдд рдирд╛рд╣реА: рдкреНрд░рддреНрдпреЗрдХ box рдпрд╛ repo рдордзрд▓рд╛ code рдЖрд╣реЗ. рдХрд╛рдорд╛рд╡рд░ рддреБрдордЪреА RAG рдЪреБрдХреАрдЪреЗ рд╡рд╛рдЧрд▓реА рддрд░ рддреБрдореНрд╣реА рддреА рдЯрдкреНрдкреНрдпрд╛рдЯрдкреНрдкреНрдпрд╛рдиреЗ debug рдХрд░рд╛рд▓ тАФ cards тЖТ рдмрд╛рдХ тЖТ рдЙрддреНрддрд░ тАФ рдкреБрдиреНрд╣рд╛ рдкреБрдиреНрд╣рд╛ prompt рдХрд░реВрди рдкреНрд░рд╛рд░реНрдердирд╛ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА. ЁЯЩП
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ тАФ рд╕рдВрдкреВрд░реНрдг pipeline рдПрдХрд╛ file рдордзреНрдпреЗ
python3 - <<'EOF'
import sys; sys.path.insert(0,'vectordb')
from vectordb import MiniVectorDB
db = MiniVectorDB()
for i,(t,meta) in enumerate([
("Library books must be returned within two weeks.", {"source":"handbook-p4"}),
("The picnic requires one pizza per three students, round up.", {"source":"handbook-p9"}),
("Class 3A has twelve students.", {"source":"roster-3A"}),
("Class 3B has eleven students.", {"source":"roster-3B"})]):
db.add(f"card-{i}", t, **meta)
q = "how many pizzas do we need for 3A and 3B together?"
cards = db.search(q, k=3)
print("ЁЯкС THE DESK (what you'd paste to the model):\n")
print(f"Answer ONLY from these cards, cite sources:\n")
for s,i,t,m in cards:
print(f" [{m['source']}] {t}")
print(f"\nQuestion: {q}")
print("\nтЖТ paste that block into ANY chatbot: grounded answer, real citations ЁЯз╛")
EOF
тПня╕П рдкреБрдвреЗ
рд╢реЗрд╡рдЯрдЪрд╛ рднрд╛рдЧ: рдкреНрд░рддреНрдпрдХреНрд╖ products тАФ pgvector, Pinecone, Chroma, FAISS рдЖрдгрд┐ рдордВрдбрд│реА тАФ рдЖрдгрд┐ bake-off рд╢рд┐рд╡рд╛рдп рдирд┐рд╡рдб рдХрд╢реА рдХрд░рд╛рдпрдЪреА: landscape.
git checkout lesson-08-landscape