
基于DeepSeek,构建个人本地RAG知识库
经过一段使用DeepSeek后,感觉使用体验和ChatGPT基本差不多,回答问题的质量略有提升,因DeepSeek已开源,它的模型、模型参数权重从网上都可以下载到,所以可以基于开源的模型,在本地构建一个自己的知识库,小编这里使用的是蒸馏后的模型参数权重RAG (Retrieval-Augmented Generation)检索增强生成,是一种通过整合外部知识库来增强大模型(LLM)回答问题质量的模
背景
经过一段使用DeepSeek后,感觉使用体验和ChatGPT基本差不多,回答问题的质量略有提升,因DeepSeek已开源,它的模型、模型参数权重从网上都可以下载到,所以可以基于开源的模型,在本地构建一个自己的知识库,小编这里使用的是蒸馏后的模型参数权重 deepseek-r1:1.5b
RAG (Retrieval-Augmented Generation)检索增强生成,是一种通过整合外部知识库来增强大模型(LLM)回答问题质量的模式。最简单的理解,可以认为是给大模型外挂了一个知识库
很多大模型的问题,多数是由于数据缺失造成的,企业中解决这类数据确实的问题,通常的方案是采取企业向量知识库的方式,在应用Prompt的时候,先从企业知识库中检索与Prompt关联的知识,然后把领域知识和原始Prompt整合在一起,最后作为大模型的输入
这样大模型就了解了领域专业知识,也能更好的回答问题
小编环境
基于Win10中的Linux子系统进行部署安装
Linux子系统:Ubuntu 22.04.5 LTS
python -V
# Python 3.11.11
uname -a
# Linux DESKTOP-KREEAFH 5.15.167.4-microsoft-standard-WSL2 #1
# SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description: Ubuntu 22.04.5 LTS
# Release: 22.04
# Codename: jammy
环境
安装Ollama,并下载deepseek模型
官网地址:https://ollama.com/download
官网命令:curl -fsSL https://ollama.com/install.sh | sh
因该网站是国外服务器,所以都懂得,按官网命令进行安装,基本都不会成功,所有需要魔改安装脚本 install.sh
1. 在Linux下载 install.sh
安装脚本文件到本地
curl -fsSL https://ollama.com/install.sh -o install.sh
2. 修改安装脚本文件,需要开启魔法上网
在83行增加curl命令的代理参数,前面ip地址为Win10的网络地址,端口需要查看自己本地魔法上网的软件端口,小编使用的是 v2rayN,因为是在Linux子系统中使用,需要使用局域网的http端口
curl --fail --show-error --location --progress-bar \
--proxy http://192.168.21.121:10811 \
"https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \
$SUDO tar -xzf - -C "$OLLAMA_INSTALL_DIR"
curl
代理端口
3. 开启魔法上网,执行安装脚本文件
bash install.sh
4. 下载模型参数权重文件
ollama pull deepseek-r1:1.5b
安装Python环境依赖包
新建requirements.txt
文件,需要把以下内容放入该文件
langchain
langchain-community
langchain_experimental
streamlit
pdfplumber
semantic-chunkers
open-text-embeddings
ollama
prompt-template
sentence-transformers
faiss-cpu
安装上面列出的所有三方库:
pip install -r requirements.txt
Web完整代码
app.py文件内容
import streamlit as st
from langchain_community.document_loaders import TextLoader
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain_community.llms import Ollama
import os
def initialize_interface():
# 定义 CSS 样式
st.markdown(
"""
<style>
.text-color {
color: grey; /* 设置字体颜色为灰色 */
font-size: 25px; /* 设置字体大小为 20px */
}
</style>
""",
unsafe_allow_html=True
)
st.markdown(
"""
<h1 style="text-align:center;">
个人本地知识库 <span class="text-color">@DeepSeek </span>
</h1>
""",
unsafe_allow_html=True
)
def load_documents(folder_path):
documents = []
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
loader = TextLoader(file_path)
documents.extend(loader.load()) # 读取本地文件的內容
return documents
def create_vectorstore(documents, model_name="deepseek-r1:1.5b"):
embeddings = OllamaEmbeddings(model=model_name)
vectorstore = FAISS.from_documents(documents, embeddings)
return vectorstore.as_retriever(search_type="similarity", search_kwargs={
"k": 3})
def initialize_qa_chain(retriever, model_name="deepseek-r1:1.5b"):
llm = Ollama(model=model_name)
return RetrievalQA.from_chain_type(llm, retriever=retriever)
def main():
initialize_interface() # 初始化web
documents = load_documents("data") # 加载本地文件内容
retriever = create_vectorstore(documents) # 创建RAG
qa_chain = initialize_qa_chain(retriever) # 初始化问答
query = st.text_area("请输入要搜索问题:",height=80)
if query:
response = qa_chain.run(query)
st.write("💡 回答:", response)
if __name__ == "__main__":
main()
项目文件结构
把个人的知识库内容放入data目录下面,目前支持text文件
目录结构
启动Web程序
启动Web程序,按照提示打开浏览器,这里需稍等几分钟(根据个人的电脑配置决定),然后就可以提问
streamlit run ./rag/app.py
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
更多推荐
所有评论(0)