【必看】LangChain+RAG构建智能客服系统,附完整代码和部署教程,建议收藏!
本文详细介绍了基于LangChain和RAG技术构建智能客服问答系统的完整实现。系统通过将项目文档存储为知识库利用FAISS进行向量检索结合Qwen2.5模型生成准确回答。该系统具有准确性高、上下文感知、可扩展性强等优势可大幅提升客服效率。文章提供了完整的代码实现、环境配置和部署指南为构建智能化客服系统提供了实用参考。引言随着人工智能技术的快速发展构建智能化的客服系统已成为企业提升服务质量的重要手段。传统的客服系统往往依赖人工处理效率低下且成本高昂。而基于检索增强生成Retrieval-Augmented Generation, RAG技术的客服系统能够有效结合大量知识库信息提供准确、及时的自动回复。本文将详细介绍如何使用LangChain框架和RAG技术构建一个智能客服问答系统该系统能够基于项目文档自动回答用户问题大大提升了客服效率和用户体验。项目架构概述本项目采用以下技术架构LangChain框架: 用于构建语言模型应用RAG技术: 检索增强生成结合知识库信息生成回答Ollama: 本地大语言模型服务FAISS: 高效的向量相似性搜索库Qwen2.5: 主要语言模型项目包含以下核心组件知识库构建模块向量数据库管理问题检索与匹配智能回答生成项目依赖首先让我们看看项目的完整依赖配置langchain1.2.0langchain-classic1.0.1langchain-community0.4.1langchain-core1.2.6langchain-ollama1.0.1langchain-text-splitters1.1.0requestsPyYAMLfaiss-cpu这些依赖库是构建RAG客服系统的核心组件其中LangChain用于构建应用框架Ollama用于本地模型部署FAISS用于向量存储和检索。完整代码实现下面是完整的RAG客服问答系统实现代码#!/usr/bin/env python3# -*- coding: utf-8 -*-RAG客服系统演示脚本展示基于检索增强生成的客服问答功能from langchain_core.prompts import ChatPromptTemplatefrom langchain_ollama import ChatOllamafrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.vectorstores import FAISSfrom langchain_ollama import OllamaEmbeddingsfrom langchain_core.documents import Documentfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.runnables import RunnablePassthroughimport timedef format_docs(docs): 格式化文档 return \n\n.join([doc.page_content for doc in docs])def demo_rag_customer_service(): 演示RAG客服系统 print(演示: 基于RAG的客服问答系统) print( * 60) # 项目相关的知识库文档 knowledge_base [ Document( page_content 项目名称: 基于LangChain与Ollama的Qwen2.5智能助手 项目功能: 构建一个支持网络搜索、数学计算、节假日查询的本地AI Agent 核心技术: LangChain, Ollama, Qwen2.5模型 项目目标: 提供一个功能丰富、可扩展的本地AI助手解决方案 , metadata{source: project_overview} ), Document( page_content agent.py - Agent核心创建模块 功能: 创建工具调用Agent包含Qwen2.5模型初始化、提示模板定义、Agent执行器创建 主要函数: create_qwen_agent() 使用的模型: qwen2.5:7b API端点: http://localhost:11434 作用: 定义AI Agent的核心逻辑和行为 , metadata{source: agent_module} ), Document( page_content tools.py - 工具函数模块 功能: 定义AI Agent可使用的各种工具 包含工具: - 网络搜索工具 (DuckDuckGoSearchRun) - 数学计算器 (calculator) - 节假日查询工具 (get_today_holiday, get_date_holiday, get_month_holidays, get_year_holidays) - Python代码解释器 (python_code_interpreter) - 天气查询工具 (get_weather) - 货币兑换工具 (currency_converter) - 股票价格查询工具 (get_stock_price) - YAML处理工具 (yaml_parser, yaml_generator, read_yaml_file, write_yaml_file) , metadata{source: tools_module} ), Document( page_content run.py - 主运行模块 功能: 提供用户交互界面启动Agent并处理用户输入 交互方式: 命令行输入输出 退出命令: exit, quit, bye 作用: 项目的入口点负责用户交互循环 , metadata{source: run_module} ), Document( page_content LangChain框架介绍: LangChain是一个强大的框架用于构建语言模型驱动的应用程序。 核心组件: - Prompts: 定义如何向语言模型提出问题 - LLMs: 语言模型接口 - Chains: 将多个组件链接在一起 - Agents: 使用工具的语言模型 - Memory: 在请求之间保持状态 - Tools: 允许Agent访问外部系统的功能 , metadata{source: langchain_intro} ), Document( page_content RAG系统 (Retrieval-Augmented Generation): RAG代表检索增强生成是一种结合检索和生成的技术。 工作原理: 1. 将文档转换为向量并存储在向量数据库中 2. 将用户问题转换为向量 3. 在向量数据库中搜索最相似的文档 4. 将检索到的文档与问题一起发送给语言模型 5. 语言模型基于上下文生成答案 优势: 提高回答的准确性和相关性 , metadata{source: rag_system} ), Document( page_content 安装和部署: 1. 安装依赖: pip install -r requirements.txt 2. 启动Ollama服务: ollama serve 3. 下载模型: ollama pull qwen2.5:7b 4. 运行程序: python run.py 确保Ollama服务在 http://localhost:11434 运行 , metadata{source: installation} ), Document( page_content 常见问题解答: Q: 如何启动项目? A: 首先运行 ollama serve然后下载模型 ollama pull qwen2.5:7b最后运行 python run.py Q: 如何使用工具? A: Agent会自动根据问题内容选择合适的工具用户无需手动调用 Q: 支持哪些功能? A: 支持网络搜索、数学计算、节假日查询、天气查询、货币兑换、股票价格查询、YAML处理等 Q: 如何扩展功能? A: 可以通过在tools.py中添加新的工具函数来扩展功能 , metadata{source: faq} ), Document( page_content YAML处理功能: 项目支持YAML格式处理包括: - yaml_parser: 解析YAML内容 - yaml_generator: 将字典转换为YAML格式 - read_yaml_file: 读取YAML文件 - write_yaml_file: 写入YAML文件 依赖: PyYAML库 , metadata{source: yaml_features} ) ] print(步骤 1: 创建知识库...) print(f - 知识库包含 {len(knowledge_base)} 个文档片段) # 分割文档 print(步骤 2: 分割文档...) text_splitter RecursiveCharacterTextSplitter(chunk_size300, chunk_overlap50) split_docs text_splitter.split_documents(knowledge_base) print(f - 分割后得到 {len(split_docs)} 个文档块) # 创建嵌入和向量存储 print(步骤 3: 创建向量数据库...) try: embeddings OllamaEmbeddings(modelnomic-embed-text, base_urlhttp://localhost:11434) vectorstore FAISS.from_documents(split_docs, embeddings) retriever vectorstore.as_retriever(search_kwargs{k: 2}) print( - 向量数据库创建成功) except Exception as e: print(f - 创建向量数据库时出错: {e}) return # 初始化语言模型 print(步骤 4: 初始化语言模型...) try: llm ChatOllama(modelqwen2.5:7b, base_urlhttp://localhost:11434, temperature0.2) print( - 语言模型初始化成功) except Exception as e: print(f - 初始化语言模型时出错: {e}) return # 客服问答提示模板 customer_service_prompt ChatPromptTemplate.from_messages([ (system, 你是一个 helpful 的客服助手专门回答关于LangChain与Ollama Qwen2.5智能助手项目的问题。 使用以下上下文信息来回答用户的问题。如果上下文信息不足以回答问题请说明你无法根据现有信息回答。 保持回答专业、准确且有帮助。 上下文信息: {context}), (human, 问题: {question}\n\n请提供详细且有用的回答。) ]) # 创建RAG链 rag_chain ( {context: retriever | format_docs, question: RunnablePassthrough()} | customer_service_prompt | llm | StrOutputParser() ) print(步骤 5: RAG链创建成功) print() # 演示常见问题的回答 print(步骤 6: 演示常见问题的回答) print(- * 40) demo_questions [ 这个项目是做什么的?, 如何安装这个项目?, 有哪些工具可以使用?, agent.py文件的作用是什么? ] for i, question in enumerate(demo_questions, 1): print(f问题 {i}: {question}) # 检索相关文档 relevant_docs retriever.invoke(question) print(f - 检索到 {len(relevant_docs)} 个相关文档片段) # 生成回答 try: print( - 生成回答中...) response rag_chain.invoke(question) print(f - 客服回答: {response[:300]}...) # 显示前300个字符 except Exception as e: print(f - 生成回答时出错: {e}) print() time.sleep(1) # 短暂延迟让演示更清晰 print( * 60) print(RAG客服系统工作原理:) print(1. 将项目文档存储在向量数据库中 (知识库)) print(2. 当用户提问时系统检索最相关的文档片段) print(3. 将检索到的文档与用户问题一起发送给AI模型) print(4. AI模型基于上下文生成准确的回答) print(5. 这样可以确保回答基于项目的真实信息) print() print(系统优势:) print(- 回答准确: 基于真实文档内容) print(- 上下文感知: 结合检索信息生成回答) print(- 可扩展: 可随时添加新的知识库文档) print(- 专业性强: 针对特定领域优化)def main(): 主函数 print(RAG客服系统演示) print( * 60) # 检查Ollama服务 try: import requests response requests.get(http://localhost:11434/api/tags, timeout5) if response.status_code ! 200: print(错误: 无法连接到Ollama服务) return print(✓ Ollama服务连接正常) except requests.exceptions.ConnectionError: print(错误: 无法连接到Ollama服务) return except Exception as e: print(f检查Ollama服务时出错: {e}) return # 检查所需模型 try: import json response requests.get(http://localhost:11434/api/tags, timeout5) models json.loads(response.text)[models] model_names [model[name] for model in models] if nomic-embed-text:latest not in model_names: print(⚠ 警告: 未找到 nomic-embed-text 模型) else: print(✓ 找到 nomic-embed-text 模型) if qwen2.5:7b not in model_names: print(⚠ 警告: 未找到 qwen2.5:7b 模型) else: print(✓ 找到 qwen2.5:7b 模型) except Exception as e: print(f检查模型时出错: {e}) print() # 运行演示 demo_rag_customer_service()if __name__ __main__: main()系统核心功能详解1. 知识库构建系统使用Document对象存储项目相关的知识信息包括项目概述、各模块功能、安装部署指南等内容。这些文档会被分割并转换为向量存储在FAISS数据库中。2. 向量检索机制使用OllamaEmbeddings创建文档嵌入通过FAISS实现高效的相似性搜索。当用户提问时系统会将问题转换为向量并在知识库中检索最相关的文档片段。3. RAG链设计通过LangChain的链式调用将检索到的文档与用户问题结合传递给语言模型生成最终回答。这种方式既保证了回答的准确性又提高了生成质量。运行环境配置1. 环境准备pip install -r requirements.txt2. 启动Ollama服务ollama serve3. 下载所需模型ollama pull qwen2.5:7bollama pull nomic-embed-text4. 运行系统python demo_rag_customer_service.py系统优势准确性高: 回答基于真实文档内容避免幻觉上下文感知: 结合检索信息生成回答可扩展性强: 可随时添加新的知识库文档领域专业: 针对特定领域优化成本效益: 本地部署无需云服务费用扩展建议增加记忆功能: 实现多轮对话管理优化检索算法: 使用更高级的相似性搜索方法引入评估指标: 量化系统性能添加图形界面: 提升用户体验集成其他数据源: 扩展知识库覆盖范围总结本文详细介绍了基于LangChain和RAG技术构建智能客服问答系统的完整实现过程。通过将项目文档作为知识库系统能够准确回答用户问题大大提升了客服效率。该系统具有高度的可扩展性和专业性可作为构建更复杂客服系统的良好基础。随着AI技术的不断发展RAG技术将在更多领域发挥重要作用。掌握这一技术对于开发智能化应用具有重要意义。希望本文能为您提供有价值的参考和启发。AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

