什么是 RAG?#
RAG(Retrieval-Augmented Generation)通过将外部知识检索与大语言模型生成相结合,解决 LLM 的知识时效性和幻觉问题。
系统架构#
1
| 用户提问 → Query Embedding → 向量检索 → 上下文组装 → LLM 生成 → 回答
|
关键组件选型#
向量数据库#
| 数据库 | 特点 | 适用场景 |
|---|
| Milvus | 高性能、分布式 | 大规模生产环境 |
| Chroma | 轻量、易上手 | 原型开发 |
| Pinecone | 全托管 | 不想运维 |
文档切分策略#
1
2
3
4
5
6
7
8
| from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", "。", ",", " "]
)
chunks = splitter.split_documents(documents)
|
检索优化技巧#
- 混合检索:向量检索 + BM25 关键词检索
- Query 改写:用 LLM 扩展用户原始问题
- Re-ranking:用 Cross-Encoder 对召回结果重排序
RAG 是当前企业落地 LLM 最实用的模式,关键在于检索质量的优化。