RAG 系统入门
RAG(Retrieval-Augmented Generation)是让 AI 能够基于你的私有数据回答问题的关键技术。
#什么是 RAG?
LLM 的知识有截止日期,也不知道你的私有数据。RAG 的解决方案:
- 检索(Retrieval): 从知识库中找到相关文档
- 增强(Augmented): 将文档作为上下文
- 生成(Generation): AI 基于上下文生成回答
#RAG 架构
code用户问题 → 向量化 → 向量数据库检索 → 获取相关文档 → 构建 Prompt(问题 + 文档)→ LLM 生成回答
#核心组件
#1. 文档处理
pythonfrom langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) chunks = splitter.split_documents(documents)
#2. 向量化(Embedding)
pythonfrom openai import OpenAI client = OpenAI() response = client.embeddings.create( model="text-embedding-3-small", input="你的文本" ) embedding = response.data[0].embedding
#3. 向量数据库
常用选择:
- Pinecone: 托管服务,开箱即用
- Chroma: 开源,本地运行
- Weaviate: 功能丰富,支持多种搜索
#4. 检索和生成
python# 检索相关文档 docs = vector_store.similarity_search(query, k=3) # 构建 Prompt context = "\n".join([doc.page_content for doc in docs]) prompt = f"""基于以下文档回答问题: 文档: {context} 问题:{query} """ # 生成回答 response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": prompt}] )
#实践项目
构建一个简单的文档问答系统:
- 准备几个 PDF 文档
- 分块并向量化
- 实现问答功能