你方唱罢我登场,迅雷超级会员为马年春节再添一把火

你方唱罢我登场,迅雷超级会员为马年春节再添一把火

新春将至,假期宅家追剧追番,是不少人的新春休闲选择之一。为回馈广大用户支持,迅雷会员推出“马上送会员”新春福利活动,以超值折扣和丰富权益,陪用户欢度新春。本次活动为用户量身打造超级会员年卡、双年卡两类套餐&a…

2026/7/4 17:26:38 阅读更多 →
AI换脸换场景技术落地电商外模拍摄,零门槛实现拍摄成本优化

AI换脸换场景技术落地电商外模拍摄,零门槛实现拍摄成本优化

做服饰电商的宝子们,谁没被外模、场景拍摄难住?不同市场要换对应面孔,不同品类要搭适配场景,拍摄成本高、周期长,中小商家真扛不住!AI模特换脸换背景功能直接破局!只需上传1张亚洲模特原图&…

2026/7/4 16:22:53 阅读更多 →
CANN绿色计算:AIGC推理能效优化实战指南

CANN绿色计算:AIGC推理能效优化实战指南

cann组织链接:https://atomgit.com/cann ops-nn仓库链接:https://atomgit.com/cann/ops-nn 当单次Stable Diffusion生成消耗0.0012度电,当百万级AIGC服务日均碳排放超百吨——能效已成为AIGC规模化落地的“隐形天花板”。本文将首次揭秘CANN如…

