尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
15天学会AI应用开发(二十)使用LangChain实现RAG检索功能
之前的文章《15天学会AI应用开发十三上下文与RAG的阶段性总结》概述了检索RAG知识库的主要步骤现在采用LangChain将其改造为更智能的本地RAG系统。接下来基于LangChain框架与Chroma向量数据库结合离线的文本嵌入模型和大语言模型从零开始搭建本地的RAG检索系统。一、下载RAG需要的离线大模型首先下载离线的大语言模型比如在命令行窗口执行下面命令即可下载国产大模型qwen2:1.5bollama pull qwen2:1.5b接着下载构建向量数据库需要的文本嵌入模型比如在命令行窗口执行下面命令即可下载国产嵌入大模型bge-m3ollama pull bge-m3等待两个大模型下载完毕在命令行窗口执行下面命令即可启动Ollama并加载离线大模型ollama serve二、安装RAG需要的LangChain包使用LangChain实现RAG检索功能用到了多个LangChain包下面分别说明需要安装的LangChain包及其用途。首先在命令行窗口执行下面命令即可安装LangChain及其用到的Ollama插件pip install langchain langchain-core langchain-ollama其次执行下面命令安装Splitters插件用于对文档内容切分文本块pip install langchain-text-splitters再次执行下面命令安装Chroma插件用于让LangChain操作向量数据库Chromapip install langchain-chroma chromadb还要执行下面命令安装LangChain的社区包用于引入PyPDFLoader以便加载PDF文档pip install langchain-community三、编写RAG的检索实现代码基于LangChain与Chroma实现RAG功能的时候主要经过四个步骤解析PDF文档、创建RAG检索器、构建提示词模板、启动RAG链执行问答操作依次说明如下1、解析PDF文档首先准备好待解析的PDF文档比如test.pdf放在python工程目录下接着使用PyPDFLoader加载PDF文档再引入RecursiveCharacterTextSplitter切分文本块。对应的Python代码及其导包语句如下# PDF文档加载 from langchain_community.document_loaders import PyPDFLoader # 文本分割工具 from langchain_text_splitters import RecursiveCharacterTextSplitter # 加载PDF文档 loader PyPDFLoader(./test.pdf) docs loader.load() # 切分文本块 text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap80, separators[\n\n, \n, 。, , ] ) split_docs text_splitter.split_documents(docs)2、创建RAG检索器首先使用OllamaEmbeddings加载离线的文本嵌入模型bge-m3接着引入Chroma从文档内容构建向量数据库注意数据库文件保存在persist_directory参数指定的chroma_db目录然后调用数据库实例的as_retriever方法创建RAG检索器该方法的search_kwargs结构可指定最多引用几个文档块。对应的Python代码及其导包语句如下# 文本嵌入模型 from langchain_ollama import OllamaEmbeddings # 向量数据库 from langchain_chroma import Chroma # 引用离线的文本嵌入模型bge-m3 embedding OllamaEmbeddings( modelbge-m3 ) # 从文档内容构建向量数据库数据库文件保存在chroma_db目录 vectordb Chroma.from_documents( documentssplit_docs, embeddingembedding, persist_directory./chroma_db ) # 创建RAG检索器最多引用三个文档块 retriever vectordb.as_retriever( search_kwargs{ k: 3 } )3、构建提示词模板首先编写字符串形式的提示词内容说清楚要让AI做什么事、返回什么样的回答关键要说明上下文来自context字段且用户问题来自question字段。然后调用PromptTemplate的from_template方法从提示词文字构建提示词模板。对应的Python代码及其导包语句如下from langchain_core.prompts import PromptTemplate # 自定义提示词。很重要必须提示context和question这样AI才会有效回答 prompt_template 你是专业文档问答助手只能根据提供的上下文回答问题禁止编造信息。 上下文 {context} 用户问题 {question} 请提供包含主语、谓语、宾语在内的准确、简洁的一句话回答50字以内。 # 从提示词文字构建提示词模板 prompt PromptTemplate.from_template(prompt_template)4、启动RAG链执行问答操作首先使用ChatOllama加载离线的大语言模型qwen2:1.5b接着封装RAG执行链注意输入第三步提示词要求的context和question两个参数其中context字段依次输入第二步的RAG检索器和拼接文档需要的format_docs函数。然后调用RAG执行链的invoke方法根据输入的问题获取RAG检索返回的答案。对应的Python代码及其导包语句如下from langchain_core.runnables import RunnablePassthrough, RunnableLambda from langchain_core.output_parsers import StrOutputParser from langchain_ollama import ChatOllama # 工具函数拼接检索到的多段文档 def format_docs(docs): return \n\n.join(doc.page_content for doc in docs) # 加载离线的大语言模型qwen2:1.5b llm ChatOllama(modelqwen2:1.5b) # 改成你本地的模型 # 构建RAG执行链输入context和question两个参数 rag_chain ( { context: retriever | RunnableLambda(format_docs), question: RunnablePassthrough() } | prompt | llm | StrOutputParser() ) # 令RAG链执行问答操作 query 公共收益是什么 answer rag_chain.invoke(query) print( AI回答 \n, answer)运行上面整合后的Python代码根据提示输入问题内容“公共收益是什么”输出日志结果如下 你的问题 公共收益是什么 AI回答 公共收益是指利用住宅小区业主共有部分以外的共用设施设备开展经营活动而产生的收益。由日志信息发现AI应用能够返回PDF文档中的正确答案。可见引入Chroma向量数据库之后LangChain成功实现了来自PDF文档的RAG知识检索功能。本系列的AI应用开发文章目录为《15天学会AI应用开发全目录零基础小白零Token消耗》。
RELATED

