当前位置: 首页 > article >正文

LangChian实现最小可运行的 RAG示例解析

下面代码是一个可用的 LangChain 阿里云通义千问 RAG 最小示例。其逻辑非常清晰就是加载 → 切分 → 向量化 → 检索 → QA。https://item.jd.com/15261772.html# -*- coding: utf-8 -*- Created on Thu Jul 24 21:03:45 2025 author: liguo from langchain_community.document_loaders import TextLoader from langchain_community.indexes import VectorstoreIndexCreator from langchain_text_splitters import CharacterTextSplitter from langchain_community.embeddings import DashScopeEmbeddings # 替换 QwenEmbeddings from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain_community.llms import Tongyi # Qwen import os # 设置阿里云 DashScope API Key必须 api_keyos.getenv(DASHSCOPE_API_KEY) # 替换为你自己的 API Key def basic_rag_flow(): # 1. 加载文档 —— 修复编码问题 loader TextLoader(example.txt, encodingutf-8) documents loader.load() # 2. 分割文档 text_splitter CharacterTextSplitter(chunk_size1000, chunk_overlap0) texts text_splitter.split_documents(documents) # 3. 创建嵌入和向量存储使用通义千问的 Embedding 模型 embeddings DashScopeEmbeddings( modeltext-embedding-v1, # 阿里云提供的嵌入模型 dashscope_api_keyos.environ[DASHSCOPE_API_KEY] ) vectorstore Chroma.from_documents(texts, embeddings) # 4. 构建检索器 retriever vectorstore.as_retriever() # 5. 创建RAG链使用通义千问大模型 llm Tongyi( model_nameqwen-max, # 也可以用 qwen-plus, qwen-turbo 等 api_keyapi_key, temperature0.1 ) qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue # 可选返回参考文档 ) # 6. 执行查询并输出结果 query 请总结文档的主要内容 result qa_chain.invoke({query: query}) # 注意新版推荐用 invoke print(问题, query) print(回答, result[result]) # 可选打印参考文档 # for doc in result[source_documents]: # print(参考文档片段, doc.page_content[:200], ...) return qa_chain # 调用函数以执行流程 if __name__ __main__: basic_rag_flow()下面我按模块 按流程对你给出的代码做一次完整解析并明确说明这个示例到底在演示什么​每一步解决了什么问题一、这个示例整体在演示什么✅这是一个“最小可运行的 RAG检索增强生成示例”它演示了如何用LangChain 阿里云通义千问Qwen​ 完成“基于本地文档内容回答问题”也就是 本地文本文件⬇ 向量检索⬇ 大模型生成答案这正是RAG 的核心流程。二、RAG 的核心思想先看这个RAG Retrieval-Augmented Generation用户问题 ↓ 从文档中检索相关内容 ↓ 把相关内容交给大模型 ↓ 生成基于事实的回答✅ 目的减少大模型幻觉利用私有数据不依赖模型训练三、代码结构总览basic_rag_flow() ├─ 1. 加载文档 ├─ 2. 切分文档 ├─ 3. 向量化 存入向量库 ├─ 4. 构建检索器 ├─ 5. 构建 RAG 问答链 └─ 6. 执行查询四、逐段代码解析✅ 1️⃣ 导入依赖基础设施from langchain_community.document_loaders import TextLoader from langchain_community.indexes import VectorstoreIndexCreator from langchain_text_splitters import CharacterTextSplitter from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain_community.llms import Tongyi 这些模块分别对应模块作用TextLoader读取本地文本CharacterTextSplitter文本切分成块DashScopeEmbeddings阿里云向量模型Chroma向量数据库RetrievalQARAG 问答链Tongyi通义千问 LLM✅ 2️⃣ 加载文档数据来源loader TextLoader(example.txt, encodingutf-8) documents loader.load() 这一步在做什么从本地加载example.txt返回一个Document对象列表每个 Document 包含page_content 文本内容 metadata {source: example.txt}✅ 这是RAG 的数据入口✅ 3️⃣ 文本切分非常关键text_splitter CharacterTextSplitter( chunk_size1000, chunk_overlap0 ) texts text_splitter.split_documents(documents) 为什么一定要切分Embedding 模型有长度限制向量检索更适合“小块语义”LLM 上下文有限 切分后变成texts [ Document(...), Document(...), Document(...) ]每一段都是一个可独立检索的语义单元✅ 4️⃣ 向量化 向量库检索基础embeddings DashScopeEmbeddings( modeltext-embedding-v1, dashscope_api_keyos.environ[DASHSCOPE_API_KEY] ) 这一步在做什么把文本 → 向量数字使用的是阿里云的text-embedding-v1vectorstore Chroma.from_documents(texts, embeddings) Chroma 做了什么把所有文本块存成向量建立索引支持相似度搜索✅ 到这里你已经拥有了一个“可检索的知识库”✅ 5️⃣ 构建检索器Retrieverretriever vectorstore.as_retriever() Retriever 的作用给定一个问题 → 返回最相关的文档片段等价于问题 → 向量化 → 相似度匹配 → Top-K 文档✅ 6️⃣ 构建 RAG 问答链核心llm Tongyi( model_nameqwen-max, api_keyapi_key, temperature0.1 ) LLM 负责理解问题阅读检索到的文档生成最终答案qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue )RetrievalQA做了什么自动完成这个流程用户输入问题 ↓ Retriever 找相关文档 ↓ 把问题和文档拼在一起 ↓ LLM 生成答案chain_typestuff的含义把所有检索到的文档直接塞进 prompt简单、直观适合文档不太长的场景✅ 7️⃣ 执行查询query 请总结文档的主要内容 result qa_chain.invoke({query: query}) 实际发生了什么问题 → embedding去 Chroma 里找相关内容拼接成类似这样的 prompt根据以下内容回答问题 [文档片段1] [文档片段2] 问题请总结文档的主要内容Qwen 生成答案五、这个示例“演示了什么能力”✅ 它不是一个玩具而是一个标准 RAG 模板展示了能力是否演示私有数据接入✅文本向量化✅向量检索✅大模型增强生成✅LangChain 标准用法✅阿里云通义千问集成✅六、一句话总结这个示例演示了如何使用 LangChain 阿里云 DashScope构建一个基于本地文档的检索增强生成RAG问答系统。

