3分钟上手llm-universe:从0到1搭建个人AI知识库
你是否还在为海量文档检索效率低而烦恼?是否想拥有一个能理解你文件内容的智能助手?本文将带你3分钟快速入门llm-universe项目,从零开始搭建属于自己的个人AI知识库,让你轻松实现文档智能问答。
读完本文你将学会:
- 快速安装部署llm-universe项目
- 构建个人专属知识库
- 实现智能问答功能
- 掌握基础故障排查方法
项目简介
llm-universe是Datawhale开源的大模型应用开发教程项目,旨在帮助开发者快速掌握基于大型语言模型(LLM,Large Language Model)的应用开发技能。该项目提供了从基础理论到实际应用的完整学习路径,特别适合小白开发者入门。
项目主要包含以下核心内容:
- 大模型基础理论知识
- LLM API调用与开发
- 知识库搭建技术
- RAG(检索增强生成,Retrieval-Augmented Generation)应用构建
- 系统评估与优化方法
- 实际应用案例分析
环境准备
硬件要求
llm-universe对硬件要求不高,个人电脑即可满足基本开发需求:
- CPU:Intel 5代处理器或同等性能
- 内存:至少4GB
- 操作系统:Windows、macOS、Linux均可
软件依赖
项目基于Python开发,主要依赖以下软件包:
- python>=3.9
- pytorch>=2.0.0
- langchain
- chromadb
- gradio
完整依赖列表可参考项目根目录下的requirements.txt文件。
快速安装
获取项目代码
首先,克隆项目代码库到本地:
git clone https://gitcode.com/datawhalechina/llm-universe
cd llm-universe
创建虚拟环境
推荐使用conda创建独立的虚拟环境,避免依赖冲突:
conda create -n llm-universe python==3.9.0
conda activate llm-universe
pip install -r requirements.txt
验证安装
安装完成后,可以通过运行以下命令验证环境是否配置成功:
# 启动Jupyter Notebook
jupyter notebook
在浏览器中打开Notebook后,尝试运行notebook/C2 使用 LLM API 开发应用/C2.ipynb中的示例代码,检查是否能够正常调用LLM API。
知识库搭建
数据准备
llm-universe支持多种格式的文档导入,包括PDF、Markdown、TXT等。项目默认提供了一些示例知识库数据:
你也可以添加自己的文档到data_base/knowledge_db/目录下,构建个人专属知识库。
知识库构建流程
知识库构建主要包括以下步骤:
- 文档加载:读取各种格式的文档
- 文本分割:将长文本切分为合适大小的片段
- 文本向量化:将文本转换为向量表示
- 向量存储:将向量存入向量数据库
项目提供了便捷的知识库构建脚本,位于notebook/C3 搭建知识库/C3.ipynb,只需运行相应代码即可完成知识库的构建。
核心代码示例:
from langchain.document_loaders import UnstructuredMarkdownLoader, PyMuPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from embedding.call_embedding import get_embedding
# 加载文档
loaders = [
UnstructuredMarkdownLoader("data_base/knowledge_db/prompt_engineering/1. 简介 Introduction.md"),
PyMuPDFLoader("data_base/knowledge_db/pumkin_book/pumpkin_book.pdf")
]
docs = []
for loader in loaders:
docs.extend(loader.load())
# 文本分割
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=150)
split_docs = text_splitter.split_documents(docs)
# 向量化并存储
embeddings = get_embedding("m3e") # 使用m3e嵌入模型
vectordb = Chroma.from_documents(
documents=split_docs,
embedding=embeddings,
persist_directory="data_base/vector_db/chroma"
)
vectordb.persist()
启动应用
基本流程
llm-universe提供了多种示例应用,其中个人知识库助手是最常用的应用之一。启动应用的基本步骤如下:
- 准备API密钥:部分LLM需要API密钥才能使用
- 启动服务:运行应用启动脚本
- 访问界面:通过浏览器访问应用
启动个人知识库助手
个人知识库助手是一个基于RAG技术的应用,能够根据导入的文档内容回答用户问题。
启动命令:
cd notebook/C4 构建 RAG 应用
python run_gradio.py -model_name='chatglm_std' -embedding_model='m3e' -db_path='../../data_base/knowledge_db' -persist_path='../../data_base/vector_db'
启动成功后,会显示类似以下信息:
Running on local URL: http://127.0.0.1:7860
打开浏览器访问显示的URL,即可看到应用界面:
功能演示
知识库问答
个人知识库助手的核心功能是基于导入的文档内容回答用户问题。使用方法非常简单:
- 在输入框中输入你的问题
- 点击"提交"按钮
- 等待模型生成回答
例如,我们可以问:"什么是RAG?",助手会基于知识库中的内容给出回答:
"RAG是检索增强生成的缩写,是一种结合信息检索和生成式AI的技术。它通过在生成回答前先从知识库中检索相关信息,提高回答的准确性和可靠性,同时减少模型幻觉。"
另一个示例,询问关于joyrl项目的信息:
多模型支持
llm-universe支持多种LLM模型,包括:
- OpenAI模型(gpt-3.5-turbo, gpt-4等)
- 百度文心一言(ERNIE-Bot系列)
- 讯飞星火(Spark系列)
- 智谱AI(chatglm系列)
可以通过修改启动参数切换不同的模型:
# 使用GPT-3.5-turbo模型
python run_gradio.py -model_name='gpt-3.5-turbo' -embedding_model='openai'
# 使用文心一言模型
python run_gradio.py -model_name='ERNIE-Bot' -embedding_model='openai'
常见问题解决
API密钥配置
使用部分LLM模型需要API密钥,配置方法如下:
- 从相应的AI服务提供商处获取API密钥
- 创建.env文件,添加密钥信息:
OPENAI_API_KEY=你的OpenAI密钥
ZHIPUAI_API_KEY=你的智谱AI密钥
BAIDU_API_KEY=你的百度文心一言API_KEY
BAIDU_SECRET_KEY=你的百度文心一言SECRET_KEY
- 保存文件,重启应用
知识库更新
当添加新的文档到知识库后,需要更新向量数据库:
# 重新运行知识库构建代码
from database.create_db import create_db
create_db(files="../../data_base/knowledge_db", persist_directory="../../data_base/vector_db", embeddings="m3e")
性能优化
如果遇到应用响应缓慢的问题,可以尝试以下优化方法:
- 减少top_k参数值,减少检索文档数量
- 使用更小的模型,如chatglm_lite
- 增加chunk_size,减少文本片段数量
- 清理不必要的知识库文档
学习资源
llm-universe项目本身提供了丰富的学习资源:
- 官方文档:docs/
- 教程笔记本:notebook/
- 示例代码:notebook/C2 使用 LLM API 开发应用/C2.ipynb
- 进阶内容:notebook/C7 高级 RAG 技巧/
此外,项目还提供了多个实际案例供学习参考:
总结与展望
通过本文的介绍,你已经了解了llm-universe项目的基本安装、配置和使用方法。这个项目不仅是一个工具,更是一个完整的学习路径,帮助你从LLM初学者成长为能够独立开发大模型应用的开发者。
后续学习建议:
- 深入学习RAG技术原理:docs/C1/C1.md
- 掌握LangChain框架使用:docs/C3/C3.md
- 学习自定义Embedding:docs/C3/附LangChain自定义Embedding封装讲解.md
- 探索高级RAG技巧:notebook/C7 高级 RAG 技巧/
希望本文能帮助你快速上手llm-universe项目,开启你的大模型应用开发之旅!如有任何问题,欢迎在项目仓库提交issue或参与Datawhale社区讨论。
谢谢你的阅读!如有任何问题,欢迎提问。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考