相关推荐

3D LUT Color Conversion之查找表索引解析

3D LUT Color Conversion之查找表索引解析

目录 1 硬件基础规格定义 1.1 维度标准化定义 1.2 多维网格转一维索引通用数学公式 2 公式分项物理含义拆解 2.1 第一项 R:R 轴最小粒度偏移 2.2 第二项 9G:G 轴单行跨度权重 2.3 第三项 81B:B 轴整层 RG 平面跨度权重 3 四面体顶点偏…

📅 2026/11/11 19:54:18
实时语音翻译中的证据驱动术语适应技术解析

实时语音翻译中的证据驱动术语适应技术解析

在实时语音翻译(Simultaneous Speech Translation, SimulST)系统中,术语一致性是影响专业领域翻译质量的关键因素。当翻译涉及医疗、法律、技术等专业内容时,同一个术语在原文和译文中的表达必须严格对应,否则会引发歧…

📅 2026/11/1 9:30:16
SVM支持向量机原理与实战应用指南

SVM支持向量机原理与实战应用指南

1. SVM支持向量机概述 支持向量机(Support Vector Machine)作为机器学习领域的经典算法,自上世纪90年代由Vapnik提出以来,凭借其出色的分类性能在小样本、非线性及高维数据场景中展现出独特优势。我第一次接触SVM是在研究生阶段的模式识别课程&#xff0…

📅 2026/10/3 16:24:00
MORE NEWS

更多资讯

📰

海南电工证含金量多少怎么考?考前押题帮你避开报名陷阱

海南电工证含金量多少怎么考?考前押题帮你避开报名陷阱 你是不是也担心不知道哪里报名?怕被中介坑?别慌,海南电工证虽然含金量高,但只要选对渠道,流程并不复杂。本文就从 海南电工证含金量多少 这个核心问题出发,结合 考前押题…

📰

高低压电工证是几个证 怎么报名才能快速上岗

高低压电工证是几个证 怎么报名才能快速上岗 现在找工作难,尤其是没有特种作业证的工人,连面试机会都少得可怜。特别是像你这种在开封从事建筑工作的朋友, 高低压电工证是几个证…

📰

电工证网上机械复审延期怎么办理 官方回应来了

电工证网上机械复审延期怎么办理 官方回应来了 证书过期了不知道怎么复审延期,这种焦虑你不是一个人。最近不少南阳卧龙区项目现场管理员来问我, 电工证网上机械…

📰

高级电工证如何查编号真实经历告诉你怎么查和怎么用

高级电工证如何查编号真实经历告诉你怎么查和怎么用 你是不是也和我一样,学历不高,担心自己报不了名?去年我就是带着这样的想法,硬着头皮去考了高级电工证。结果不仅考过了,现在工资还涨了30%。今天我就来跟你聊聊, 高级电工证如何查编号…

📰

考电工证体检哪方面通过率揭秘:郑州金水区劳务班组负责人必看的避坑指南

考电工证体检哪方面通过率揭秘:郑州金水区劳务班组负责人必看的避坑指南 怕考不过白交培训费?别再踩坑了,考电工证体检哪方面、报名流程、通过率揭秘,这些事搞明白了,你才能真正把证拿到手,别让培训费打了水漂。…

📰

初级电工证厦门哪里考千万别踩坑

初级电工证厦门哪里考千万别踩坑 实操考试心里没底怕挂科,很多准备考初级电工证的朋友都担心这个点。尤其是在厦门报考初级电工证,培训机构五花八门,选错了不仅浪费钱,还可能影响考试结果。所以今天我从一个漯河培训机构学员的角度出发,手把手带你搞懂【…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