保姆级指南:基于 LangChain 搭建 RAG 系统全流程

5分钟搭建私域RAG 系统:DeepSeek-R1 + LangChain + Ollama 目标是在本地运行一个 RAG 系统,能够处理 PDF 文档,保障数据隐私,并能高效回答与文档内容相关的问题 阅读详情
AI摘要

本文详细介绍如何使用LangChain搭建RAG系统,涵盖数据采集、文本分块、向量索引、检索增强和生成优化等核心环节。文章还涉及本地与云端模型部署、API服务搭建及性能优化等内容,适用于想深入了解大模型技术的应用开发者。

一、RAG 系统核心原理与技术选型

1.1 RAG 技术架构解析

RAG(检索增强生成)系统通过向量检索+LLM 生成的双轮驱动架构,解决传统 LLM 的三大痛点:

  • 知识滞后:实时接入最新数据
  • 内容幻觉:基于检索结果生成保证事实性
  • 私有数据缺失:支持企业知识库集成

核心流程包括:

  1. 数据摄取:加载 PDF/Word/ 网页等格式文件
  2. 文本分块:将长文本拆分为 500-1000 字的语义片段
  3. 向量索引:通过 Embedding 模型生成向量存储到数据库
  4. 检索增强:根据用户问题检索相关文档片段
  5. 生成优化:将检索结果与问题结合生成最终回答

1.2 技术栈选型建议

组件推荐方案替代方案
文本加载PyPDF2/UnstructuredBeautifulSoup(网页)
分块工具RecursiveCharacterTextSplitterCharacterTextSplitter
EmbeddingBAAI/BGE-large-zh-v1.5text-embedding-ada-002
向量数据库FAISS(本地)/Pinecone(云端)Chroma/Qdrant
LLMQwen-1.8/InternLM-3.0GPT-4-Turbo
部署框架FastAPI+UvicornFlask+Gunicorn

二、数据准备与预处理

2.1 数据采集与清洗
2.1.1 多源数据加载

python

from langchain.document_loaders import PyPDFLoader, TextLoader, WebBaseLoader

# 加载PDF文件
loader = PyPDFLoader("data/report.pdf")
documents = loader.load()

# 加载本地文本文件
loader = TextLoader("data/faq.txt")
documents += loader.load()

# 加载网页内容
loader = WebBaseLoader("https://example.com")
documents += loader.load()

2.1.2 文本清洗

python

import re

def clean_text(text):
    # 去除特殊字符
    text = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9\s]', '', text)
    # 合并连续空格
    text = re.sub(r'\s+', ' ', text).strip()
    # 去除过长空白行
    text = '\n'.join([line for line in text.split('\n') if len(line) > 10])
    return text

# 批量清洗文档
cleaned_docs = [Document(page_content=clean_text(doc.page_content), metadata=doc.metadata) for doc in documents]

2.2 文本分块策略

python

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    length_function=len,
    separators=["\n\n", "\n", " ", ""]
)

chunks = text_splitter.split_documents(cleaned_docs)

2.3 向量数据库初始化

python

from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS

embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-large-zh-v1.5")
vector_db = FAISS.from_documents(chunks, embeddings)

# 保存索引
vector_db.save_local("faiss_index")

三、RAG 系统核心组件构建

3.1 检索器配置

python

# 从本地加载索引
vector_db = FAISS.load_local("faiss_index", embeddings)

# 配置检索参数
retriever = vector_db.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 5, "score_threshold": 0.7}
)

3.2 LLM 选择与优化

3.2.1 本地模型部署

python

from langchain.llms import LlamaCpp
from langchain import PromptTemplate, LLMChain

llm = LlamaCpp(
    model_path="models/qwen-1.8-chat-int4.bin",
    n_ctx=4096,
    temperature=0.6,
    top_p=0.95
)

3.2.2 云端模型调用

python

from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(
    model_name="gpt-4-1106-preview",
    temperature=0.2,
    max_tokens=1000
)

3.3 RAG 链构建

python

from langchain.chains import RetrievalQA

prompt_template = """
已知信息:
{context}

用户问题:
{question}

请基于已知信息,以专业技术文档的格式回答用户问题,要求逻辑清晰、步骤明确。
"""

