新网金商网站/快速网站

新网金商网站,快速网站,网站项目建设流程图,wordpress插件介绍目录 前言一.大语言模型(LLM)1. 什么是LLM?2. LLM 的能力与特点 二、增强检索生成(RAG)三. 什么是 LangChain?1. LangChain 的核心功能2. LangChain 的优势3. LangChain 的应用场景4. 总结 四.使用 LangChain 实现基于 PDF 的问答系统 前言 本文将介绍 …

目录

  • 前言
  • 一.大语言模型(LLM)
    • 1. 什么是LLM?
    • 2. LLM 的能力与特点
  • 二、增强检索生成(RAG)
  • 三. 什么是 LangChain?
    • 1. LangChain 的核心功能
    • 2. LangChain 的优势
    • 3. LangChain 的应用场景
    • 4. 总结
  • 四.使用 LangChain 实现基于 PDF 的问答系统


前言

本文将介绍 LLM 和 RAG 的基本概念,并通过一个实际的代码示例,展示如何使用 LangChain 构建一个基于 PDF 文档的问答系统。


提示:以下是本篇文章正文内容,下面案例可供参考

一.大语言模型(LLM)

1. 什么是LLM?

LLM,即大型语言模型(Large Language Model),是一种基于深度学习的自然语言处理模型。它通过海量文本数据的训练,学习语言的统计规律和语义信息,从而能够理解和生成人类语言。近年来,随着计算能力的提升和数据量的爆炸式增长,LLM 取得了突破性进展,例如 OpenAI 的 GPT 系列、Google 的 LaMDA 和 PaLM 等。

2. LLM 的能力与特点

LLM 拥有强大的语言理解和生成能力,其特点主要体现在以下几个方面:

  • 强大的文本生成能力: LLM 能够生成流畅、连贯、语法正确的文本,包括新闻、故事、诗歌、代码等多种形式。例如,GPT-3 可以生成高质量的新闻报道,甚至可以模仿特定作家的写作风格。
  • 广泛的语言理解能力: LLM 能够理解人类语言的语义、语境和情感,并完成问答、翻译、摘要等任务。例如,LaMDA 可以进行开放域对话,并展现出一定的逻辑推理能力。
  • 强大的学习能力: LLM 能够从海量数据中学习,并不断改进其性能。例如,通过 fine-tuning,LLM 可以适应特定领域的任务,例如医疗、法律等。
  • 可扩展性强: LLM 的规模越大,其性能通常也越强。随着计算资源的不断提升,LLM 的潜力也将不断被挖掘。

二、增强检索生成(RAG)

检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合检索和生成的技术,能够从外部知识库中检索相关信息,并将其作为上下文输入到生成模型中。RAG的流程图如下所示。
我将RAG 的核心思想概括为以下三个步骤:

  • 知识准备阶段:先通过嵌入(embedding)模型将文档、图片或其他格式的数据转为向量格式,然后创建向量存储索引,将文本或其他信息与向量对应起来。最后存到外部知识库中。
  • 查询阶段:根据用户的问题,从向量数据库中检索最相关的信息并返回。
  • 生成阶段:将检索到的信息作为上下文,输入到生成(generate)模型中,生成最终的回答。
    RAG 的优势
    动态知识更新:通过检索外部知识库,RAG 可以实时获取最新信息。
    减少幻觉问题:生成模型的回答基于检索到的真实信息,减少了错误生成的可能性。
    扩展性强:可以轻松集成多种数据源(如 PDF、网页、数据库)。RAG示意图

三. 什么是 LangChain?

LangChain 是一个用于构建基于大语言模型(LLM)应用的框架。它提供了一套模块化的工具和抽象层,帮助开发者更高效地构建复杂的 LLM 应用。无论是问答系统、对话机器人,还是自动化任务,LangChain 都能显著简化开发流程。

1. LangChain 的核心功能

LangChain 的核心功能包括:

  • 任务链(Chains):支持将多个任务(如检索、生成、工具调用)串联起来,形成复杂的任务链。提供了多种预定义链(如 RetrievalQA、ConversationalRetrievalChain),简化常见任务的开发。
  • 模型抽象:提供统一的接口,支持多种 LLM 提供商(如 OpenAI、Hugging Face、Anthropic 等)。支持将多个 LLM 调用串联起来,形成复杂的任务链(Chain)。
  • 上下文管理:提供多种记忆模块(如 ConversationBufferMemory、ConversationSummaryMemory),用于管理多轮对话的上下文。自动维护对话历史,确保 LLM 能够基于上下文生成连贯的回答。
  • 检索增强:支持从多种数据源(如 PDF、网页、数据库)加载文档。集成了多种向量数据库(如 FAISS、Pinecone、Weaviate),用于存储和检索文档嵌入。提供了基于向量检索的接口,方便开发者实现检索增强生成(RAG)。
  • 工具集成:支持将外部工具(如搜索引擎、API、数据库)与 LLM 结合,扩展 LLM 的能力。提供了代理框架,允许 LLM 根据任务动态选择工具并执行操作。

