利用 DeepSeek 构建本地RAG系统

利用 DeepSeek 构建本地RAG系统

一、目标

构建一个基于 PDF 文档的问答系统。用户可以上传一个 PDF 文件,然后输入问题,系统会从 PDF 文档中检索相关信息,并结合大语言模型生成答案。可以帮助用户快速从 PDF 文档中获取所需信息,提高信息检索和获取的效率。

二、科普知识

1. 大语言模型(LLM)

大语言模型是基于大量文本数据进行训练的人工智能模型,能够理解和生成自然语言。例如,Ollama 中的 DeepSeek R1 7B 模型,它拥有 70 亿个参数,通过在海量文本数据上进行学习,具备了强大的语言理解和生成能力,可以根据输入的文本生成合理的回答。

2. 向量嵌入(Embeddings)

向量嵌入是将文本数据转换为向量空间中的向量表示的过程。使用 HuggingFaceEmbeddings 中的“sentence - transformers/all - mpnet - base - v2”模型进行嵌入。这种转换使得文本可以在向量空间中进行比较和计算,例如通过计算向量之间的相似度来找出最相关的文本片段。

3. 向量数据库(FAISS)

FAISS(Facebook AI Similarity Search)是一个用于高效相似性搜索和聚类的库。将切分后的文档片段转换为向量嵌入后存储在 FAISS 向量数据库中。当有问题输入时,可以通过向量数据库快速检索出与问题最相关的文本片段。

4. 检索增强生成(RAG)

检索增强生成是一种结合了检索和生成的技术。先从外部知识源(如文档)中检索相关信息,然后将这些信息与问题一起输入到语言模型中生成答案。在这个代码中,通过从 PDF 文档中检索相关信息,再结合 Ollama 模型生成回答,实现了 RAG 流程。

三、代码过程解释

1. 从 PDF 文档提取数据

import streamlit as st
from langchain_community.document_loaders import PDFPlumberLoader

# 创建 Streamlit 界面,让用户上传 PDF 文件
uploaded_file = st.file_uploader("上传一个 PDF 文件", type="pdf")

if uploaded_file:
    # 临时保存 PDF 文件
    with open("temp.pdf"

你可能感兴趣的:(利用 DeepSeek 构建本地RAG系统)