基于 LangChain 和 Streamlit 搭建 PDF 问答知识库
1. 项目概述
检索增强生成(RAG, Retrieval-Augmented Generation)技术允许大语言模型利用外部知识库进行回答,从而解决模型幻觉和知识时效性问题。本项目旨在使用 Python、LangChain 框架以及 Streamlit 快速构建一个支持 PDF 文件上传的本地问答系统。
该系统主要包含以下核心组件:
- 文档加载器:
pdfplumber用于解析 PDF 文本。 - 文本分片器:
CharacterTextSplitter将长文本分割为适合向量化的片段。 - 向量化模型:
OpenAIEmbeddings将文本转换为向量。 - 向量数据库:
FAISS用于存储和检索向量相似度。 - 大语言模型:
OpenAIAPI 用于生成最终答案。
2. 环境搭建
2.1 安装 Python
确保已安装 Python 3.8 及以上版本。访问官网下载并安装,安装时请勾选 "Add Python to PATH"。
2.2 创建虚拟环境
为避免依赖冲突,建议使用虚拟环境管理项目依赖。
# 创建项目目录
mkdir chatgpt-pdf-kb
cd chatgpt-pdf-kb
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows: venv\Scripts\activate
# macOS/Linux: source venv/bin/activate
2.3 安装依赖包
安装运行所需的核心库。
pip install langchain pdfplumber python-dotenv streamlit faiss-cpu openai tiktoken
langchain: 简化与大模型交互的框架。pdfplumber: 高效提取 PDF 文本内容,对中文支持良好。python-dotenv: 安全读取环境变量中的 API Key。streamlit: 快速构建 Web UI 界面。faiss-cpu: Facebook 开源的相似性搜索库(CPU 版)。openai&tiktoken: OpenAI 接口调用及 Token 计数。
注意:若需 GPU 加速,可安装
faiss-gpu,但需注意 CUDA 版本兼容性。
3. 配置文件与密钥管理
3.1 环境变量配置
在根目录下创建 .env 文件,存放敏感信息如 API Key。
OPENAI_API_KEY=sk-your-api-key-here