综上,LangChain 的特点:

  1. 强大的任务链功能,支持将多个任务串联起来,形成复杂的任务流。例如:RAG和多步推理。
  2. 模块化设计,开发者可以根据需求自由组合。
  3. 多种记忆模块,用于管理对话历史和多轮上下文。
  4. 代理框架,允许 LLM 根据任务动态选择工具并执行操作
  5. 工具集成

2. LangChain 的优势

由Langchain的特点可见,LangChain 的优势主要包括:

  • 简化开发流程:LangChain 提供了丰富的模块化组件,开发者无需从头实现 LLM 的集成、上下文管理、检索增强等功能,可以专注于业务逻辑。
  • 灵活性强:LangChain 支持多种 LLM 提供商、向量数据库和外部工具,开发者可以根据需求灵活选择组件。
  • 扩展性强:LangChain 的模块化设计使得它易于扩展。开发者可以轻松集成新的数据源、工具或任务链。
  • 社区支持:LangChain 拥有活跃的社区和丰富的文档,开发者可以快速上手并解决遇到的问题。

3. LangChain 的应用场景

LangChain的应用场景非常广泛,涵盖了问答系统、对话机器人、数据增强应用和自动化任务等多个领域。无论是基于文档的智能问答、上下文感知的多轮对话,还是结合外部数据源的复杂任务自动化,LangChain都能通过其模块化设计和强大的工具集成能力,帮助开发者快速构建高效、灵活的 LLM 应用。

4. 总结

LangChain 是一个强大的框架,能够显著简化基于 LLM 应用的开发流程。它的模块化设计、灵活性和扩展性使得它成为构建复杂 LLM 应用的理想选择。无论是问答系统、对话机器人,还是自动化任务,LangChain 都能帮助你快速实现目标。

四.使用 LangChain 实现基于 PDF 的问答系统

前提是你已经安装好了langchain的包

from langchain.chains import RetrievalQA
from langchain_ollama import OllamaLLM
from langchain_ollama import OllamaEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.prompts import PromptTemplateclass PDFQASystem:def __init__(self, pdf_path: str):"""初始化 PDF 问答系统。"""# 初始化 LLM 和嵌入模型self.llm = OllamaLLM(model="qwen2.5:7b")self.embeddings = OllamaEmbeddings(model="nomic-embed-text")# 加载 PDF 文件并生成嵌入向量self.vector_store = self.load_pdf_and_generate_embeddings(pdf_path)# 初始化提示模板self.prompt_template = PromptTemplate(input_variables=["context", "question"],template=("你是一个助手,帮助用户解答问题。\n""请根据以下背景资料回答问题:\n""背景资料:\n{context}\n\n""用户的问题:\n{question}"))# 初始化检索增强生成链self.qa_chain = RetrievalQA.from_chain_type(llm=self.llm,chain_type="stuff",retriever=self.vector_store.as_retriever(),chain_type_kwargs={"prompt": self.prompt_template})def load_pdf_and_generate_embeddings(self, pdf_path: str):"""加载 PDF 文件并生成嵌入向量。"""# 加载 PDF 文件loader = PyPDFLoader(pdf_path)documents = loader.load()# 将文档拆分为小块text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)texts = text_splitter.split_documents(documents)# 生成嵌入向量并构建 FAISS 索引vector_store = FAISS.from_documents(texts, self.embeddings)return vector_storedef ask(self, query: str) -> str:"""接收用户的问题,检索相关文本并生成答案。"""result = self.qa_chain.invoke({"query": query})return result["result"]# 主程序
if __name__ == "__main__":pdf_path = "E:/dcit/files/贷款.pdf"qa_system = PDFQASystem(pdf_path)# 循环对话while True:query = input("\n请输入您的问题(输入 'exit' 退出):")if query.lower() in ["exit", "quit"]:print("对话结束。")breakresult = qa_system.ask(query)print(f"问题:{query}")print(f"答案:{result}")

PDF内容:

