RAG到底是什么?从文档切分、Embedding到向量检索完整解析
时间:2026-10-30 来源:华清远见
在ChatGPT掀起的大模型浪潮中,RAG(Retrieval-Augmented Generation,检索增强生成)是最受关注的技术之一。它让大模型能够「外挂」外部知识库,回答训练数据之外的私有数据或实时信息问题。本文从文档切分、Embedding到向量检索,拆解RAG核心原理,并给出可运行的Python代码。
一、文档切分(Chunking):把大象放进冰箱的第一步
大模型上下文窗口有限,长文本会稀释关键信息的检索精度。RAG第一步是把长文档切成小片段(Chunk)。切分核心考量:chunk_size(通常300~1000 token)、chunk_overlap(避免语义断裂)、以及切分策略(段落/句子/递归字符)。

代码示例:使用LangChain切分文档

二、Embedding(向量化):把文字变成数字
切分后的文本仍是自然语言,无法直接计算语义相似度。Embedding模型把每个片段映射为高维稠密向量(768维或1536维),语义相近的文本在向量空间中距离更近。常用模型有OpenAI text-embedding-3-small、BGE、sentence-transformers等。

代码示例:将文本片段向量化

三、向量检索:大海捞针的艺术
用户提问时,RAG把问题同样向量化,然后在向量数据库中检索最相似的Top-K个文档片段。轻量场景可用ChromaDB或FAISS,生产环境用Milvus、Pinecone等。
流程:Query → Embedding → 向量检索 → 召回Top-K → 拼接Prompt → LLM生成回答。检索质量决定RAG效果上限,相似度度量(余弦、欧氏、点积)和K值选择至关重要。

代码示例:向量检索与问答

四、总结
RAG是一套「检索 + 增强 + 生成」的流水线:文档切分决定检索粒度,Embedding决定语义表征质量,向量检索决定召回精度。掌握这三步,就能快速搭建基于私有知识库的智能问答系统。