chain_type_kwargs = {
    "prompt": PromptTemplate.from_template(prompt_template),
    "verbose": True
}

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    chain_type_kwargs=chain_type_kwargs
)

四、系统评估与优化

4.1 核心评估指标
指标计算方法优化方向
上下文召回率检索到的关键信息数 / 总关键信息数调整分块策略、优化 Embedding
答案忠实度基于检索内容的事实数 / 答案总事实数强化 prompt 约束、增加检索结果权重
响应相关性人工标注相关性评分优化检索排序、调整 prompt 模板

4.2 性能优化技巧

4.2.1 检索优化

python

# 混合检索(向量+关键词)
from langchain.retrievers import EnsembleRetriever

vector_retriever = vector_db.as_retriever()
bm25_retriever = BM25Retriever.from_documents(chunks)

ensemble_retriever = EnsembleRetriever(
    retrievers=[vector_retriever, bm25_retriever],
    weights=[0.7, 0.3]
)

4.2.2 生成优化

python

# 流式输出
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

llm = ChatOpenAI(
    streaming=True,
    callbacks=[StreamingStdOutCallbackHandler()],
    temperature=0.1
)

五、系统部署与监控

5.1 API 服务搭建

python

# main.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

class QueryRequest(BaseModel):
    query: str
    top_k: int = 5

@app.post("/query")
async def handle_query(request: QueryRequest):
    try:
        result = qa_chain({"query": request.query, "top_k": request.top_k})
        return {"answer": result["result"]}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

5.2 容器化部署

dockerfile

# Dockerfile
FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

5.3 监控与日志

python

# 集成Prometheus
from prometheus_fastapi_instrumentator import Instrumentator

Instrumentator().instrument(app).expose(app)

# 日志配置
import logging
logging.basicConfig(
    filename="app.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

六、进阶优化与扩展

6.1 多模态支持

python

from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool

tools = [
    Tool(
        name="ImageSearch",
        func=lambda query: image_search_api(query),
        description="用于搜索与查询相关的图片"
    )
]

agent = initialize_agent(
    tools,
    OpenAI(temperature=0),
    agent="zero-shot-react-description",
    verbose=True
)

6.2 长期记忆增强

python

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True
)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    memory=memory
)

6.3 安全与隐私保护

python

# 数据加密存储
from cryptography.fernet import Fernet

key = Fernet.generate_key()
cipher_suite = Fernet(key)

encrypted_docs = [Document(page_content=cipher_suite.encrypt(doc.page_content.encode()), metadata=doc.metadata) for doc in documents]

# 访问控制
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.post("/query")
async def handle_query(request: QueryRequest, token: str = Depends(oauth2_scheme)):
    # 验证token
    pass

七、总结与资源推荐

7.1 关键步骤回顾
  1. 数据处理:清洗→分块→向量化
  2. 核心组件:检索器 + LLM+RAG 链
  3. 部署优化:API 服务→容器化→监控
  4. 扩展方向:多模态→记忆增强→安全加固

零基础如何高效学习大模型?

为了帮助大家打破壁垒,快速了解大模型核心技术原理,学习相关大模型技术。从原理出发真正入局大模型。在这里我和MoPaaS魔泊云联合梳理打造了系统大模型学习脉络,这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码免费领取🆓**⬇️⬇️⬇️

在这里插入图片描述

【大模型全套视频教程】

教程从当下的市场现状和趋势出发,分析各个岗位人才需求,带你充分了解自身情况,get 到适合自己的 AI 大模型入门学习路线。

从基础的 prompt 工程入手,逐步深入到 Agents,其中更是详细介绍了 LLM 最重要的编程框架 LangChain。最后把微调与预训练进行了对比介绍与分析。

同时课程详细介绍了AI大模型技能图谱知识树,规划属于你自己的大模型学习路线,并且专门提前收集了大家对大模型常见的疑问,集中解答所有疑惑!

在这里插入图片描述

深耕 AI 领域技术专家带你快速入门大模型

跟着行业技术专家免费学习的机会非常难得,相信跟着学习下来能够对大模型有更加深刻的认知和理解,也能真正利用起大模型,从而“弯道超车”,实现职业跃迁!

