M004_基于Langchain+RAG的银行智能客服系统设计与开发

基于Langchain+RAG的银行智能客服系统设计与开发

欢迎关注B站:麦麦大数据

https://space.bilibili.com/1583208775

一、项目背景

随着金融科技的快速发展,银行客户服务面临着前所未有的挑战。传统的人工客服存在响应慢、成本高、服务时间受限等问题。为了提升客户服务体验,本文将介绍一款基于**LangChain + RAG(检索增强生成)**技术构建的银行智能客服系统。

二、技术架构

2.1 整体架构

本系统采用前后端分离架构设计,前端使用Vue3 + TypeScript,后端采用Flask框架,核心AI能力基于LangChain框架实现。

复制代码
┌─────────────────────────────────────────────────────────────────────────┐
│                         智能客服系统架构                                   │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐               │
│  │   前端 UI   │     │  Flask API  │     │   LLM 服务  │               │
│  │  (Vue3)    │◄───►│  (后端)     │◄───►│ (硅基流动)  │               │
│  └─────────────┘     └─────────────┘     └─────────────┘               │
│         │                   │                   │                       │
│         │                   │                   │                       │
│         ▼                   ▼                   ▼                       │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                        数据存储层                                │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐            │   │
│  │  │  MySQL  │  │  Redis  │  │  FAISS  │  │ 文件系统 │            │   │
│  │  │ (业务)  │  │ (会话)  │  │(向量库) │  │(文档)   │            │   │
│  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘            │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

2.2 技术栈

层级 技术选型
前端 Vue3 + TypeScript + Pinia + Element Plus + ECharts
后端 Python Flask + SQLAlchemy
AI框架 LangChain
向量数据库 FAISS
大模型 GLM-4.6 (通过硅基流动API调用)
文本嵌入 BAAI/bge-m3

三、核心功能模块

3.1 用户认证模块

支持用户注册、登录,采用JWT令牌进行身份认证。

3.2 智能对话模块

基于RAG的智能问答,支持流式输出、多轮对话。

系统会展示参考文档来源,增强回答的可信度。

3.3 知识库管理模块

支持PDF、Word等文档上传,自动向量化处理。


3.4 管理后台

提供用户管理、数据统计等功能。

四、RAG技术实现

4.1 RAG工作流程

RAG(检索增强生成)是一种将检索系统与生成模型结合的技术,其核心流程包括:

  1. 文档加载与分块 - 将PDF、Word等文档加载后,使用RecursiveCharacterTextSplitter进行文本分块
  2. 向量化存储 - 使用Embedding模型将文本块转换为向量,存储到FAISS向量数据库
  3. 相似度检索 - 用户提问时,将问题转换为向量,在向量库中检索相似文档
  4. 增强生成 - 将检索到的相关文档作为上下文,发送给大模型生成答案

4.2 核心代码实现

文档向量化服务
python 复制代码
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings

class EmbeddingService:
    def __init__(self):
        self.text_splitter = RecursiveCharacterTextSplitter(
            chunk_size=1000,
            chunk_overlap=200,
        )
    
    def embed_document(self, document):
        # 文本分块
        texts = self.text_splitter.create_documents([document.content])
        
        # 向量化并存储到FAISS
        vector_store = FAISS.from_texts(
            texts=[t.page_content for t in texts],
            embedding=embeddings,
            metadatas=metadatas
        )
        vector_store.save_local("vector_store")
知识检索服务
python 复制代码
class KnowledgeService:
    def search(self, query: str, k: int = 5):
        vector_store = FAISS.load_local("vector_store", embeddings)
        docs = vector_store.similarity_search_with_score(query, k=k)
        
        return [
            {
                "content": doc.page_content,
                "metadata": doc.metadata,
                "score": score,
            }
            for doc, score in docs
        ]
