什么是RAG?
RAG(Retrieval-Augmented Generation)是一种结合检索与生成的技术,能够为大模型提供外部知识,减少幻觉,提升回答准确性。
准备工作
环境要求
- Python 3.10+
- OpenAI API Key
- 安装依赖:
pip install langchain chromadb openai tiktoken
数据准备
我们将使用一个包含公司政策文档的本地文件夹(./docs)作为知识库。
步骤一:文档加载与分割
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
loader = DirectoryLoader('./docs', glob='**/*.txt')
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
docs = text_splitter.split_documents(documents)
步骤二:创建向量存储
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(docs, embeddings)
步骤三:构建检索链
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
步骤四:运行问答
query = "公司年假政策是什么?"
result = qa_chain.run(query)
print(result)
进阶优化
1. 使用更好的检索器
- MMR检索: 增加多样性
- 带分数过滤: 提高相关性
2. 提示工程
定制提示模板,让回答更专业。
3. 对话历史
集成记忆组件,实现多轮对话。
总结
通过本教程,你已掌握RAG系统的基本搭建方法。实际应用中,可根据需求调整文档分割策略、检索算法和模型参数。