| **pgvector** | PG插件 | 已有PG的团队 | PostgreSQL扩展,事务一致性好 |
新手推荐路径
- **个人学习/原型验证**:Chroma(5分钟跑通)
- **生产环境/中小团队**:Qdrant 或 Milvus
- **已有PostgreSQL**:pgvector,少引入一个组件
- **不想运维**:Pinecone 云托管
---
四、实战:30分钟搭一个本地RAG
下面用 LangChain + Chroma + OpenAI 搭一个能问答你本地PDF的RAG。
环境准备
pip install langchain langchain-openai langchain-chroma pypdf
export OPENAI_API_KEY="sk-xxx"
核心代码(不到30行)
from langchain_community.document_loaders import PyPDFLoader
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_chroma import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
# 1. 加载PDF
loader = PyPDFLoader("my_document.pdf")
docs = loader.load()
# 2. 分块
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# 3. 向量化并存入Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")
# 4. 构建QA链
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(search_kwargs={"k": 4}),
return_source_documents=True
)
# 5. 提问
result = qa.invoke({"query": "这份文档的核心结论是什么?"})
print(result["result"])
跑完这段代码,你就有了一个能基于自己PDF回答问题的AI助手。
---
五、RAG的5个常见坑与优化技巧
很多人跑通Demo后发现"实际效果很差",通常是以下问题:
1. 分块策略不合理
- ❌ 按固定字符数切,把一段话切成两半
- ✅ 按语义切(段落/标题/句子边界),保留上下文
2. 检索质量差
- **混合检索**:向量检索 + BM25关键词检索,取并集再重排
- **重排序(Rerank)**:用Cohere Rerank、BGE Reranker对Top-K结果二次打分
- **查询改写**:用LLM把用户模糊问题改写成更精准的检索Query
3. 上下文塞太多/太少
- Top-K不是越大越好,太多会引入噪声,太少会漏信息
- 通常K=4~8是个不错的起点
4. 没有元数据过滤
给每个chunk加上元数据(来源文件、章节、日期、作者),检索时先过滤再向量搜索,能大幅提升准确率。
5. 没有评估体系
用 RAGAS 或 LangSmith 建立评估指标:
- **Faithfulness**:答案是否忠于检索到的内容(不瞎编)
- **Answer Relevance**:答案是否切题
- **Context Precision**:检索的内容是否真的相关
没有评估 = 盲调参数。
---
六、进阶:Agent + RAG = 知识型AI Agent
单纯的RAG是"一问一答",加上Agent能力后可以更强大:
- **多轮对话**:Agent记住上下文,支持追问
- **工具调用**:Agent可以调用搜索引擎、数据库、API,RAG只是其中一个工具
- **自我反思**:Agent发现检索结果不够,会自动改写Query重新检索
- **多知识库路由**:根据问题类型自动选择查哪个知识库
典型的架构:
用户问题
↓
Agent(推理 + 规划)
↓ 选择工具
[向量库A] [向量库B] [Web搜索] [SQL数据库]
↓
汇总结果 → 生成答案
这就是为什么业内说"RAG是Agent的标配组件"——没有RAG的Agent,就像一个没有记忆和知识库的顾问,只能靠通用常识说话。
---
七、总结:RAG的核心价值
- **让大模型"懂你"**——接入私有数据,回答专属问题
- **成本低、见效快**——不需要训练,几天就能上线
- **可解释、可追溯**——答案带引用来源,不是黑盒
4. 易更新——文档变了,重新向量化即可,无需重训模型
RAG不是万能药,但在"让AI基于私有数据回答问题"这个场景下,它是目前工程上最成熟、ROI最高的方案。
---
🎁 福利时间
想要完整的RAG实战教程(含本地部署代码、向量数据库对比实验、生产环境优化清单)?
👉 回复【RAG】,立即获取:
- 📦 《RAG从入门到生产》完整代码仓库
- 📊 5大向量数据库实测对比报告
- ✅ 生产环境RAG优化Checklist
- 🎥 30分钟视频教程(手把手搭建)
---
🌟 想系统学习AI Agent开发?
加入我的知识星球「合尘猫AI实战」,和500+开发者一起:
- 📚 每周更新AI Agent/RAG/多模态实战案例
- 💬 一对一答疑,帮你解决具体项目问题
- 🔧 共享代码库、Prompt模板、部署脚本
- 🎯 从入门到接单,完整学习路径
扫码/搜索加入,新人限时优惠中!
---
*上一篇:[多Agent协作框架对比](./04-multi-agent-frameworks.md) | 下一篇:[AI Agent的商业化落地](./08-monetization.md)*
🎁 福利时间
回复关键词 【RAG】 获取本文配套资料包
加入知识星球,获取更多AI实战内容
立即加入 →