在人工智能浪潮中,你是否厌倦了传统聊天机器人“一本正经地胡说八道”?或者为大型语言模型(LLM)无法获取你公司内部最新资料而苦恼?RAG(检索增强生成)技术正是解决这些痛点的利器。它巧妙地将海量文档检索与智能文本生成相结合,让AI的回答既博学广识,又言之有据。本教程将手把手带你从零开始,构建一个能“引经据典”的智能问答系统。
在开始编码之前,我们需要准备好以下“武器”。请按顺序完成:

pip install openai langchain chromadb tiktoken
这里,我们使用轻量级的ChromaDB作为本地向量数据库,方便快速入门。
RAG无法直接理解整本书,它需要将文档“消化”成小块。我们使用LangChain提供的工具来完成。

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 加载文档
loader = DirectoryLoader('./knowledge_base', glob="**/*.txt")
documents = loader.load()
# 切分文档
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
print(f"已将文档切分为 {len(chunks)} 个文本块。")
chunk_size和chunk_overlap是关键参数,分别控制每个文本块的长度和块之间的重叠字数,适当的重叠可以保证上下文的连贯性。

将文本块转换为计算机能理解的“向量”(一组数字),并存入向量数据库。这个过程如同为每段话制作一个独一无二的“指纹”。

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 初始化嵌入模型(需要设置你的OPENAI_API_KEY环境变量)
embeddings = OpenAIEmbeddings()
# 将切分后的文本转换为向量并存入ChromaDB
vectorstore = Chroma.from_documents(documents=chunks, embedding=embeddings, persist_directory="./vector_db")
vectorstore.persist()
print("向量数据库已创建并持久化。")
这是RAG的核心。当用户提问时,系统会先从向量库中检索出最相关的几个文本块,然后将问题和这些“参考材料”一起交给大语言模型,让它生成最终答案。

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
# 加载已存储的向量数据库
persisted_vectorstore = Chroma(persist_directory="./vector_db", embedding_function=embeddings)
# 创建检索器,设置返回最相关的3个文本块
retriever = persisted_vectorstore.as_retriever(search_kwargs={"k": 3})
# 创建问答链,指定使用的大语言模型(如GPT-3.5)
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
# 进行提问
question = "请总结一下文档中提到的核心产品特性?"
answer = qa_chain.run(question)
print(f"问题:{question}\n答案:{answer}")
将以上代码整合到一个主程序中,并尝试提出各种问题。你会发现,系统的回答不仅逻辑通顺,而且其依据直接来源于你提供的文档,有效避免了幻觉(Hallucination)问题。
k值或优化嵌入模型。恭喜你!你已经成功搭建了一个最基本的RAG智能问答系统。回顾一下核心流程:准备文档 -> 切分与向量化 -> 检索相关片段 -> 增强生成答案。这个框架是强大的基石,你可以通过接入更丰富的知识源(网页、数据库)、优化每一个环节的算法,来打造属于你的个性化知识大脑。无论是构建企业级知识库助手、智能学习工具还是高级研究助理,RAG都为你提供了清晰的路径。现在,就请用你独有的数据,赋予这个系统灵魂,开始实践吧!