2026/7/3 16:25:16 阅读更多 →

最新新闻

DC-DC降压转换器设计与PID控制优化实践

DC-DC降压转换器设计与PID控制优化实践

1. 项目背景与核心器件选型解析在电力电子领域,DC-DC降压转换器(Buck Converter)是最基础也最关键的拓扑结构之一。这次我们要实现的方案采用了171010550电源管理IC与PIC18F97J60微控制器的组合,这个搭配在工业控制领域颇具代表性…

2026/7/5 23:25:05 阅读更多 →
AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 面对繁重的在线学习任务,你是否还在为U校园平台的网课作业而烦恼…

2026/7/5 23:23:04 阅读更多 →
XXE漏洞深度解析:从XML外部实体注入原理到实战防御

XXE漏洞深度解析:从XML外部实体注入原理到实战防御

1. 项目概述:为什么XXE漏洞至今仍是“隐形杀手”?在Web安全领域,SQL注入、XSS这些名词大家耳熟能详,但提到XXE(XML External Entity Injection,XML外部实体注入),很多开发者甚至安全…

2026/7/5 23:19:03 阅读更多 →
开源小模型如何重构AI商业逻辑:7B参数的确定性价值

开源小模型如何重构AI商业逻辑:7B参数的确定性价值

1. 一家没做消费级产品的AI公司,凭什么拿到6.4亿美元? 你可能刚刷到这条新闻:“估值64亿美元!Mistral AI官宣6.4亿美元B轮融资”——第一反应是:又一家大模型创业公司爆了?但稍一查就会发现,它既…

2026/7/5 23:17:02 阅读更多 →
CATANet:基于内容感知Token聚合的图像超分辨率技术解析

CATANet:基于内容感知Token聚合的图像超分辨率技术解析

1. 从传统超分辨率到CATANet的技术演进图像超分辨率(Super-Resolution, SR)技术在过去十年经历了三次重大技术迭代。最早期的SRCNN开创了深度学习在超分辨率领域的应用,采用简单的三层卷积网络结构。2017年EDSR和RCAN引入残差学习和通道注意力…

2026/7/5 23:17:02 阅读更多 →
Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)命令语法常用选项场景化实例1. 拒绝指定打印机2. 带原因说明拒绝3. 批量拒绝多个打印机4. 打印机故障自动处理5. 恢复打印机接受任务6. 通过 CUPS Web 接口管理7. 配合系统监控脚本查询打印队列状态最佳实践快速参考&…

2026/7/5 23:15:02 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