银行贷款的五级分类:
一、 正常贷款: 借款人能够履行合同,一直能正常还本付息,不存在任何影响贷款本息及时全额偿还的消极因素,银行对借款人按时足额偿还贷款本息有充分把握。 贷款损失的概率为 0。
二、 关注贷款:尽管借款人有能力偿还贷款本息,但存在一些可能对偿还产生不利影响的因 素,如这些因素继续下去,借款人的偿还能力受到影响,贷款损失的概率不会超过 5%。
三、 次级贷款: 借款人的还款能力出现明显问题,完全依靠其正常营业收入无法足额偿还贷 款本息,需要通过处分资产或对外融资乃至执行抵押担保来还款付息。贷款损失的概率在 30%-50%。
四、 可疑贷款: 借款人无法足额偿还贷款本息,即使执行抵押或担保,也肯定要造成一部分损失,只是因为存在借款人重组、兼并、合并、抵押物处理和未决诉讼等待定因素, 损失金 额的多少还不能确定,贷款损失的概率在50%-75%之间。
五、 损失贷款: 指借款人已无偿还本息的可能,无论采取什么措施和履行什么程序,贷款都注定要损失了,或者虽然能收回极少部分,但其价值也是微乎其微,从银行的角度看,也没有意义和必要再将其作为银行资产在账目上保留下来,对于这类贷款在履行了必要的法律程 序之后应立即予以注销,其贷款损失的概率在75%-100%。
银行贷款的流程:
一、贷款申请借款人需要向银行提出借款申请,并提交相关资料。这些资料通常包括有效的身份证明(如身份证)、户口本、婚姻状况证明(如结婚证)、收入证明以及银行流水等。这些资料有助于银行评估借款人的信用状况和还款能力。
二、贷款调查银行在收到借款申请后,会对借款人的合法性、安全性、盈利性等情况进行调查。这一步骤主要是为了进一步核实借款人提供的资料,并评估贷款的风险。
三、贷款审批银行会根据审贷分离、分级审批的贷款管理制度进行贷款审批。在此过程中,银行会综合考虑借款人的信用记录、还款能力、担保情况等因素,决定是否批准贷款申请以及贷款的额度、期限和利率等。
四、签订合同若银行批准了贷款申请,下一步便是与银行签订借款合同。合同会详细列明贷款金额、期限、利率、还款方式等关键条款。签订合同是双方达成法律约束的重要环节。
五、贷款发放一旦合同签署完毕,银行会根据约定将贷款金额发放到借款人指定的账户。这标志着贷款流程的正式完成,借款人可以开始使用贷款资金。
六、贷后检查与贷款归还在贷款发放后,银行会定期对借款人执行借款合同情况及经营情况进行追踪调查和检查,以确保贷款按照合同规定使用并按时归还。借款人需要按照约定的还款计划定期偿还本金和利息。如果借款人需要展期,应在借款到期日之前向银行提出贷款延 期申请,由银行决定是否批准延期。
综上所述,银行贷款的具体流程包括贷款申请、贷款调查、贷款审批、签订合同、贷款发放
以及贷后检查与贷款归还等步骤。在整个流程中,借款人需要配合银行提供必要的资料和信 息,并确保按照合同约定使用贷款并按时还款

运行结果:
在这里插入图片描述
以上就是全部内容了,欢迎各位评论区提问。最后祝各位小伙伴学习顺利,毕业都能进大厂~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群核科技持续亏损近18亿:营销费用偏高,市场份额优势面临挑战

《港湾商业观察》施子夫 2025年开年,DeepSeek的爆火让大众将目光聚焦到了“杭州六小龙”。其中,杭州群核信息技术有限公司(以下简称,群核科技)因系“六小龙”中首家启动上市的公司而被外界更多关注。 在此次递表港交…

java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp

演示: 微信小程序:嘎嘎快充 http://server.s34.cn:1888/ 系统管理员 admin/123456 运营管理员 yyadmin/Yyadmin2024 运营商 operator/operator2024 系统特色: 多商户、汽车单车一体、互联互通、移动管理端(开发中) 另…

音视频学习(三十):fmp4

FMP4(Fragmented MP4)是 MP4(MPEG-4 Part 14)的扩展版本,它支持流式传输,并被广泛应用于DASH(Dynamic Adaptive Streaming over HTTP)和HLS(HTTP Live Streaming&#xf…

26考研——图_图的存储(6)

408答疑 文章目录 二、图的存储图的存储相关概念邻接矩阵存储方式邻接矩阵的定义顶点的度计算邻接矩阵的特点邻接矩阵的局限性 应用场景邻接矩阵的幂次意义(了解即可) 邻接表存储方式邻接表定义邻接表结构邻接表的特点 邻接矩阵和邻接表的适用性差异十字…

Thinkphp(TP)框架漏洞攻略

1.环境搭建 vulhub/thinkphp/5-rce docker-compose up -d 2.访问靶场 远程命令执行: ? sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1] []whoami 远程代码执行: ? s/Index/\think\app/invokefunc…

Unity 使用 Protobuf(Pb2)二进制数据全流程工具详解

前言 在Unity游戏开发中,高效、快速、安全地读取配置数据是一项重要需求。本文介绍一种完整的解决方案——使用Protobuf二进制格式(Pb2)存储和读取游戏数据,并详细分享实现全流程的Unity工具。 一、技术流程概览 实现Unity读取…

stm32-IIC