在这里插入图片描述

【精选AI大模型权威PDF书籍/教程】

精心筛选的经典与前沿并重的电子书和教程合集,包含《深度学习》等一百多本书籍和讲义精要等材料。绝对是深入理解理论、夯实基础的不二之选。

在这里插入图片描述

【AI 大模型面试题 】

除了 AI 入门课程,我还给大家准备了非常全面的**「AI 大模型面试题」,**包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG 面试真题等,帮你在面试大模型工作中更快一步。

【大厂 AI 岗位面经分享(92份)】

图片

【AI 大模型面试真题(102 道)】

图片

【LLMs 面试真题(97 道)】

图片

【640套 AI 大模型行业研究报告】

在这里插入图片描述

【AI大模型完整版学习路线图(2025版)】

明确学习方向,2025年 AI 要学什么,这一张图就够了!

img

👇👇点击下方卡片链接免费领取全部内容👇👇

在这里插入图片描述

抓住AI浪潮,重塑职业未来!

科技行业正处于深刻变革之中。英特尔等巨头近期进行结构性调整,缩减部分传统岗位,同时AI相关技术岗位(尤其是大模型方向)需求激增,已成为不争的事实。具备相关技能的人才在就业市场上正变得炙手可热。

行业趋势洞察:

  • 转型加速: 传统IT岗位面临转型压力,拥抱AI技术成为关键。
  • 人才争夺战: 拥有3-5年经验、扎实AI技术功底和真实项目经验的工程师,在头部大厂及明星AI企业中的薪资竞争力显著提升(部分核心岗位可达较高水平)。
  • 门槛提高: “具备AI项目实操经验”正迅速成为简历筛选的重要标准,预计未来1-2年将成为普遍门槛。

与其观望,不如行动!

面对变革,主动学习、提升技能才是应对之道。掌握AI大模型核心原理、主流应用技术与项目实战经验,是抓住时代机遇、实现职业跃迁的关键一步。

在这里插入图片描述

01 为什么分享这份学习资料?

当前,我国在AI大模型领域的高质量人才供给仍显不足,行业亟需更多有志于此的专业力量加入。

因此,我们决定将这份精心整理的AI大模型学习资料,无偿分享给每一位真心渴望进入这个领域、愿意投入学习的伙伴!

我们希望能为你的学习之路提供一份助力。如果在学习过程中遇到技术问题,也欢迎交流探讨,我们乐于分享所知。

*02 这份资料的价值在哪里?*

专业背书,系统构建:

  • 本资料由我与MoPaaS魔泊云的鲁为民博士共同整理。鲁博士拥有清华大学学士和美国加州理工学院博士学位,在人工智能领域造诣深厚:

    • 在IEEE Transactions等顶级学术期刊及国际会议发表论文超过50篇。
    • 拥有多项中美发明专利。
    • 荣获吴文俊人工智能科学技术奖(中国人工智能领域重要奖项)。
  • 目前,我有幸与鲁博士共同进行人工智能相关研究。

在这里插入图片描述

内容实用,循序渐进:

  • 资料体系化覆盖了从基础概念入门到核心技术进阶的知识点。

  • 包含丰富的视频教程与实战项目案例,强调动手实践能力。

  • 无论你是初探AI领域的新手,还是已有一定技术基础希望深入大模型的学习者,这份资料都能为你提供系统性的学习路径和宝贵的实践参考,助力你提升技术能力,向大模型相关岗位转型发展。

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

抓住机遇,开启你的AI学习之旅!

在这里插入图片描述

利用LangChain实现RAG 通过实际代码例子详细阐述如何实现RAG(检索增强生成) 阅读详情

相关推荐

LangChain入门2 RAG详解

最常见的方法是嵌入每个文档分割的内容,并将这些嵌入插入到矢量数据库(或矢量存储)中。当我们想搜索分割时,我们采用文本搜索查询,嵌入它,并执行某种“相似性”搜索,以识别嵌入与查询嵌入最相似的存储分割。我们将使用LCEL Runnable协议来定义链,使我们能够以透明的方式将组件和函数管道连接在一起,在LangSmith中自动跟踪我们的链,从而获得流式、异步和批量调用。我们想要创建一个简单的应用程序,该应用程序接受用户问题,搜索与该问题相关的文档,将检索到的文档和初始问题传递给模型,并返回答案。

