面向人群:AI应用开发工程师 / 后端工程师 / 想落地大模型的同学
技术栈:Python + FastAPI + 向量库 + LLM


一、什么是RAG

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识库与大语言模型(LLM)结合的技术。

核心思想:
让模型在回答前,先查资料,再回答


二、为什么需要RAG

LLM存在问题:

  • 幻觉(胡编)
  • 无法访问私有数据
  • 知识过时

RAG解决:

  • 引入实时知识
  • 提高准确性
  • 可控输出

三、RAG整体流程图

文档 → 预处理 → 切分 → 向量化 → 入库

用户问题 → 改写 → 向量化 → 检索 → Rerank

Prompt构造

LLM生成

后处理


四、完整流程详解(生产级)

1. 文档预处理

  • 去HTML标签
  • 去噪声字符
  • 标准化格式

2. 文本切分(Chunking)

关键策略:

  • 按语义切分
  • overlap重叠
  • 标题增强

3. 向量化(Embedding)

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")
embedding = model.encode("血红蛋白 135g/L")

4. 向量存储(Vector Store)

常见方案:

  • FAISS
  • Milvus
  • Elasticsearch

5. Query改写(Rewrite)

示例:
原始:有没有问题
改写:该患者是否存在血液指标异常


6. 多路检索(Retrieval)

  • 向量检索
  • BM25关键词检索
  • Hybrid混合检索

7. 重排序(Rerank)

  • 使用cross-encoder提升精度

8. Prompt构造

示例:
已知信息:
{context}

问题:
{question}

要求:
仅基于已知信息回答


9. LLM生成

控制参数:

  • temperature
  • max_tokens

10. 后处理(Post-processing)

  • JSON结构化
  • 字段提取
  • 校验

11. 缓存与性能优化

  • embedding缓存
  • query缓存
  • 结果缓存

12. 评估与反馈

  • Recall
  • Precision
  • 人工评估

五、完整流程总结

文档处理 → chunk → embedding → 入库

Query → rewrite → embedding

retrieval → rerank

prompt → LLM

post-process → cache → eval


六、代码示例(简化版)

def rag_pipeline(query):
    q_emb = embed(query)
    docs = vector_db.search(q_emb, top_k=10)
    top_docs = rerank(query, docs)[:3]
    context = "\n".join(top_docs)
    prompt = f"基于以下内容回答:{context}\n问题:{query}"
    answer = llm(prompt)
    return answer

七、进阶方向(高薪关键)

  • RAG + Agent
  • 推理优化(batch / KV cache)
  • vLLM部署
  • 高并发架构

八、总结

RAG本质:
检索 + 理解 + 生成 + 优化

一句话总结:
让模型“先查资料再说话”

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