RAG 核心技术与优化策略
RAG(Retrieval-Augmented Generation)已成为企业 AI 应用落地的标配技术。它能够有效解决大模型知识滞后、幻觉、无法访问私有数据等问题。
本文从原理、技术栈、实现、优化四个维度,带你彻底掌握 RAG 开发。
一、RAG 为什么必须学?
传统大模型问答依赖“预训练知识”,但现实问题是:
- 企业知识不断更新
- 内部数据非常庞大
- 大模型不会“访问你的数据库”
- 回答容易幻觉
RAG 解决的就是这个问题:
让大模型使用“外部知识库”作答,而不是依赖训练数据。

二、RAG 核心流程(五步法)
- 文档加载(PDF/Word/Markdown)
- 文档拆分(Chunk)
- 向量化(Embedding)
- 向量检索(Top-k)
- 生成回答(LLM)
三、技术栈选型
1. 文档加载
- LangChain Document Loaders
- Unstructured(复杂PDF解析)
2. 文本拆分
- RecursiveCharacterTextSplitter(推荐)
- 按语义拆分 > 按固定长度拆分
3. Embedding 模型
- OpenAIEmbeddings(最快)
- BGE / m3e(中文友好)
- Sentence-BERT(开源、本地部署)
4. 向量数据库
- Chroma(轻量)
- Pinecone(云服务)
- Milvus(大规模)
- Redis(向量+缓存)
5. 大模型
- GPT-3.5/4
- 通义千问
- Llama 2(本地)
四、实战代码(可直接运行)
python
loader = PyPDFLoader("company.pdf")
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
chunks = text_splitter.split_documents(docs)
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(chunks, embeddings)
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
chain_type="stuff",
retriever=db.as_retriever(k=3)
)
qa.invoke("公司2026年战略是什么?")