weixin_41870426的博客 3679

LangChain知识库构建与RAG设计

#加载文档import os#总结文档#翻译一下文档#精炼文档,删除除了某个主题或关键词之外的内容,仅保留与主题相关的内容。

Box_clf的博客 4135

用 LangChain 手搓 RAG 系统:从原理到实战

在当今信息爆炸的时代,如何高效地从海量数据中获取有价值的信息并生成准确、自然的回答,成为了人工智能领域的重要课题。检索增强生成(Retrieval-Augmented Generation,RAG)系统应运而生,它结合了信息检索(IR)和自然语言生成(NLG)技术,能够在生成回答时利用外部知识库的信息,显著提高回答的准确性和可靠性。RAG 系统的核心思想是:首先通过检索模块从知识库中查找与用户问题相关的文档或段落,然后将这些检索到的信息输入到生成模型中,生成最终的回答。

shuizhudan223的博客 1330

每天积累一点概念:Langchain 和 RAG

知识需要不断的积累,才能有机会厚积薄发,肚子里面没有干货那是真的不行的,我们一起了解一下AI领域里的Langchain 和 RAG,它们到底是什么呢?

AAI666666的博客 2265

【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节

本文学习 LangChain 中的 数据连接(Retrieval) 模块。该模块提供文档加载、切分,向量存储、检索等操作的封装。最后,结合RAG基本流程、LangChain Prompt模板和输入输出模块,我们将利用LangChain实现RAG的基本流程。

同学小张的博客 5766

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200

修改RK3588的debug串口为115200

Crazydrams的博客 4805

保姆级指南:基于LangChain 搭建 RAG 系统全流

同时课程详细介绍了。

jennycisp的博客 1329

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

RAG框架搭建(基于Langchain+Ollama生成级RAG 聊天机器人)

Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。我不知道你是在问什么年份的信息。Ollama 对硬件要求不高,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。你是一个机器人,使用提供的上下文来回答问题。如果你不知道答案,只需简单地说明你不知道。是一个用于开发由语言模型驱动的应用程序的框架。二季度营收135.07亿美元。首先初始化本地大型语言模型,使用Ollama在本地运行该模型。,下载适用于 Windows 的安装程序。

yuruizai110的博客 1056

国产PHY芯片YT8512H替代LAN8742A的实战指南(STM32F407平台)

本文详细介绍了在STM32F407平台上,使用国产PHY芯片YT8512H替代LAN8742A的完整实战过程。文章深入剖析了硬件设计中的关键信号连接差异(如CRS_DV与RXDV复用)、时钟布线要点,并提供了软件驱动修改、PHY配置及调试排错的系统指南,旨在帮助工程师高效完成国产化替代,规避常见陷阱。

defi6farmer的博客 858

TMS320F280049C 学习笔记4 Led_ex1_blinky 初始化函数及系统时钟

承接上一篇学习笔记,这次开始实际运行例程。本文概述了280049C的第一个实验 Led灯闪烁。同时也总结了系统的初始化函数和时钟配置。

whyorwhnt的专栏 7031

从零开始学 langchain 之搭建最小的 RAG 系统

RAG 可以说是 23 年以来到现在,最为火热的大模型应用技术了,很多人都有了很多经典的研究。而对于新人来说,有些代码十分复杂,导致只看表象并不理解其原理。今天,就利用 langchain 和大家一起搭建一个最简单的 RAG 系统,一起来学习一下吧。

Everly_的博客 1671

Python头歌实验题目(2024版)

武汉理工大学头歌平台实验题目

2401_84152595的博客 2万+

DeepSeek+LangChain:家教式全流程RAG实战指南

ℹ️RAG全称是Retrieval-Augmented Generation(检索增强生成),一句话解释就是:把问题和相应的参考资料一起给大模型,以期望得到效果更好的模型表现。ℹ️LangChain包含用于开发大语言模型应用的各种功能组件,不仅仅是RAG,所以相较于RAGFlow、HayStack等专门为RAG设计的框架来说,功能更为丰富,更“笨重”,学习门槛更高。第一步,环境准备参见requirements.txt。主要Python库:第二步,模型调用这里使用的DeepSeek官方提供的API。

