一、问题场景
用户问:
👉 "帮我总结公司内部文档"
AI回答:
👉 "我无法访问该数据"
二、问题分析
大模型本质:
👉 离线训练 + 无法实时访问外部数据
所以:
- 不知道公司数据
- 不知道最新信息
三、解决方案
👉 RAG(Retrieval-Augmented Generation)
架构:
text
用户问题
↓
向量检索
↓
相关文档
↓
拼接Prompt
↓
模型生成答案
四、实操步骤
步骤1:文本切分(关键)
python
def split_text(text, chunk_size=200):
return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
步骤2:向量化
python
def embed(text):
# 实际用OpenAI / Gemini embedding
return [hash(text) % 1000]
步骤3:存储
python
db = []
def store(text):
vector = embed(text)
db.append({"text": text, "vector": vector})
步骤4:检索
python
def search(query):
q_vec = embed(query)
return db[:3]
步骤5:构建Prompt
python
def build_prompt(query, docs):
context = "\n".join([d["text"] for d in docs])
return f"""
参考资料:
{context}
问题:
{query}
"""
五、验证结果
- AI回答更精准
- 支持私有数据
六、踩坑记录
1️⃣ chunk过大 → 命中率低
2️⃣ embedding不一致 → 检索失败
3️⃣ 不做去重 → 噪音数据
七、总结
👉 RAG不是"外挂",而是AI系统核心能力
八、进阶优化
- 向量数据库(Milvus / FAISS)
- rerank模型
- 多轮检索
九、下一篇
👉 向量数据库选型深度分析