在人工智能蓬勃发展的当下,大语言模型的应用越来越广泛。然而,如何让大模型更加智能,能够结合特定的知识给出更准确的回答,成为了许多开发者关注的焦点。今天,我们就来探讨一下如何基于 langchain 实现一个强大的 RAG 系统,并结合 DeepSeek 模型!
一、准备工作
首先需要在虚拟环境中安装下面所需要的包,主要是langchain的包。
# 导入必要的库
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader, DirectoryLoader
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline
from langchain_community.embeddings import HuggingFaceBgeEmbeddings
from langchain.prompts import ChatPromptTemplate
from langchain_community.vectorstores import FAISS
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import CrossEncoderReranker
from langchain_community.cross_encoders import HuggingFaceCrossEncoder
from langchain_community.retrievers import BM25Retriever
from langchain.retrievers import EnsembleRetriever
import time
import re
import torch
import warnings
import string
warnings.filterwarnings("ignore")
第二步,下载deepseek模型,我这里下载的是deepseek-r1蒸馏的Qwen-14B的模型,下载地址,你也可以根据自己的需要选择deepseek的不同版本模型,不知道怎么从huggingface上下载模型的小伙伴可以看我的这篇博客:如何从huggingface上下载模型到本地?
然后可以准备一段txt的语料作为RAG的知识库,我这里就随便复制了一点关于水浒传的介绍。你可以将其替换成你真正想要检索的内容。
《水浒传》主要描写的是北宋末年,天罡地煞降生人间,一百零八好汉被逼上梁山,大聚义替天行道,后接受招安,投降封建王朝、起义走向失败的故事。
宋仁宗时期,由于宋朝境内瘟疫横行,皇帝遣太尉洪信与龙虎山张天师同去祈禳 [39]。在龙虎山,洪太尉命人开掘伏魔殿中的地穴,误放一百零八个魔星,下凡化身为一百零八条好汉。
书中第一位出场的好汉是"九纹龙"史进,在一日练武时巧遇被高俅陷害的前禁军教头王进,史进与其比武,被击败,遂拜为师。之后,史进因一次冲突,结识了少华山首领“神机军师”朱武等三人,却遭人告发,官兵将史家庄围困,史进与三名首领共同突围,而后决定去延安府投奔王进,却意外行至渭州城。史进在城中结识了经略相公帐下的提辖官鲁达,并重会先师"打虎将"李忠。三人共饮时得知歌女金翠莲遭到当地恶霸"镇关西"郑屠讹诈欺压一事。鲁达翌日当街打死郑屠,随后弃职逃至代州,经金氏父女及当地赵员外介绍,前往五台山出家为僧,寺中智真长老赐其法名"智深"。
在寺中,鲁智深两次破戒饮酒、大闹山门,长老只得将其荐往东京大相国寺。途中,鲁智深在桃花山刘家庄打伤了试图强娶民女的"小霸王"周通,随后又在瓦罐寺与路过的史进共同击杀恶霸“生铁佛”崔道成和“飞天夜叉”丘小乙,火烧了破败的瓦罐寺。
到达东京后,鲁智深结识了禁军教头"豹子头"林冲。林冲的妻子当天遭高俅义子调戏,被林冲喝止。此后,高衙内觊觎林妻美貌,联结高俅、陆谦设计陷害林冲于白虎节堂,将其发配沧州,欲命从人在途中将其谋害,被鲁智深跟踪搭救。随后,林冲又在沧州偶遇富豪"小旋风"柴进。柴进赠其钱财以贿赂沧州管营、差拨等人,但因高俅施压,管营将林冲派遣至草料场任职,欲与陆谦等放火谋杀林冲。林冲杀死三人,逃至柴进庄上,后经柴进与梁山泊头领"旱地忽律"朱贵举荐,至梁山泊王伦处入伙。王伦让林冲杀个人作“投名状”,林冲却遇上了杨家将后人"青面兽"杨志。
王伦阻止二人争斗,欲留杨志入伙,被拒,任杨志返回东京。杨志因丢失花石纲被削去职位,因经济拮据,被迫拿出家传宝刀游街售卖,却遭遇市井泼皮牛二强夺宝刀,杨志一怒之下拔刀将其杀死,因此获罪,被发往大名府充军。中书梁世杰看中杨志,留下听用。杨志在校场比武时击败周谨,又与留守司正牌"急先锋"索超战平,遂得受用。
此后正逢太师蔡京生辰,梁中书命杨志押送祝寿礼物(即生辰纲)前往东京。此事被游走江湖的"赤发鬼"刘唐得知,意图联合郓城县东溪村保正晁盖共同劫取。
“智多星”吴用得知后联合石碣村阮氏三雄共商计谋,期间又得云游道士"入云龙"公孙胜与市井闲汉