从 0 开始构建简单 RAG 应用
前言
大型语言模型(LLM)已经从最初的研究性阶段转变为实际应用阶段。随着各大厂商都在探索 LLM 的商业化落地方案,RAG(检索增强生成)成为了最具使用价值且最能体现商业化场景的技术之一。
什么是 RAG
虽然 LLM 能处理多种任务,但在领域知识和最新信息方面存在局限。领域知识通常指企业私有化数据,这部分知识 LLM 无法直接获取。此外,LLM 的训练数据基于历史数据,无法知晓最新信息。RAG 技术正是为了解决这些问题而诞生的。
RAG,即检索增强生成(Retrieval-Augmented Generation),是一种结合了信息检索技术与语言生成模型的人工智能技术。它主要用于增强 LLM 处理知识密集型任务的能力,如问答、文本摘要、内容生成等。
RAG 的核心思想是让语言模型在生成回答时能够动态地从外部知识库中检索相关信息。这种方法提高了内容的准确性、可靠性和透明度,丰富了大模型的知识,同时有效减少了'幻觉'现象。
构建一个完整的 RAG 系统涉及多个流程和功能,是一个典型的工程化项目。本系列文章将逐步揭开 RAG 领域的神秘面纱。
构建简单 RAG
本系列文章假设读者具备 LangChain、Python 及向量数据库的基础知识。
构建一个简单的 RAG 流程通常包含以下步骤:
- 文档加载
- 文档拆分为 Chunk
- 文档向量化(需要 Embedding 模型)
- 向量化存储
- Prompt 编写
- LLM 配置与初始化
- 提问(Query -> 检索 -> 构建 Prompt -> LLM -> Answer)
简单 RAG 架构如图所示:

安装环境以及安装包
首先,我们需要安装必要的依赖包。建议使用 Python 虚拟环境进行隔离。
pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain
配置环境变量
如果你使用 OpenAI 作为 LLM 服务,需要在环境变量中设置 OPENAI_API_KEY。
import os
os.environ['OPENAI_API_KEY'] = '<your-api-key>'
本文中使用 Azure 服务,在项目目录下新建 .env 文件,配置内容如下:
AZURE_OPENAI_API_KEY=""
AZURE_OPENAI_ENDPOINT=""
AZURE_DEPLOYMENT_NAME_GPT35="gpt-35-turbo"
AZURE_DEPLOYMENT_NAME_GPT4="gpt-4"
AZURE_EMBEDDING_TEXT_MODEL="text-embedding-ada-002"
=