相关文章:

LangChian实现最小可运行的 RAG示例解析

下面代码是一个可用的 LangChain 阿里云通义千问 RAG 最小示例。其逻辑非常清晰,就是:加载 → 切分 → 向量化 → 检索 → QA。 https://item.jd.com/15261772.html # -*- coding: utf-8 -*- """ Created on Thu Jul 24 21:03:45 2025…...

基于MCP协议构建Jira智能助手:连接AI与项目管理的实践指南

1. 项目概述:连接Jira与AI的桥梁最近在折腾AI应用开发,特别是想把手头的一些项目管理流程自动化。我发现很多团队都在用Jira管理任务,但每次想通过AI助手(比如Claude、Cursor)查询项目进度、创建Issue或者更新状态时&a…...

Clawbox:模块化爬虫框架的设计原理与工程实践

1. 项目概述:一个为开发者打造的“数据抓取工具箱”最近在GitHub上闲逛,发现了一个挺有意思的项目,叫coderkk1992/clawbox。光看名字,你大概就能猜到它的核心功能——“Claw”(爪子)和“Box”(盒…...

如何实现魔兽争霸3终极兼容性修复:WarcraftHelper完整技术指南

如何实现魔兽争霸3终极兼容性修复:WarcraftHelper完整技术指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为经典的即时战…...

为内部知识问答系统集成Taotoken实现多模型答案融合

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识问答系统集成Taotoken实现多模型答案融合 在构建企业级内部知识库问答系统时,一个核心挑战是如何确保回答的…...

systemd Service 详细说明

systemd Service 详细说明 什么是 systemd? systemd 是 Linux 系统的初始化系统和服务管理器,负责在系统启动时启动和管理各种服务(后台进程)。 为什么要使用服务管理器? 想象一下,您有一个机器人控制程序需要一直运行: 如果直接运行 python3 robot.py,关闭终端程序…...

Windows Cleaner:5步快速解决C盘爆红的免费系统优化工具

Windows Cleaner:5步快速解决C盘爆红的免费系统优化工具 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘变红、电脑卡顿、运行缓慢的…...

HarmonyOS 6学习:ContactsKit参数陷阱与401错误排查实战

从"神秘401"到"参数真相":一次联系人选择器的救赎之旅最近在开发一个HarmonyOS 6的社交应用时,我遇到了一个让人抓狂的问题:用户点击"选择联系人"按钮后,界面一片空白,控制台只抛出一个…...

如何在5分钟内完成Windows与Office永久激活:KMS智能激活终极指南

如何在5分钟内完成Windows与Office永久激活:KMS智能激活终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档…...

人们普遍认为跟风创业更容易成功,编程统计跟风项目与原创项目盈亏数据,小众冷门赛道创业成功率远超热门赛道。

一、实际应用场景描述在创业研究与商业决策支持系统中,常见一类问题:“跟风创业(热门赛道)是否真的比原创或冷门赛道更容易成功?”许多创业者、投资人、政策机构在制定决策时,倾向于参考“热门赛道”的历史…...

传统认为考试分数越高综合能力越强,编程统计分数,社会实践,职场表现数据,卷面成绩无法衡量社会生存能力。

一、实际应用场景描述 在高校商务智能(Business Intelligence, BI)课程中,常需分析学生“卷面成绩”与“综合能力”之间的关系。 现实中,学校往往以考试分数作为评价学生的核心指标,而企业在招聘和用人时,更…...

vCenter Server证书过期别慌!保姆级排查与修复指南(含STS证书检查脚本)

vCenter证书危机应对手册:从紧急诊断到自动化修复全流程 清晨7点,当你像往常一样尝试登录vSphere Client时,浏览器突然弹出鲜红的证书警告页面——这个场景足以让任何VMware管理员心跳加速。证书过期问题看似简单,实则可能引发连锁…...

告别日志混乱:用Kiwi Syslog Daemon的Rules和Filters,给Linux/Windows服务器日志自动分类归档

告别日志混乱:用Kiwi Syslog Daemon的Rules和Filters实现智能日志管理 在混合IT架构中,Windows和Linux服务器每天产生海量日志数据,关键错误信息往往被淹没在无关紧要的日志洪流中。Kiwi Syslog Daemon作为一款专业的日志管理工具&#xff0c…...

抖音内容批量下载技术实现:基于开源工具的高效自动化方案

抖音内容批量下载技术实现:基于开源工具的高效自动化方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

ZenlessZoneZero-OneDragon技术深度解析:数据驱动的自动化战斗引擎架构

ZenlessZoneZero-OneDragon技术深度解析:数据驱动的自动化战斗引擎架构 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDrag…...

如何高效构建金融数据API:AKShare实战指南与架构深度解析

如何高效构建金融数据API:AKShare实战指南与架构深度解析 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks…...

FDA Data MCP:基于MCP协议为AI智能体构建监管数据接口的实践指南

1. 项目概述:FDA Data MCP,一个为AI智能体赋能的监管数据接口如果你在制药、生物技术或医疗器械行业工作,无论是负责合规、质量保证,还是供应链管理,你一定对“FDA数据”这四个字又爱又恨。爱的是,它是评估…...

Deno Deploy部署Azure OpenAI代理:零成本解决API兼容问题

1. 项目概述:在Deno Deploy上搭建一个免费的Azure OpenAI代理如果你正在折腾各种开源的ChatGPT WebUI项目,比如ChatGPT-Next-Web、Lobe Chat,或者想在自己的应用里集成GPT能力,大概率会遇到一个头疼的问题:这些项目默认…...

基于MCP与Cloudflare Workers构建AI编程助手的长期记忆系统

1. 项目概述 如果你和我一样,每天都要和 Claude、ChatGPT、Cursor 这些 AI 编程助手打交道,那你一定也受够了它们“金鱼般”的记忆力。昨天刚花半小时解释清楚的项目架构,今天再问,它又得从头开始理解;上周踩过的一个…...

OpenClaw安全工具箱:个人AI代理的实战安全防护指南

1. 项目概述:为个人OpenClaw用户打造的全栈安全工具箱如果你正在运行自己的OpenClaw智能体,无论是为了个人自动化还是小团队协作,那么“安全”这个词可能已经从你脑海里的一个模糊概念,变成了一个越来越具体的担忧。你或许已经听说…...

保姆级教程:在Linux上动手调试PCIe热插拔(基于pciehp驱动源码)

深入Linux PCIe热插拔:从源码到实战的调试指南 1. 环境准备与工具链搭建 调试PCIe热插拔功能需要特定的硬件和软件环境。首先确保你的系统满足以下条件: 硬件要求: 支持PCIe热插拔的主板(通常服务器级硬件支持更完善&#xff09…...

如何用Adafruit NeoPixel库点亮你的创意世界:从零开始掌握智能LED控制

如何用Adafruit NeoPixel库点亮你的创意世界:从零开始掌握智能LED控制 【免费下载链接】Adafruit_NeoPixel Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.) 项目地址: https://gitcode.com/gh_mirrors/ad/Adafruit_NeoPixel …...

AI写专著全攻略:从构思到完稿,工具助你搞定20万字专著!

学术专著撰写挑战与AI工具助力 学术专著的核心在于逻辑的严密性,而逻辑推理常常是写作过程中最容易出错的环节。编写专著需要从核心观点出发,进行系统性的论证,不仅要全面阐述每一个论点,还需应对各种学派的争议,确保…...

抖音批量下载技术深度解析:如何通过智能调度系统解决内容获取效率瓶颈

抖音批量下载技术深度解析:如何通过智能调度系统解决内容获取效率瓶颈 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser…...

RK3568平台上 rknn-Toolkit2 rknn build()函数介绍

各专栏更新如下👇 大模型初探分享零基础AI学习经历 OAI-5G开源通信平台实践 OpenWRT常见问题分析 5G CPE 组网技术分享 Linux音视频采集及视频推拉流应用实践详解 得力工具提升工作效率 大模型的量化版本可以移植部署到边缘设备上实现特点场景应用,…...

ColabFold终极指南:5个步骤实现零基础蛋白质结构预测

ColabFold终极指南:5个步骤实现零基础蛋白质结构预测 【免费下载链接】ColabFold Making Protein folding accessible to all! 项目地址: https://gitcode.com/gh_mirrors/co/ColabFold ColabFold是一款革命性的开源AI生物信息学工具,它将复杂的蛋…...

告别命令行:用VNC+树莓派打造你的轻量级家庭服务器(Raspberry Pi OS Bullseye)

告别命令行:用VNC树莓派打造你的轻量级家庭服务器(Raspberry Pi OS Bullseye) 将树莓派改造成24小时运行的家庭服务器,是许多技术爱好者的共同选择。无论是作为下载机、智能家居中枢还是媒体服务器,这个小巧的设备都能…...

猫抓浏览器扩展:3分钟掌握网页媒体资源智能提取的终极指南

猫抓浏览器扩展:3分钟掌握网页媒体资源智能提取的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在信息爆炸的今天&#xff0…...

Arduino编程避坑指南:别再混淆 i++ 和 ++i 了,一个例子讲透运算符优先级

Arduino编程避坑指南:别再混淆 i 和 i 了,一个例子讲透运算符优先级 那天深夜,我的机械臂项目突然开始抽搐——本该平滑移动的关节突然像发疯似的来回抖动。检查了电机驱动、传感器接线后,最终发现问题出在一行看似无害的代码&…...

AKShare终极指南:如何用5行Python代码获取全市场金融数据?

AKShare终极指南:如何用5行Python代码获取全市场金融数据? 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh…...