基于大语言模型的多意图增强搜索

随着人工智能技术的蓬勃发展,大语言模型(LLM)如Claude等在多个领域展现出了卓越的能力。如何利用这些模型的语义分析能力,优化传统业务系统中的搜索性能是个很好的研究方向。

在传统业务系统中,数据匹配和检索常常面临诸多挑战,例如用户使用门槛高、业务变化适应性差以及搜索匹配效果不佳。生成式AI的出现为这些问题提供了新的解决方案。

传统搜索系统的局限

  • 用户的使用门槛较高,必须了解系统提供的查询的每个条件的含义,还需要了解不同条件的组合方式。结构化的查询,无法适应自然语言的模式,也很难贴近人的自然想法,例如查询上海徐汇区有哪些三甲医院,传统查询模式,你必须要分解成多个不同的条件:省市、区域、机构类型、机构级别等。显然用户必须要熟悉和符合业务系统要求,非常不方便。
  • 很难适应业务变化,当业务对象发生变化的时候,需要增加和修改条件,就必然导致整个 UI 的变化和修改,开发成本上升。
  • 传统搜索算法,无法通过语义层面进行分析和理解,导致匹配和搜索效果不佳,例如系统记录里有一家北京 306 医院,如果用户输入三零六可能就无法匹配到这家医院,从而无法查询到结果。再例如:系统记录里有一家虹桥医院,如果用户输入拼音 hongqiao
    hospital ,传统系统也无法应对这种查询。甚至有时候多几个空格也会导致搜索结果出错。

大语言模型的优化方案

意图识别与智能匹配

利用大语言模型如Claude,我们可以对用户输入进行意图识别,并智能匹配相关数据。这一过程主要分为两个部分:

  1. 意图识别:通过语义分析能力,识别用户输入的意图,并进行格式化输出。
  2. 匹配处理:根据识别的意图,选择适当的检索方式,如传统RAG模式或Text2SQL。

方案架构

基于Amazon的解决方案架构,构建一个智能检索系统。

当然,可以更进一步对不同的文件进行类别划分,利用意图分类器提高应答得准确率。
在这里插入图片描述

实践案例

多意图识别

以下是一个多意图识别的代码示例,展示如何根据用户问题生成JSON格式的结果:

def intent_recognizer(user_question):
    intents = {
        "search_name": "只查询机构名称",
        "search_name_with_attribute": "查询机构名称的同时有相关属性限制",
        "search_with_attribute": "根据属性查询医院列表",
        "other": "未知意图"
    }
    
    # 模拟意图识别逻辑
    if "医院" in user_question:
        intent_type = "search_name"
    elif "状态" in user_question:
        intent_type = "search_name_with_attribute"
    elif "有哪些" in user_question:
        intent_type = "search_with_attribute"
    else:
        intent_type = "other"
    
    return {
        "intent": intent_type,
        "description": intents[intent_type]
    }

# 示例
user_question = "上海第一人民医院"
result = intent_recognizer(user_question)
print(result)

增强召回

接下来是一个增强召回的示例,展示如何从候选机构列表中筛选出与用户问题最相关的机构:

def filter_institutions(candidate_list, user_question):
    # 假设的候选机构列表
    institutions = [
        {"code": "776446", "name": "药店A", "address": "康宁路"},
        {"code": "436446", "name": "药店B", "address": "柳营路"}
    ]
    
    # 根据用户问题筛选相关机构
    relevant_institutions = [
        inst for inst in institutions if user_question in inst["address"]
    ]
    
    return {
        "kept": [inst["code"] for inst in relevant_institutions],
        "removed": [inst["code"] for inst in institutions if inst not in relevant_institutions]
    }

# 示例
user_question = "康宁路有什么药店?"
result = filter_institutions(candidate_list, user_question)
print(result)

结论

通过结合大语言模型的语义分析能力和智能匹配技术,能够显著提升传统业务系统中的搜索性能,降低用户使用门槛,同时提高系统的适应性和匹配精度。随着技术的不断进步,生成式AI将在更多领域发挥重要作用。

参考文献

大语言模型的多意图增强搜索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/750102.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道,管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大,且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题,…

Vue3学习笔记<->创建第一个vue项目

新建一个项目目录 找一个盘新建一个目录,我这里在D盘创建一个vuedemo目录作为项目存放的目录。使用idea打开目录。   单击ieda底部的按钮“Terminal”,打开命令行窗口,如果命令行窗口当前目录不是“vuedemo”,就切换到“vuedem…

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品 纳米硅(SiNP)指尺寸在纳米尺度范围内的硅颗粒。纳米硅具有光吸收谱宽、表面活性高、比表面积大、机械强度高、电学性能好等优势,在石油化工、建筑工程、电子电…

Data Grouping

分组功能将具有相同列值的行组合到相同的数据组中。Grid View 和 Banded Grid Views的支持。 GridControl-Grid View 应用分组 数据分组最初在数据网格中启用(默认设置)。要按列对数据进行分组,请将列标题拖动到分组面板中。另一个选项是右…

求出某空间曲面下的体积

求出某空间曲面下的体积 flyfish 用小长方体的体积和来逼近该体积 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation# 定义函数 f(x, y) def f(x, y):return np.sin(np.pi * x) * np.sin(np.pi * y)# 创建网格 x np.linspac…