2401_84204207的博客 2598

【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

首先会去调用父类的onCreatePreferences(Bundle savedInstanceState, String rootKey)方法,然后调用addPreferencesFromResource(R.xml.assistant_function)方法(这个方法是父类的)加载二级菜单的xml配置文件,实现创建二级菜单,这个配置文件路径在res/xml/assistant_function.xml。controller:该item的控制器,控制它的内容展示,是否可用,也可以控制它的点击事件等。

镇元子的博客 1595

【从零开始学习SLAM】官方tf教程小海龟跟随程序

ros tf 进行坐标系之间转换的运算和发布

小秋 AI SLAM 入门实战教程 2033

使用LangChain简单搭建自己的RAG知识库

是一种结合了检索和生成的混合式深度学习模型,常用于处理复杂的自然语言处理任务。RAG模型通过将外部知识库中的信息与生成模型结合在一起,可以提供更准确和上下文相关的答案。检索模块:负责从预先建立的知识库中检索与输入问题最相关的文档或信息片段。这通常通过向量检索技术实现,向量检索能够支持语义匹配,而不仅仅是关键词匹配,从而提高了检索的准确性。生成模块:接收检索到的内容并生成最终的自然语言响应。这个模块通常基于大型生成模型(如 GPT-4),能够理解和生成复杂的自然语言。

h1453586413的博客 2251

Altium Designer应用技巧1: 功能模块的复用方法

Altium Designer应用技巧1: 功能模块的复用方法      我们在使用Altium Designer进行电路图设计时,常会遇到功能模块的复用问题,例如我们经常需要将12V以DC-DC的方式转换成5V,这在很多线路板上都会应用到。现在我们普通的做法是,每个板子都重新绘制一遍,像这样DC-DC的电路,很浪费时间。那么如何采用提高工作效率呢?我们可以采取Altium Desi

snmplink的博客 1万+

DeepSeek+LangChain:保姆级全流程RAG实战(从入门到精通),收藏这一篇就够了!

本文介绍了基于LangChain框架实现RAG(检索增强生成)技术的完整流程。首先解释了RAG概念及LangChain特点,然后详细演示了7个步骤:1)环境准备;2)调用DeepSeek API;3)文档加载与分割;4)文本嵌入与向量存储;5)重排优化;6)提示词模板设计;7)构建处理链。文章还提供了大模型学习的四阶段路径:初阶应用(10天)、高阶应用(30天)、模型训练(30天)和商业闭环(20天),涵盖从基础应用到私有化部署的全套技能。最后强调持续学习的重要性,建议读者系统性地掌握AI技术。

Python_cocola的博客 1865

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LangChain RAG系统构建指南:从知识库搭建到生产级部署

检索增强生成(RAG)作为大语言模型应用的核心技术,通过将外部知识库与生成式AI相结合,有效解决了模型在处理专业领域和实时数据时的知识局限问题。其技术原理基于信息检索与文本生成的协同工作,首先从专用知识库中检索相关文档片段,然后将这些上下文信息与用户问题一并提交给LLM进行答案生成。这种架构不仅显著提升了回答的准确性,还大幅降低了模型产生幻觉的风险。在实际工程实践中,RAG系统包含文档加载、文本分割、向量化、向量存储、检索和生成等多个关键环节。以LangChain框架为例,它提供了构建知识库和实现RAG流程

cqwf95925的博客 315

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

从零搭建本地 Dify+RAG 知识库:全流程实战指南​

本教程将带你从零实现本地 Dify+RAG 知识库搭建,涵盖环境部署、模型配置、知识库构建、性能优化全流程,即使零基础也能快速上手。

python1234567_的博客 2150

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 基于DeepSeek手搓一个Rag知识库(手把手,个人电脑也能玩哦)
下一篇: 什么是多模态?多模态大模型综述,看这一篇就够了
爱喝白开水a
博客等级 码龄3年 6793粉丝 763原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值