RAG知识库搭建教程:让AI读懂你的私有数据

RAG(检索增强生成)让AI能访问你的私有数据。本文从零搭建一个完整的RAG知识库系统。

一、什么是RAG?

RAG = 检索(Retrieval)+ 增强(Augmented)+ 生成(Generation)。简单说:先从知识库中检索相关内容,然后把这些内容作为上下文给LLM生成回答。

二、RAG架构

用户提问 → 向量检索 → 获取相关文档 → 组装Prompt → LLM生成回答

三、环境准备

pip install langchain chromadb openai tiktoken

四、文档处理

from langchain.document_loaders import TextLoader, PDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 加载文档
loader = TextLoader("your_document.txt")
documents = loader.load()

# 分割文档
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["\n\n", "\n", "。", "!", "?"]
)
chunks = text_splitter.split_documents(documents)

五、向量化

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

# 创建向量数据库
embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")

# 持久化
vectordb.persist()

六、检索问答

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

# 创建QA链
llm = ChatOpenAI(model="gpt-4o")
retriever = vectordb.as_retriever(search_kwargs={"k": 3})
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever
)

# 提问
result = qa_chain.run("你的问题")
print(result)

七、优化技巧

提升RAG质量的关键
1. 文档分块大小:太大太小都不好,1000字左右最佳
2. 重叠度:200字重叠保证上下文连续
3. 检索数量:k=3-5,太多会引入噪音
4. 重新排序:用reranker对检索结果重新排序
5. 混合检索:向量检索+关键词检索结合

八、总结

RAG是让AI理解私有数据的关键技术。掌握RAG,就能搭建企业级AI知识库、智能客服、文档问答等应用。