avi格式视频提示无法播放错误,怎么解决?

AVI视频属于一种无损质量的视频格式,一般来说是兼容Windows系统播放的。播不了可能是由以下原因导致的: 1.文件损坏:可能是原文件在转码压缩的过程中操作不当,导致数据丢失、文件损坏。 2.播放器格式不支持:可能系统的…

使用MappingJackson2HttpMessageConverter把java对象转换成json字符串

使用MappingJackson2HttpMessageConverter把java对象转换成json字符串 如下图: 运行结果如下图: 代码如下: /*** author 望轩* createDate 2024/6/27 15:27* 把java对象转换成json字符串*/ public class EntityToJson {public static voi…

web前端-CSS

CSS CSS概述: CSS是Cascading Style Sheets(级联样式表),是一种样式表语言,用于控制网页布局,外观(比如背景图片,图片高度,文本颜色,文本字体,高级定位等等) 可将页面的内容与样式分离开,样式放于单独的.css文件或者HTML某处 CSS是网页样式,HTML是网页…

怎么在必应bing上投放搜索广告?

搜索引擎已成为企业获取潜在客户、提升品牌曝光度的关键平台,微软必应(Bing)以其庞大的用户基数、精准的定位能力以及与微软生态系统的深度整合,为企业提供了极具价值的广告投放渠道。云衔科技助力企业实现必应bing广告的精准投放…

Hilbert-Huang变换

Hilbert-Huang变换可以高内聚信号特征自适应的将信号分解成若干固有模态函数。更适用于非线性非平稳信号的处理。 缺点: 1、存在端点延拓; 2、分解判据确定; 3、Hilbert解调固有局限性。 一、介绍 Hilbert-Huang变换是经验模态分解&…

Linux:进程和计划任务管理

目录 一、程序和进程 1.1、程序 1.2、进程 1.3、线程 1.4、协程 二、查看进程相关命令 2.1、ps命令(查看静态的进程统计信息) 第一行为列表标题,其中各字段的含义描述如下 2.2、top命令(查看进程动态信息) 2…

【强化学习的数学原理】课程笔记--1(基本概念,贝尔曼公式)

目录 基本概念State, Action, State transitionPolicy, Reward, Trajectory, Discount ReturnEpisodeMarkov decision process 贝尔曼公式推导确定形式的贝尔曼公式推导一般形式的贝尔曼公式State ValueAction Value 一些例子贝尔曼公式的 Matric-vector form贝尔曼公式的解析解…

VS studio2019配置远程连接Ubuntu

VS studio2019配置远程连接Ubuntu 1、网络配置 (1)获取主机IP (2)获取Ubuntu的IP (3)在 windows 的控制台中 ping 虚拟机的 ipv4 地址,在 Ubuntu 中 ping 主机的 ipv4 地址。 ubuntu: ping…

多分类情绪识别模型训练及基于ChatGLM4-9B的评论机器人拓展

你的下一个微博罗伯特何必是罗伯特 这是一篇我在使用开源数据集(Twitter Emotion Dataset (kaggle.com))进行情绪识别的分类模型训练及将模型文件介入对话模型进行应用的过程记录。当通过训练得到了可以输入新样本预测的模型文件后,想到了或许可以使用模型文件对新样…

recogito-js:用于文本注释/图像注释的前端插件

创建批注: 继续批注: 右侧批注列表: 1、功能与应用: 文本注释:recogito-js可以将注释功能添加到网页上,或者作为构建完全自定义注释应用程序的工具箱。图像注释:除了文本注释外,它还…

测试用例设计方法-因果图法

大家好,在软件开发过程中,测试是确保产品质量和稳定性的关键步骤。而设计有效的测试用例则是保证测试过程高效和全面的重要因素之一。在各种测试用例设计方法中,因果图法作为一种结构化和系统化的方法,日益受到测试人员的青睐。 因…

python练习题2

python期考复习题 目录 1. 判断n**2的值每一位互不相同​编辑 2. 密码 3. 图书版号 4. 情感分类矩阵 5. 计算数对个数 1. 判断n**2的值每一位互不相同 def isdiff(n):sstr(n)for i in range(len(s)):for j in range(len(s)):if i!j:if s[i]s[j]:return Falsereturn Truel…

ET9中ETTask传递新的Context原理

ET9中ETTask传递新的Context原理 前言 每一个异步函数都会创建两个对象, 第1个是当前异步函数返回值(ETTASK)对应的ETAsyncTaskMethodBuilder,通过这个类的静态方法Create创建返回,这个builder类中会有一个Task对象&…

FME实现批量合并shapefile文件数据,并提取原文件名,输出到属性表字段中的解决方法

目录 一、实现效果 二、实现过程 1.读取数据 2.暴露文件名属性 3.设置文件名字段 4.输出成果 5.模板的使用 三、总结 今天来介绍如何使用FME软件来实现对多个shapefile数据进行批量合并,同时提取原文件名并存储到合并后shapefile数据属性表字段中的方法&…

中小企业的数字化转型业务场景落地案例

引言:随着商业活动的复杂化和全球化程度的提高,合同作为商业交易的重要组成部分,其数量、条款和复杂性都在不断增加。企业面临着越来越多的合同管理挑战,包括合同数量增多、条款繁琐、文件分散存储等问题。而中小企业由于管理不到…