Retrieval-Augmented Generation(RAG)技术已经成为了一项革命性的突破。它打破了传统语言模型仅依赖预训练知识的局限,通过动态检索外部信息,生成更加相关和准确的回答。本文将详细介绍如何使用LangChain、FAISS和DeepSeek-LLM构建一个处理PDF文档、检索相关内容并生成智能响应的RAG系统。

一、RAG技术概述

RAG技术是一种结合了检索和生成能力的新型语言模型应用方式。其核心在于,首先使用一个检索器从知识库中获取与查询相关的文档片段,然后基于这些检索到的上下文,利用语言模型(LLM)生成回答。这种方式显著提高了回答的准确性和时效性,因为它能够实时地、基于事实地、动态地生成响应。

二、技术栈介绍

在构建 RAG 系统时,选择合适的技术工具至关重要。本文所介绍的系统使用了以下几种关键技术:

  • LangChain

    作为连接检索器和语言模型的桥梁,LangChain 提供了一系列便捷的工具和接口,能轻松整合不同的组件,让开发人员专注于系统逻辑的实现。

  • FAISS

    Facebook AI Similarity Search 的简称,它是一种高效的向量相似度搜索库。在 RAG 系统里,FAISS 用于存储文本向量嵌入,并快速查找与查询向量最相似的文本片段,大大提高了检索效率。

  • DeepSeek-LLM

    作为负责生成回答的语言模型,DeepSeek-LLM 凭借其强大的语言理解和生成能力,在检索到的上下文基础上,生成高质量的回答。

  • Sentence Transformers

    用于将文本转换为向量表示,也就是文本嵌入。这些向量能够精准地捕捉文本的语义信息,为后续的检索和匹配提供基础。

  • PyTorch

    作为深度学习框架,PyTorch 负责加载和运行 DeepSeek-LLM 模型,借助 GPU 加速技术,提升模型的推理速度和性能。

三、系统实施步骤

1. 加载PDF文档

首先,我们使用LangChain的PyPDFLoader加载PDF文件,并将其拆分成较小的文本块。这一步骤是为了方便后续对文本进行向量化处理。

from langchain.document_loaders import PyPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterpdf = "/kaggle/input/about-me-rag/about-me-rag.pdf"  # PDF File Path# Load the PDFloader = PyPDFLoader(pdf)documents = loader.load()# Split the text into chunkstext_splitter = RecursiveCharacterTextSplitter(chunk_size=512, chunk_overlap=50)texts = text_splitter.split_documents(documents)
2. 文本向量化

接下来,我们使用Hugging Face Sentence Transformers将文本块转换成向量嵌入,并将这些嵌入存储在FAISS中。这样,我们就可以在需要时高效地检索到与查询相关的文本块。

from langchain.embeddings import HuggingFaceEmbeddingsfrom langchain.vectorstores import FAISS# Load embedding modelembeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")# Create vector storevector_store = FAISS.from_documents(texts, embeddings)vector_store.save_local("faiss_index")  # Save for reuse
3. 加载DeepSeek-LLM模型

DeepSeek-LLM模型用于生成回答。我们利用Hugging Face Transformers库加载这个模型,并确保它在GPU上运行以加速处理速度。

from transformers import AutoTokenizer, AutoModelForCausalLMimport torchmodel_version = "deepseek-ai/deepseek-llm-7b-chat"tokenizer = AutoTokenizer.from_pretrained(model_version)model = AutoModelForCausalLM.from_pretrained(model_version)# Move model to GPU if availabledevice = "cuda" if torch.cuda.is_available() else "cpu"model = model.to(device)
4. 定义RAG管道

现在,我们将所有组件连接在一起,形成一个完整的RAG管道。我们使用LangChain的RetrievalQA模块来实现这一点,它允许我们定义检索器、语言模型和提示模板。

from langchain.llms import HuggingFacePipelinefrom transformers import pipelinefrom langchain.prompts import PromptTemplatefrom langchain.chains import RetrievalQA# Define the retrieverretriever = vector_store.as_retriever(search_kwargs={"k": 3})  # Retrieve top 3 chunks# Create a Hugging Face pipeline for text generationpipe = pipeline(    "text-generation",    model=model,    tokenizer=tokenizer,    max_new_tokens=256,    temperature=0.7)# Wrap the pipeline for LangChain compatibilityllm = HuggingFacePipeline(pipeline=pipe)# Define the Prompt Templatetemplate = """Use the following context to answer the question. If unsure, say "I don't know."Context:{context}Question: {question}Answer:"""prompt = PromptTemplate(template=template, input_variables=["context", "question"])# Define the RAG Chainrag_chain = RetrievalQA.from_chain_type(    llm=llm,    retriever=retriever,    chain_type_kwargs={"prompt": prompt},    return_source_documents=True)
5. 查询系统

最后,我们可以向系统提出查询,并基于PDF文档的内容获得回答。RAG管道会检索相关文本块,并使用DeepSeek-LLM模型生成回答。

query = "What is Singistic?"result = rag_chain({"query": query})# Extract the generated answeranswer = result["result"].split("Answer:")[1].strip()print(answer)

 

 

 如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