面试表达
面试时怎么讲
一句话:我围绕「RAG 工程化优化」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
从零搭建到可评估上线的 RAG 工程课:检索链路、重排、查询改写、观测与优化闭环。
本地学习进度
只保存在当前浏览器,不上传服务器。
学习产出
基础能力,P0。阅读时尽量把知识点转成可演示项目、面试回答和简历证据。
能回答
课程目标(14 天,3h+ 模式) / Day0:准备实验环境 / 14 天带练路径
能交付
完成练习与自测,留下可复盘的代码、截图或 README
下一步
先读手把手版,再回到正文补架构和取舍
面试表达
一句话:我围绕「RAG 工程化优化」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
简历表达
围绕 RAG 场景,完成「从零搭建到可评估上线的 RAG 工程课:检索链路、重排、查询改写、观测与优化闭环。」相关能力建设,沉淀可复用工程方案、测试样本和面试表达材料。
你要做到的不只是“接个向量库”,而是完整工程能力:
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install langchain langchain-community chromadb sentence-transformers ragasUser Query
-> Query Understanding
-> Retrieval (Vector + Keyword)
-> Rerank
-> Context Assembly
-> LLM Generate (Cited Answer)
-> Post-check (Consistency / Safety)notes/rag/dayX.mddemos/rag/dayX/eval/rag_baseline.json(持续更新)| 级别 | 资源 |
|---|---|
| A | LangChain RAG 教程 |
| A | Ragas 文档 |
| B | RAG Survey(按年度更新) |
业界共识:RAG 效果天花板 70% 在“数据摄取和治理”,不在向量库。会做这一段的人,工资直接高一档。
原始文件 (PDF/DOCX/HTML/图/表格)
→ 解析(unstructured / pdfplumber / marker / Azure DI)
→ 结构恢复(标题层级 / 表格 / 图片 OCR / 页眉页脚删除)
→ 段落去重,主题聚类
→ 分块(按语义段落 / 按标题层级 / 滑窗 + overlap)
→ 富化 metadata(source, title, section_path, page, tenant, acl, updated_at, lang)
→ 去重(simhash / minhash)
→ Embedding + 写入向量库 + 写入关键词索引(BM25 / OpenSearch)
→ 写入事实图(可选:GraphRAG)| 文件 | 推荐工具 | 难点 |
|---|---|---|
| 纯文本 PDF | pdfplumber, pypdfium2 | 分栏、页眉页脚 |
| 扫描件 PDF | marker / Azure Document Intelligence / PaddleOCR | 表格识别、公式 |
| 表格 | camelot, Unstructured Table Transformer | 合并单元格 |
| 图片 | GPT-4V / Qwen-VL caption | caption 成本与精度 |
| HTML | readability-lxml + trafilatura | 广告 / nav |
| Office | unstructured, LibreOffice headless | 嵌入对象 |
{
"doc_id": "kb-2026-001",
"source": "confluence://space/AI/page/1234",
"title": "向量库选型指南",
"section_path": ["架构","存储层"],
"page": 12,
"chunk_type": "table|text|figure-caption",
"tenant_id": "acme",
"acl": ["role:eng", "group:core"],
"updated_at": "2026-04-11",
"lang": "zh",
"checksum": "sha256:...",
"source_url": "https://..."
}where={"tenant_id": ctx.tid, "acl": {"$in": ctx.scopes}},绝不由 LLM 决定。checksum diff 决定是否重新生成 embedding。tombstone: true 检索时过滤)。问答 bad case
→ 标注故障层(检索 / 重排 / 生成)
→ 检索层出问题
→ 空召回 → 查索引是否有该文档
→ 无 → 摄取管道改解析 / 改分块
→ 有 → 改 embedding 模型 / 混合检索 / query rewrite
→ 噪声高 → 加 rerank
→ 回归入 eval 集version / effective_date;检索时强制 latest。pipelines/ingest.py(解析 → chunk → enrich → dedup → index)docs/metadata-schema.mdeval/retrieval-set.jsonl(金标文档映射)docs/rag-refresh-playbook.mdvector-databases、llmops-observability-evaluation、langchain-langgraph。