增强生成对话
python 复制代码
class ChatService:
    def chat(self, message: str, user_id: int):
        # 1. 检索知识库
        docs = knowledge_service.search(message, k=5)
        
        # 2. 构建提示词
        knowledge_context = "\n\nRelevant knowledge:\n" + "\n".join(
            [doc["content"][:500] for doc in docs]
        )
        
        prompt = f"""你是一个银行客服助手。
        
相关知识:
{knowledge_context}

用户问题:{message}

请根据相关知识回答用户问题。"""
        
        # 3. 调用大模型生成答案
        response = llm.invoke(prompt)
        
        return {
            "answer": response.content,
            "sources": [doc["metadata"] for doc in docs]
        }

4.3 流式输出实现

使用LangChain的astream实现打字机效果的流式输出:

python 复制代码
async def stream_chat(self, message: str):
    # ... 省略检索代码 ...
    
    async for chunk in llm.astream(prompt):
        content = chunk.content if hasattr(chunk, "content") else str(chunk)
        yield content  # 流式yield每个chunk
    
    # 最后返回参考来源
    yield {"sources": sources}

前端通过EventSource接收流式数据:

typescript 复制代码
const response = await fetch('/api/chat/stream', {
  method: 'POST',
  body: JSON.stringify({ message: userInput.value })
})

const reader = response.body?.getReader()
const decoder = new TextDecoder()

while (true) {
  const { done, value } = await reader.read()
  if (done) break
  const text = decoder.decode(value)
  // 逐字追加到回答区域
}

五、系统部署

5.1 环境要求

  • Python 3.10+
  • MySQL 8.x
  • Node.js 18+

5.2 安装依赖

bash 复制代码
# 后端
cd backend
pip install -r requirements.txt

# 前端
cd frontend
npm install

5.3 配置说明

.env文件中配置API密钥:

env 复制代码
SILICONFLOW_API_KEY=your_api_key
SILICONFLOW_API_BASE=https://api.siliconflow.cn/v1
LLM_MODEL=THUDM/glm-4-9b-chat
EMBEDDING_MODEL=BAAI/bge-m3

5.4 启动服务

bash 复制代码
# 启动后端
python run.py

# 启动前端
cd frontend
npm run dev

六、效果展示

6.1 知识库管理

6.2 用户管理

6.3 对话历史

七、总结

本文介绍了基于LangChain + RAG技术构建的银行智能客服系统,该系统具有以下特点:

  1. RAG知识增强 - 通过FAISS向量数据库实现精准的知识检索,大幅提升回答准确率
  2. 流式输出 - 支持打字机效果的实时回答,提升用户体验
  3. 可扩展性强 - 基于LangChain框架,便于集成更多AI能力
  4. 完整的业务功能 - 支持用户认证、知识库管理、对话历史等完整功能

源码获取:联系麦麦大数据获取

欢迎关注B站:麦麦大数据

https://space.bilibili.com/1583208775

相关推荐
敲代码兔斯基3 小时前
从零搭建你的第一个 AI Agent:用 LangChain + OpenAI 实现智能助手
langchain
We་ct4 小时前
LeetCode 173. 二叉搜索树迭代器:BSTIterator类 实现与解析
前端·算法·leetcode·typescript
Emotional。6 小时前
AI Agent 开发实战:用 LangChain 构建智能邮件助手
linux·服务器·网络·人工智能·python·langchain
lhxcc_fly7 小时前
1.LangChain--安装篇
langchain·安装包
SmartBrain7 小时前
技术洞察:SpringAI与LangGraph选型对比
人工智能·spring boot·架构·langchain·aigc·fastapi
夜瞬8 小时前
【Flask 框架学习】01:编写第一个 Flask 应用
后端·python·学习·flask
南_山无梅落8 小时前
从LangChain到LangGraph:构建智能Agent的实战指南(四)——核心知识体系全景解析
langchain
lhxcc_fly9 小时前
1.LangChain--初识篇
ai·langchain·vibe coding
小小工匠9 小时前
大模型开发 - SpringAI 之高级 RAG 组件
rag·spring ai