基于 LangChain 与 Gradio 搭建个人知识助手
引言
检索增强生成(RAG, Retrieval-Augmented Generation)技术能够有效解决大模型在特定领域知识上的幻觉问题。通过构建本地知识库,利用向量数据库存储文档片段,并结合大语言模型进行上下文问答,用户可以搭建安全、可控的个人知识助手。
本文将详细介绍如何使用 Python 生态中的 LangChain 框架、Gradio 界面库、ChromaDB 向量数据库以及 FlagEmbedding 模型,结合讯飞星火 API,快速搭建一个支持私有数据查询的智能助手。
一、环境搭建
本项目基于 Python 3.8.5 及以上版本开发。LangChain 对版本有一定要求,过低版本可能存在兼容性问题。
1. 依赖安装
使用 pip 安装所需的核心依赖包。如果网络不稳定,建议使用国内镜像源(如清华源)加速下载。
pip install flask chromadb gradio fastapi langchain "FlagEmbedding"
注意:
FlagEmbedding包含 PyTorch 和 Transformer 等依赖,首次安装耗时较长。- 默认安装 CPU 版本,推理速度较慢。若拥有 NVIDIA GPU 且显存大于 4GB,建议先安装 CUDA 版本的 PyTorch,再安装
FlagEmbedding以利用 GPU 加速。
2. 目录结构
建议创建如下项目结构:
project_root/
├── data/ # 存放知识库文本文件 (.txt)
├── models/ # 存放 BGE 向量模型权重
├── SparkApi.py # 讯飞 API 调用封装
├── SparkGPT.py # 讯飞 LLM 包装类
├── prompt_utils.py # 提示词模板
└── app.py # Gradio 主程序入口
二、知识库建立
1. 数据准备
将需要咨询的文档整理为纯文本格式(UTF-8 编码)。例如,可以将 PDF 或 Word 内容转换为 .txt 文件。
2. 向量模型配置
本文使用 BGE (BAAI General Embedding) 中文向量模型,该模型在中文语义理解方面表现优异。
下载模型
原始模型权重托管于 Hugging Face,需安装 Git LFS 工具后克隆。
git lfs install
git clone https://huggingface.co/BAAI/bge-large-zh
下载完成后,将 bge-large-zh 文件夹移动至项目根目录下的 models 文件夹中。
三、大模型配置
为了演示方便,本示例选用讯飞星火大模型 API。用户需前往讯飞开放平台注册账号并申请免费 Token。
1. 获取认证信息
在控制台创建应用后,获取以下三个关键参数:
- APPID
- APISecret
- APIKey