i^2c,iiCBus,集成电路总线,同步串行半双工通信总线方式 sck:时钟同步信号 SDA:发送数据 GND:接地 通信对象:芯片与芯片 主从应答方式: SDA:数据总线 SCL:时钟总线 在硬件设计中: 上拉电阻&#…

`chromadb` 是什么

chromadb 是什么 chromadb 是一个开源的向量数据库,它专门用于存储、索引和查询向量数据。在处理自然语言处理(NLP)、计算机视觉等领域的任务时,通常会将文本、图像等数据转换为向量表示,而 chromadb 可以高效地管理这些向量,帮助开发者快速找到与查询向量最相似的向量数…

Centos操作系统安装及优化

Centos操作系统安装及优化 零、环境概述 主机名 centos版本 cpu 内存 Vmware版本 ip地址 test CentOS Linux release 7.6.1810 (Core) 2C 2G 15.5.1 10.0.0.10 一、介质下载 1、7.6版本下载 CentOS7.6标准版下载链接: https://archive.kernel.org/centos-vault/7.6.1810/i…

mac上安装nvm及nvm的基本语法使用!!

种一棵树,最好是十年前,其次是现在!想要改变,从此刻开始,一切都不晚! 目录 nvm是什么?前提条件:安装homebrew如果系统已经有node版本:在mac上安装nvm:用nvm安…

Kubernetes(k8s)-Pod亲和性(Affinity)和反亲和性(Anti-affinity)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是K…

ESP32-C3物联网方案,智能设备创新升级,无线交互控制通信应用

在物联网技术迅猛发展的今天,各类智能设备如雨后春笋般涌现,深度融入我们生活与工作的各个角落,物联网正以一种前所未有的速度改变着我们的世界。 想象一下,清晨,当第一缕阳光洒进房间,智能窗帘自动缓缓拉…

Python自动化测试 之 DrissionPage 的下载、安装、基本使用详解

Python自动化测试 之 DrissionPage 使用详解 🏡前言:一、☀️DrissionPage的基本概述二、 🗺️环境安装2.1 ✅️️运行环境2.2 ✅️️一键安装 三、🗺️快速入门3.1 页面类🛰️ChromiumPage🛫 SessionPage&…

【操作系统安全】任务3:Linux 网络安全实战命令手册

目录 一、基础网络信息获取 1. 网络接口配置 2. 路由表管理 3. 服务端口监控 二、网络监控与分析 1. 实时流量监控 2. 数据包捕获 3. 网络协议分析 三、渗透测试工具集 1. 端口扫描 2. 漏洞利用 3. 密码破解 四、日志审计与分析 1. 系统日志处理 2. 入侵检测 3…

社群经济4.0时代:开源链动模式与AI技术驱动的电商生态重构

摘要:在Web3.0技术浪潮与私域流量红利的双重驱动下,电商行业正经历从"流量收割"到"用户深耕"的范式转变。本文基于社群经济理论框架,结合"开源链动21模式"、AI智能名片、S2B2C商城小程序源码等创新工具&#x…

从技术架构和生态考虑,不是单纯的配置优化,还有哪些方式可以提高spark的计算性能

从技术架构和生态系统层面提升Spark的计算性能,可采取以下核心策略: 一、计算模型重构与执行引擎升级 1. 弹性分布式数据集(RDD)的血统优化 通过RDD的Lineage(血统)机制实现容错时,采用增量式…

AI对软件工程(software engineering)的影响在哪些方面?

AI对软件工程(software engineering)的影响是全方位且深远的,它不仅改变了传统开发流程,还重新定义了工程师的角色和软件系统的构建方式。以下是AI影响软件工程的核心维度: 一、开发流程的智能化重构 需求工程革命 • …

数据库取证分析

目录 一.多表关联 1.一对多联结 2.子查询 二.数据库示例分析 1.多表关联 三.选择SQL分析的原因 四.数据库概述 五.SQL语言 一.多表关联 1.一对多联结 2.子查询 二.数据库示例分析 1.多表关联 三.选择SQL分析的原因 四.数据库概述 五.SQL语言 1.select 字段

Docker 部署 Graylog 日志管理系统

Docker 部署 Graylog 日志管理系统 前言一、准备工作二、Docker Compose 配置三、启动 Graylog 服务四、访问 Graylog Web 界面总结 前言 Graylog 是一个开源的日志管理平台,专为实时日志收集、分析和可视化设计。它支持强大的搜索功能,并且与 Elastics…

Matlab2024a免费版下载教程

Matlab是一个高性能的数学计算与仿真软件,广泛应用于科学计算、数据分析、算法开发以及工程绘图等多个领域。它提供了强大的矩阵运算能力、丰富的内置函数库以及灵活的编程环境,使得用户能够高效地解决复杂的数学问题。本文,我将为大家详细介…