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

基于LangChat搭建RAG与Function Call结合的聊天机器人方案

#简述流程思路

  • 用户提问 → 意图识别(是否需要动态数据) →

    • 需要动态数据: 调用Function获取数据 → LLM生成回答

    • 不需要动态数据: 向量检索 → 重排 → LLM生成回答

#使用到的技术组件

开发语言: python

向量数据库: milvus (docker部署单机版) 

        存储所有知识库文档的 BEG-Base-ZH-V1 向量

        支持快速近似最近邻搜索(ANN)

向量嵌入模型: beg-base-zh-v1   cross_encoder 

        beg轻量对中文较为友好 适用于大规模检索场景 (点积或余弦相似度来衡量匹配程度)

        cor精度高 适合小范围本文进一步做相似度对比

其他:

        langChat框架作为核心控制器

        业务端提供HTTP REST API作为Function Call数据源

        fastapi 部署为web项目

        LLM 通过ollama调用Qwen1.5-0.5B  在线deepseekv3 

#流程图 

#关键点

意图识别的方式 

1 可以利用小参数模型 通过 问题原文本+定义的funcation参数 发送一次LLM ,通过相应内是否包含 tool_call信息判断; --我的实现方式 使用的是 Qwen1.5-0.5B 

2  关键词匹配 规则或正则表达式判断关键词  (如“天气”、“订单号”等)

3 分词 , nlp语义相似度 , 如果与关键词近似值>0.95以上 可以认为是有意图

RAG提升准确度

stup1: 用户问题 ==> Embedding ==> milvus索引 ==> 相似度排序取前10条

stup2: 用户问题 依次和 向量结果集的原文本 精细对比 再取前3条

ps: milvus存储 文档向量时, 切片的原文也要一并存储关联!!! 

总结:

  1. 搭建 Milvus 并导入知识库;
  2. 配置好 Embedding 和 Cross-Encoder;
  3. 实现意图识别模块;
  4. 用 LangChain 构建完整的问答链;
  5. 多轮对话状态管理;

 

http://www.lqws.cn/news/518491.html

相关文章:

  • Catchadmin 使用相关问题
  • Android11 深休后系统定时唤醒导致网络请求服务器过载
  • 数据结构篇-二分图
  • Class00.2线性代数
  • 【评估指标】IoU 交并比
  • Day.42
  • 高等数学》(同济大学·第7版)第七章 微分方程 第五节可降阶的高阶微分方程
  • 【网站内容安全检测】之1:获取网站所有链接sitemap数据
  • Web3D技术协议的AI革命:生成式模型如何改写交互标准?
  • 操作系统之内存管理(王道)
  • LeeCode349. 两个数的交集
  • 基于大模型的甲状腺结节预测及综合诊疗技术方案大纲
  • 防火墙快速管理软件,66K超小巧
  • Java 日志框架选型:SLF4J + Logback vs. Log4j2 的深度解析
  • iClone 中创建的面部动画导入 Daz 3D
  • Spring AOP 中有多个切面时执行顺序是怎样的?
  • Android14音频子系统-Audio HAL分析
  • 南北差异之——跨端理解能力
  • sql格式化自动识别SQL语法结构
  • gsql: command not found
  • OpenLayers 上传Shapefile文件
  • 基于 Python 的批量文件重命名软件设计与实现
  • 智哪儿专访 | Matter中国提速:开放标准如何破局智能家居“生态孤岛”?
  • 舵机在智能家居里的应用
  • 第k个数字
  • 归并排序算法
  • 企业内部安全组网技术解析:安全通道选型、零信任架构与数据合规加密防护
  • 计算机网络-----详解HTTP协议
  • 基于springboot+vue的智慧农业专家远程指导系统
  • 苹果签名应用掉签频繁原因排查,以及如何避免